]> git.sur5r.net Git - bacula/bacula/commitdiff
Complete port to Windows
authorRobert Nelson <robertn@the-nelsons.org>
Thu, 27 Jul 2006 01:59:06 +0000 (01:59 +0000)
committerRobert Nelson <robertn@the-nelsons.org>
Thu, 27 Jul 2006 01:59:06 +0000 (01:59 +0000)
The one remaining piece is the final NSIS script update and automatic creation of the installation package.

git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@3182 91ce42f0-d328-0410-95d8-f526ca767f89

68 files changed:
bacula/autoconf/configure.in
bacula/configure
bacula/src/baconfig.h
bacula/src/bacula.h
bacula/src/cats/bdb_list.c
bacula/src/cats/make_sqlite3_tables.in
bacula/src/cats/make_sqlite_tables.in
bacula/src/cats/mysql.c
bacula/src/cats/update_mysql_tables.in
bacula/src/cats/update_postgresql_tables.in
bacula/src/console/console.c
bacula/src/dird/dird.c
bacula/src/dird/inc_conf.c
bacula/src/dird/ua_update.c
bacula/src/filed/Makefile.mingw [deleted file]
bacula/src/filed/job.c
bacula/src/filed/status.c
bacula/src/filed/win32/.cvsignore [deleted file]
bacula/src/filed/win32/Makefile.in [deleted file]
bacula/src/filed/win32/Makefile.mingw [deleted file]
bacula/src/filed/win32/bacula.bmp [deleted file]
bacula/src/filed/win32/bacula.ico [deleted file]
bacula/src/filed/win32/bacula.rc [deleted file]
bacula/src/filed/win32/error.ico [deleted file]
bacula/src/filed/win32/idle.ico [deleted file]
bacula/src/filed/win32/mymapi32.def [deleted file]
bacula/src/filed/win32/popup.c [deleted file]
bacula/src/filed/win32/running.ico [deleted file]
bacula/src/filed/win32/saving.ico [deleted file]
bacula/src/filed/win32/warn.ico [deleted file]
bacula/src/filed/win32/winabout.cpp [deleted file]
bacula/src/filed/win32/winabout.h [deleted file]
bacula/src/filed/win32/winbacula.h [deleted file]
bacula/src/filed/win32/winevents.cpp [deleted file]
bacula/src/filed/win32/winevents.h [deleted file]
bacula/src/filed/win32/winmain.cpp [deleted file]
bacula/src/filed/win32/winres.h [deleted file]
bacula/src/filed/win32/winres.rc [deleted file]
bacula/src/filed/win32/winservice.cpp [deleted file]
bacula/src/filed/win32/winservice.h [deleted file]
bacula/src/filed/win32/winstat.cpp [deleted file]
bacula/src/filed/win32/winstat.h [deleted file]
bacula/src/filed/win32/wintray.cpp [deleted file]
bacula/src/filed/win32/wintray.h [deleted file]
bacula/src/findlib/Makefile.in
bacula/src/findlib/Makefile.mingw [deleted file]
bacula/src/findlib/attribs.c
bacula/src/lib/Makefile.in
bacula/src/lib/Makefile.mingw [deleted file]
bacula/src/lib/bpipe.c
bacula/src/lib/bregex.h
bacula/src/lib/bsys.c
bacula/src/lib/message.h
bacula/src/lib/var.c
bacula/src/lib/winapi.c [deleted file]
bacula/src/lib/winapi.h [deleted file]
bacula/src/stored/ansi_label.c
bacula/src/stored/block.c
bacula/src/stored/btape.c
bacula/src/stored/dev.c
bacula/src/stored/protos.h
bacula/src/stored/reserve.c
bacula/src/stored/spool.c
bacula/src/stored/status.c
bacula/src/stored/stored.c
bacula/src/stored/stored.h
bacula/src/tools/Makefile.in
bacula/src/tools/testfind.c

index 43d3fbc07e4eeebdc62605dee763e842c9808c9e..bd853a3fa08ebb5999ffd80b2a8c2487e8d9c962 100644 (file)
@@ -2004,7 +2004,6 @@ AC_OUTPUT([autoconf/Make.common \
           src/stored/bacula-sd.conf \
           src/filed/Makefile \
           src/filed/bacula-fd.conf \
-          src/filed/win32/Makefile \
           src/cats/Makefile \
           src/cats/make_catalog_backup \
           src/cats/delete_catalog_backup \
@@ -2049,13 +2048,6 @@ AC_OUTPUT([autoconf/Make.common \
           src/findlib/Makefile \
           src/pygtk-console/Makefile \
           src/tools/Makefile \
-          src/win32/winbacula.nsi \
-          src/win32/baculafd/bacula-fd.conf \
-          src/win32/Makefile \
-          src/win32/Makefile.vcpp \
-          src/win32/console/bconsole.conf \
-          src/win32/wx-console/wx-console.conf \
-          src/win32/pebuilder/Makefile \
           po/Makefile.in \
           $PFILES ],  
          [(echo "Doing make of dependencies"; ${MAKE:-make} depend;) ]
index b7c8f95bd5f503101162e19e81a86fd8a96ed33f..107e8d1a677e751c3a6e283001b343c100002e64 100755 (executable)
@@ -16631,9 +16631,9 @@ echo "$as_me: error: Unable to find libpq-fe.h in standard locations" >&2;}
       elif test -f $withval/include/postgresql/libpq-fe.h; then
           POSTGRESQL_INCDIR=$withval/include/postgresql
      if test -d $withval/lib64; then
-         POSTGRESQL_LIBDIR=$withval/lib64
+          POSTGRESQL_LIBDIR=$withval/lib64
      else
-         POSTGRESQL_LIBDIR=$withval/lib
+          POSTGRESQL_LIBDIR=$withval/lib
      fi
           POSTGRESQL_BINDIR=$withval/bin
       else
@@ -29971,7 +29971,7 @@ if test "x${subsysdir}" = "x${sbindir}" ; then
    exit 1
 fi
 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ac_config_files="$ac_config_files autoconf/Make.common Makefile manpages/Makefile scripts/startmysql scripts/stopmysql scripts/btraceback scripts/startit scripts/stopit scripts/bconsole scripts/gconsole 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/gnome-console.console_apps scripts/mtx-changer scripts/disk-changer scripts/dvd-handler 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 src/Makefile src/host.h src/console/Makefile src/console/bconsole.conf src/gnome2-console/Makefile src/gnome2-console/gnome-console.conf src/wx-console/Makefile src/wx-console/wx-console.conf src/tray-monitor/Makefile src/tray-monitor/tray-monitor.conf src/dird/Makefile src/dird/bacula-dir.conf src/lib/Makefile src/stored/Makefile src/stored/bacula-sd.conf src/filed/Makefile src/filed/bacula-fd.conf src/filed/win32/Makefile src/cats/Makefile src/cats/make_catalog_backup src/cats/delete_catalog_backup src/cats/create_postgresql_database src/cats/update_postgresql_tables src/cats/make_postgresql_tables src/cats/grant_postgresql_privileges src/cats/drop_postgresql_tables src/cats/drop_postgresql_database src/cats/create_mysql_database src/cats/update_mysql_tables src/cats/make_mysql_tables src/cats/grant_mysql_privileges src/cats/drop_mysql_tables src/cats/drop_mysql_database src/cats/create_sqlite_database src/cats/update_sqlite_tables src/cats/make_sqlite_tables src/cats/grant_sqlite_privileges src/cats/drop_sqlite_tables src/cats/drop_sqlite_database src/cats/create_sqlite3_database src/cats/update_sqlite3_tables src/cats/make_sqlite3_tables src/cats/grant_sqlite3_privileges src/cats/drop_sqlite3_tables src/cats/drop_sqlite3_database src/cats/sqlite src/cats/mysql src/cats/create_bdb_database src/cats/update_bdb_tables src/cats/make_bdb_tables src/cats/grant_bdb_privileges src/cats/drop_bdb_tables src/cats/drop_bdb_database src/cats/create_bacula_database src/cats/update_bacula_tables src/cats/grant_bacula_privileges src/cats/make_bacula_tables src/cats/drop_bacula_tables src/cats/drop_bacula_database src/findlib/Makefile src/pygtk-console/Makefile src/tools/Makefile src/win32/winbacula.nsi src/win32/baculafd/bacula-fd.conf src/win32/Makefile src/win32/Makefile.vcpp src/win32/console/bconsole.conf src/win32/wx-console/wx-console.conf src/win32/pebuilder/Makefile po/Makefile.in $PFILES"
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ac_config_files="$ac_config_files autoconf/Make.common Makefile manpages/Makefile scripts/startmysql scripts/stopmysql scripts/btraceback scripts/startit scripts/stopit scripts/bconsole scripts/gconsole 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/gnome-console.console_apps scripts/mtx-changer scripts/disk-changer scripts/dvd-handler 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 src/Makefile src/host.h src/console/Makefile src/console/bconsole.conf src/gnome2-console/Makefile src/gnome2-console/gnome-console.conf src/wx-console/Makefile src/wx-console/wx-console.conf src/tray-monitor/Makefile src/tray-monitor/tray-monitor.conf src/dird/Makefile src/dird/bacula-dir.conf src/lib/Makefile src/stored/Makefile src/stored/bacula-sd.conf src/filed/Makefile src/filed/bacula-fd.conf src/cats/Makefile src/cats/make_catalog_backup src/cats/delete_catalog_backup src/cats/create_postgresql_database src/cats/update_postgresql_tables src/cats/make_postgresql_tables src/cats/grant_postgresql_privileges src/cats/drop_postgresql_tables src/cats/drop_postgresql_database src/cats/create_mysql_database src/cats/update_mysql_tables src/cats/make_mysql_tables src/cats/grant_mysql_privileges src/cats/drop_mysql_tables src/cats/drop_mysql_database src/cats/create_sqlite_database src/cats/update_sqlite_tables src/cats/make_sqlite_tables src/cats/grant_sqlite_privileges src/cats/drop_sqlite_tables src/cats/drop_sqlite_database src/cats/create_sqlite3_database src/cats/update_sqlite3_tables src/cats/make_sqlite3_tables src/cats/grant_sqlite3_privileges src/cats/drop_sqlite3_tables src/cats/drop_sqlite3_database src/cats/sqlite src/cats/mysql src/cats/create_bdb_database src/cats/update_bdb_tables src/cats/make_bdb_tables src/cats/grant_bdb_privileges src/cats/drop_bdb_tables src/cats/drop_bdb_database src/cats/create_bacula_database src/cats/update_bacula_tables src/cats/grant_bacula_privileges src/cats/make_bacula_tables src/cats/drop_bacula_tables src/cats/drop_bacula_database src/findlib/Makefile src/pygtk-console/Makefile src/tools/Makefile po/Makefile.in $PFILES"
           ac_config_commands="$ac_config_commands default"
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
@@ -30564,7 +30564,6 @@ do
   "src/stored/bacula-sd.conf" ) CONFIG_FILES="$CONFIG_FILES src/stored/bacula-sd.conf" ;;
   "src/filed/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/filed/Makefile" ;;
   "src/filed/bacula-fd.conf" ) CONFIG_FILES="$CONFIG_FILES src/filed/bacula-fd.conf" ;;
-  "src/filed/win32/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/filed/win32/Makefile" ;;
   "src/cats/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/cats/Makefile" ;;
   "src/cats/make_catalog_backup" ) CONFIG_FILES="$CONFIG_FILES src/cats/make_catalog_backup" ;;
   "src/cats/delete_catalog_backup" ) CONFIG_FILES="$CONFIG_FILES src/cats/delete_catalog_backup" ;;
   "src/findlib/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/findlib/Makefile" ;;
   "src/pygtk-console/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/pygtk-console/Makefile" ;;
   "src/tools/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/tools/Makefile" ;;
-  "src/win32/winbacula.nsi" ) CONFIG_FILES="$CONFIG_FILES src/win32/winbacula.nsi" ;;
-  "src/win32/baculafd/bacula-fd.conf" ) CONFIG_FILES="$CONFIG_FILES src/win32/baculafd/bacula-fd.conf" ;;
-  "src/win32/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/win32/Makefile" ;;
-  "src/win32/Makefile.vcpp" ) CONFIG_FILES="$CONFIG_FILES src/win32/Makefile.vcpp" ;;
-  "src/win32/console/bconsole.conf" ) CONFIG_FILES="$CONFIG_FILES src/win32/console/bconsole.conf" ;;
-  "src/win32/wx-console/wx-console.conf" ) CONFIG_FILES="$CONFIG_FILES src/win32/wx-console/wx-console.conf" ;;
-  "src/win32/pebuilder/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/win32/pebuilder/Makefile" ;;
   "po/Makefile.in" ) CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;;
   "$PFILES" ) CONFIG_FILES="$CONFIG_FILES $PFILES" ;;
   "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;;
index c6c6854e771e54cbba4744777482a5e995399e14..a4a839b6bb1c9589d900c93bc0926800702136f5 100644 (file)
@@ -71,14 +71,27 @@ void InitWinAPIWrapper();
 #define  OSDependentInit()    InitWinAPIWrapper()
 
 #undef ENABLE_NLS
+#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
+
 #else
 
 #define DLL_IMP_EXP
 
 #define  OSDependentInit()
+#define  tape_open            open
+#define  tape_ioctl           ioctl
+#define  tape_read            read
+#define  tape_write           write
+#define  tape_close           ::close
 #endif
 
+
 #ifdef ENABLE_NLS
    #include <libintl.h>
    #include <locale.h>
index 69b43828af159dadc700e311511e80970be527ae..60a219fee66d2f82743cb9e6c4e6ccce7cfee85b 100644 (file)
@@ -29,8 +29,6 @@
 #if defined(HAVE_WIN32)
 #if defined(HAVE_MINGW)
 #include "mingwconfig.h"
-#define _STAT_H       /* don't pull in MinGW stat.h */
-#define _STAT_DEFINED /* don't pull in MinGW stat.h */
 #else
 #include "winconfig.h"
 #endif
 #endif
 
 #if defined(HAVE_WIN32)
-#include "lib/winapi.h"
+#include "win32/winapi.h"
 #endif
 
 #ifndef HAVE_ZLIB_H
index 902739c7a30a1294ba1c1fd87a562440cf4401e3..fbadb34ddc91b6808b05a9dc8707f86ee8c365cb 100644 (file)
@@ -52,7 +52,7 @@
 /*
  * Submit general SQL query
  */
-int db_list_sql_query(JCR *jcr, B_DB *mdb, char *query, DB_LIST_HANDLER *sendit,
+int db_list_sql_query(JCR *jcr, B_DB *mdb, const char *query, DB_LIST_HANDLER *sendit,
                       void *ctx, int verbose)
 {
    sendit(ctx, "SQL Queries not implemented with internal database.\n");
@@ -272,7 +272,7 @@ void db_list_files_for_job(JCR *jcr, B_DB *mdb, uint32_t jobid, DB_LIST_HANDLER
 void db_list_client_records(JCR *jcr, B_DB *mdb, DB_LIST_HANDLER *sendit, void *ctx)
 { }
 
-int db_list_sql_query(JCR *jcr, B_DB *mdb, char *query, DB_LIST_HANDLER *sendit,
+int db_list_sql_query(JCR *jcr, B_DB *mdb, const char *query, DB_LIST_HANDLER *sendit,
                       void *ctx, int verbose, e_list_type type)
 {
    return 0;
index 4df3610ed2cc215de7e61f78bcd4c5410027ecc1..fe44892255bbf5d730a5d86b154d3fba9f573752 100644 (file)
@@ -276,7 +276,7 @@ CREATE TABLE NextId (
    PRIMARY KEY (TableName)
    );
 
+
 
 -- Initialize JobId to start at 1
 INSERT INTO NextId (id, TableName) VALUES (1, "Job");
index 4df3610ed2cc215de7e61f78bcd4c5410027ecc1..fe44892255bbf5d730a5d86b154d3fba9f573752 100644 (file)
@@ -276,7 +276,7 @@ CREATE TABLE NextId (
    PRIMARY KEY (TableName)
    );
 
+
 
 -- Initialize JobId to start at 1
 INSERT INTO NextId (id, TableName) VALUES (1, "Job");
index ad0be7a6ca86b3957d15320464636f42ccec9129..3c1a6e2fd626abfbfc6ffae8cb3b54ac2764cd80 100644 (file)
@@ -191,7 +191,7 @@ db_close_database(JCR *jcr, B_DB *mdb)
    db_end_transaction(jcr, mdb);
    P(mutex);
    mdb->ref_count--;
-#ifdef HAVE_TREAD_SAFE_MYSQL
+#if defined(HAVE_THREAD_SAFE_MYSQL)
    my_thread_end();
 #endif
    if (mdb->ref_count == 0) {
index bdb5a213e1a7535b83213920abbafdc19366b446..1361514577b358be3807b4a4a786814f70fa8e31 100755 (executable)
@@ -3,7 +3,7 @@
 # Shell script to update MySQL tables from version 1.38 to 1.39  
 #
 echo " "
-echo "This script will update a Bacula SQLite database from version 9 to 10"
+echo "This script will update a Bacula MySQL database from version 9 to 10"
 echo " which is needed to convert from Bacula version 1.38.x to 1.39.x or higher"
 echo "Depending on the size of your database,"
 echo "this script may take several minutes to run."
index 87ea9128a5ad3abbfe0d02b2f796342757a1761e..a584543ee35e24539de9266e5984960058c38c03 100755 (executable)
@@ -3,7 +3,7 @@
 # Shell script to update PostgreSQL tables from version 1.38 to 1.39
 #
 echo " "
-echo "This script will update a Bacula SQLite database from version 9 to 10"
+echo "This script will update a Bacula PostgreSQL database from version 9 to 10"
 echo " which is needed to convert from Bacula version 1.38.x to 1.39.x or higher"
 echo "Depending on the size of your database,"
 echo "this script may take several minutes to run."
index abdfc8f0f51fc97693a1425600835b39c3dd04c3..8e1d32e0e8782340b12d8933a924432cecef4016 100644 (file)
 /* Exported variables */
 
 extern int rl_catch_signals;
-#ifdef HAVE_MINGW
-/* Remove when we have real lib in src/lib */
-int enable_vss;
-#endif
 
 /* Imported functions */
 int authenticate_director(JCR *jcr, DIRRES *director, CONRES *cons);
index 2d0afc38f73e14e27af7d692559332e54926c122..db10ddb9190566add2e56b842944c5d058a93ce4 100644 (file)
@@ -25,7 +25,7 @@
 #include "dird.h"
 
 /* Forward referenced subroutines */
-static void terminate_dird(int sig);
+void terminate_dird(int sig);
 static int check_resources();
 static void dir_sql_query(JCR *jcr, const char *cmd);
   
@@ -99,6 +99,10 @@ static void usage()
  *         Main Bacula Server program
  *
  */
+#if defined(HAVE_WIN32)
+#define main BaculaMain
+#endif
+
 int main (int argc, char *argv[])
 {
    int ch;
@@ -230,7 +234,9 @@ int main (int argc, char *argv[])
 
    drop(uid, gid);                    /* reduce priveleges if requested */
 
+#if !defined(HAVE_WIN32)
    signal(SIGHUP, reload_config);
+#endif
 
    init_console_msg(working_directory);
 
@@ -273,7 +279,7 @@ static void dir_sql_query(JCR *jcr, const char *cmd)
 }
 
 /* Cleanup and then exit */
-static void terminate_dird(int sig)
+void terminate_dird(int sig)
 {
    static bool already_here = false;
 
@@ -394,7 +400,9 @@ extern "C"
 void reload_config(int sig)
 {
    static bool already_here = false;
+#if !defined(HAVE_WIN32)
    sigset_t set;
+#endif
    JCR *jcr;
    int njobs = 0;                     /* number of running jobs */
    int table, rtable;
@@ -404,9 +412,12 @@ void reload_config(int sig)
       abort();                        /* Oops, recursion -> die */
    }
    already_here = true;
+
+#if !defined(HAVE_WIN32)
    sigemptyset(&set);
    sigaddset(&set, SIGHUP);
    sigprocmask(SIG_BLOCK, &set, NULL);
+#endif
 
    lock_jobs();
    LockRes();
@@ -470,8 +481,10 @@ void reload_config(int sig)
 bail_out:
    UnlockRes();
    unlock_jobs();
+#if !defined(HAVE_WIN32)
    sigprocmask(SIG_UNBLOCK, &set, NULL);
    signal(SIGHUP, reload_config);
+#endif
    already_here = false;
 }
 
index f0b9c144b12791c8fed4f171b3015ca2fe7d97a9..ab0fc6e5645e27b5d3143884b5d9b034e9eb3e47 100644 (file)
@@ -24,7 +24,7 @@
 #include "bacula.h"
 #include "dird.h"
 #ifndef HAVE_REGEX_H
-#include "lib/regex.h"
+#include "lib/bregex.h"
 #else
 #include <regex.h>
 #endif
index f8bf9c3f072b4dbf123a2dc124b30aad1ef25b76..58788a8b9c950f82eb81e347fd41bf97fb986023 100644 (file)
@@ -223,7 +223,7 @@ static void update_volrecycle(UAContext *ua, char *val, MEDIA_DBR *mr)
    POOL_MEM query(PM_MESSAGE);
    if (!is_yesno(val, &recycle)) {
       bsendmsg(ua, _("Invalid value. It must be yes or no.\n"));
-      return;      
+      return;
    }
    Mmsg(query, "UPDATE Media SET Recycle=%d WHERE MediaId=%s",
       recycle, edit_int64(mr->MediaId, ed1));
@@ -243,7 +243,7 @@ static void update_volinchanger(UAContext *ua, char *val, MEDIA_DBR *mr)
    POOL_MEM query(PM_MESSAGE);
    if (!is_yesno(val, &InChanger)) {
       bsendmsg(ua, _("Invalid value. It must be yes or no.\n"));
-      return;      
+      return;
    }
    Mmsg(query, "UPDATE Media SET InChanger=%d WHERE MediaId=%s",
       InChanger, edit_int64(mr->MediaId, ed1));
diff --git a/bacula/src/filed/Makefile.mingw b/bacula/src/filed/Makefile.mingw
deleted file mode 100644 (file)
index 05ea039..0000000
+++ /dev/null
@@ -1,231 +0,0 @@
-#
-# Bacula Makefile for the File daemon
-#
-#  Version $Id$
-#
-
-
-# autoconf/Make.common.in       -*- Makefile -*-
-# release date (man), LSM date, version number/name, current maintainer
-DATE="15 Apr 2004"
-LSMDATE=15Apr04
-VERSION=1.35.0
-VERNAME=bacula-$(VERSION)#
-MAINT=Kern Sibbald#
-MAINTEMAIL=<kern@sibbald.com>#
-WEBMAINT=#
-WEBMAINTEMAIL=#
-WEBPAGE=#
-FTPSITENAME=#
-FTPSITEDIR=#
-#-------------------------------------------------------------------------
-
-SHELL = /bin/sh
-
-# Installation target directories & other installation stuff
-prefix = 
-exec_prefix = 
-binprefix =
-manprefix =
-sbindir = /sbin
-sysconfdir = /etc/bacula
-scriptdir = /etc/bacula
-mandir = ${prefix}/man/man1
-manext = 1
-
-# Tools & program stuff
-CC = gcc
-CPP = gcc -E
-CXX = g++
-MV = /usr/bin/mv
-RM = /usr/bin/rm
-RMF = /usr/bin/rm -f
-CP = /usr/bin/cp
-SED = /usr/bin/sed
-AWK = /usr/bin/awk
-ECHO = /usr/bin/echo
-CMP = /usr/bin/cmp
-TBL = /usr/bin/tbl
-AR = /usr/bin/ar
-RANLIB = /usr/bin/ranlib
-INSTALL = /usr/bin/install -c
-# add the -s to the following in PRODUCTION mode
-INSTALL_PROGRAM = /usr/bin/install -c -m 754
-INSTALL_DATA = /usr/bin/install -c -m 644
-INSTALL_SCRIPT = /usr/bin/install -c -m 754
-INSTALL_CONFIG = /usr/bin/install -c -m 640
-
-# Flags & libs
-CFLAGS = -g -O2 
-CPPFLAGS = 
-LDFLAGS = -O
-TTOOL_LDFLAGS = 
-DEFS = -DHAVE_WIN32 -DHAVE_MINGW
-LIBS = -lpthreadGC -lrpcrt4 -loleaut32 -lole32 -luuid -lwinspool \
-       -lwinmm -lshell32 -lcomctl32 -lctl3d32 -ladvapi32 -lwsock32 \
-       -lmsvcrt
-DINCLUDE = 
-DLIB = 
-DB_LIBS = 
-
-# Windows (cygwin) flags 
-WCFLAGS = -mwindows
-WLDFLAGS = -mwindows -Wl,--subsystem,windows -mthreads
-
-# X Include directory
-#XINC =  @XPM_CFLAGS@
-
-# extra libraries needed by X on some systems, X library location
-#XLIB =  @XPM_LIBS@ -lX11 
-
-# End of common section of the Makefile
-#-------------------------------------------------------------------------
-
-srcdir =       .
-VPATH =        .
-.PATH:         .
-
-# one up
-basedir = ..
-# top dir
-topdir = ../..
-# this dir relative to top dir
-thisdir = src/filed
-
-DEBUG=
-
-first_rule: all
-dummy:
-
-#
-SVRSRCS = filed.c authenticate.c backup.c chksum.c estimate.c \
-         filed_conf.c heartbeat.c job.c \
-         restore.c status.c verify.c verify_vol.c
-SVROBJS = filed.o authenticate.o backup.o chksum.o estimate.o \
-         filed_conf.o heartbeat.o job.o \
-         restore.o status.o verify.o verify_vol.o
-
-# these are the objects that are changed by the .configure process
-EXTRAOBJS = 
-
-FDLIBS = -lz             # extra libs for File daemon
-
-# extra items for linking on Win32
-WIN32OBJS = win32/winmain.o win32/winlib.a win32/winres.res
-win32 = $(WIN32OBJS)
-
-WIN32LIBS = $(win32)
-
-.SUFFIXES:     .c .o
-.PHONY:
-.DONTCARE:
-
-# inference rules
-.c.o:
-       $(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) -I$(srcdir) -I$(basedir) -I../win32/compat $(DINCLUDE) $(CFLAGS) $<
-#-------------------------------------------------------------------------
-all: win32 bacula-fd 
-       @echo "==== Make of filed is good ===="
-       @echo " "
-
-win32/winlib.a:
-       (cd win32; $(MAKE) -f Makefile.mingw DESTDIR=$(DESTDIR))
-       @rm -f bacula-fd.exe
-
-win32/winmain.o:
-       (cd win32; $(MAKE) -f Makefile.mingw DESTDIR=$(DESTDIR))
-       @rm -f bacula-fd.exe
-
-win32/winres.res:
-       (cd win32; $(MAKE) -f Makefile.mingw DESTDIR=$(DESTDIR))
-       @rm -f bacula-fd.exe
-
-# win32 libraries if needed
-win32: $(WIN32OBJS)
-       (cd win32; $(MAKE) -f Makefile.mingw DESTDIR=$(DESTDIR))
-       @rm -f bacula-fd.exe
-
-bacula-fd:  $(SVROBJS) ../findlib/libfind.a ../lib/libbac.a win32
-       $(CXX) $(WLDFLAGS) $(LDFLAGS) -L../lib -L../findlib -o $@ $(SVROBJS) \
-         $(WIN32LIBS) $(FDLIBS) -lfind -lbac -lm $(LIBS) $(DLIB)
-
-static-bacula-fd:  $(SVROBJS) ../findlib/libfind.a ../lib/libbac.a win32
-       $(CXX) $(WLDFLAGS) $(LDFLAGS) -static -L../lib -L../findlib -o $@ $(SVROBJS) \
-          $(WIN32LIBS) $(FDLIBS) -lfind -lbac -lm $(LIBS) $(DLIB)
-       strip $@
-
-../findlib/libfind.a: ../findlib/*.c
-       (cd ../findlib/; $(MAKE) -f Makefile.mingw DESTDIR=$(DESTDIR))
-       @rm -f bacula-fd.exe
-
-../lib/libbac.a: ../lib/*.c*
-       (cd ../lib/; $(MAKE) -f Makefile.mingw DESTDIR=$(DESTDIR))
-       @rm -f bacula-fd.exe
-
-clean:
-       @$(RMF) bacula-fd filed core core.* a.out *.o *.bak *~ *.intpro *.extpro 1 2 3
-       @$(RMF) static-bacula-fd
-       if test -f win32/Makefile; then \
-          (cd win32; $(MAKE) clean); \
-       fi
-
-realclean: clean
-       @$(RMF) tags bacula-fd.conf
-
-distclean: realclean
-       if test $(srcdir) = .; then $(MAKE) realclean; fi
-       (cd $(srcdir); $(RMF) Makefile; $(RMF) -r CVS)
-       if test -f win32/Makefile; then \
-          (cd win32; $(MAKE) distclean); \
-       fi
-
-devclean: realclean
-       if test $(srcdir) = .; then $(MAKE) realclean; fi
-       (cd $(srcdir); $(RMF) Makefile)
-       if test -f win32/Makefile; then \
-          (cd win32; $(MAKE) devclean); \
-       fi
-
-install: all
-       $(INSTALL_PROGRAM) bacula-fd $(DESTDIR)$(sbindir)/bacula-fd 
-       @srcconf=bacula-fd.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
-       @if test -f static-bacula-fd; then \
-          $(INSTALL_PROGRAM) static-bacula-fd $(DESTDIR)$(sbindir)/static-bacula-fd; \
-       fi
-
-
-
-uninstall:
-       (cd $(DESTDIR)$(sbindir); $(RMF) bacula-fd)
-       (cd $(DESTDIR)$(sbindir); $(RMF) bacula-fd.conf)
-       (cd $(DESTDIR)$(sbindir); $(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.
-# `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
-       @$(CC) -S -M $(CPPFLAGS) $(XINC) -I$(srcdir) -I$(basedir) $(SQL_INC) *.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
index ee00e1e31e6d31bd58e6c8a264bb91cb1acae56f..c8100a12bfcc97cde983133b5d87c785c2cae87c 100644 (file)
 
 #include "bacula.h"
 #include "filed.h"
-#ifdef WIN32_VSS
+
+#if defined(WIN32_VSS)
 #include "vss.h"   
+
 static pthread_mutex_t vss_mutex = PTHREAD_MUTEX_INITIALIZER;
+static int enable_vss;
 #endif
 
 extern CLIENT *me;                    /* our client resource */
 
-int enable_vss = 0;                   /* set to use vss */
-
 /* Imported functions */
 extern int status_cmd(JCR *jcr);
 extern int qstatus_cmd(JCR *jcr);
@@ -991,10 +992,13 @@ static void set_options(findFOPTS *fo, const char *opts)
 static int fileset_cmd(JCR *jcr)
 {
    BSOCK *dir = jcr->dir_bsock;
+
+#if defined(WIN32_VSS)
    int vss = 0;
 
    sscanf(dir->msg, "fileset vss=%d", &vss);
    enable_vss = vss;
+#endif
 
    if (!init_fileset(jcr)) {
       return 0;
@@ -1250,7 +1254,7 @@ static int backup_cmd(JCR *jcr)
    int SDJobStatus;
    char ed1[50], ed2[50];
 
-#ifdef WIN32_VSS
+#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.
@@ -1310,7 +1314,7 @@ static int backup_cmd(JCR *jcr)
    
    generate_daemon_event(jcr, "JobStart");
 
-#ifdef WIN32_VSS
+#if defined(WIN32_VSS)
    /* START VSS ON WIN 32 */
    if (bDoVSS) {      
       if (g_pVSSClient->InitializeForBackup()) {   
@@ -1408,7 +1412,7 @@ static int backup_cmd(JCR *jcr)
    }
 
 cleanup:
-#ifdef WIN32_VSS
+#if defined(WIN32_VSS)
    /* STOP VSS ON WIN 32 */
    /* tell vss to close the backup session */
    if (bDoVSS) {
index 7df988108cba8f14e9d14afa5e4756f68446ff9a..302dd89567e5c79c7b7dd9cb37fedfd1d0b6503b 100755 (executable)
@@ -83,7 +83,6 @@ static void do_status(void sendit(const char *msg, int len, void *sarg), void *a
       len = Mmsg(msg, " %sWUL,%sWMKD,%sWOP,%sGFAA,%sGFAW,%sGFAEA,%sGFAEW,%sSFAA,%sSFAW,%sBR,%sBW,%sSPSP,\n",
                  p_wunlink?"":"!",
                  p_wmkdir?"":"!",
-                 p_wopen?"":"!",
                  p_GetFileAttributesA?"":"!",
                  p_GetFileAttributesW?"":"!",
                  p_GetFileAttributesExA?"":"!",
diff --git a/bacula/src/filed/win32/.cvsignore b/bacula/src/filed/win32/.cvsignore
deleted file mode 100644 (file)
index f3c7a7c..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Makefile
diff --git a/bacula/src/filed/win32/Makefile.in b/bacula/src/filed/win32/Makefile.in
deleted file mode 100755 (executable)
index 377227c..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-#
-# makefile to build Windows specific pieces of the Bacula File daemon
-#
-# Version $Id$
-#
-CFLAGS=@CFLAGS@
-WCFLAGS=@WCFLAGS@
-CC = @CC@
-CXX = @CXX@
-RANLIB = @RANLIB@
-SHELL = /bin/sh
-
-# Program to install `make'.
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-# Program to install the man page.
-INSTALL_DATA = @INSTALL_DATA@
-# Generic install program.
-INSTALL = @INSTALL@
-
-VERSION = @VERSION@
-
-
-# this dir
-srcdir = .
-# main dir
-topdir = ../../..
-# this dir relative to top dir
-thisdir = src/filed/win32
-
-# Common prefix for machine-independent installed files.
-prefix = @prefix@
-sysconfdir = @sysconfdir@
-sbindir = @sbindir@
-piddir = @piddir@
-
-SRCS = shutdown.c
-
-OBJS = shutdown.o
-
-BACOBJS = winabout.o winevents.o winservice.o winstat.o wintray.o winmain.o
-
-all: winlib.a winres.res 
-
-win32: winlib.a
-
-winlib.a: $(BACOBJS) winres.res
-       ar rcs $@ $(BACOBJS)
-
-winres.res: winres.rc bacula.ico winres.h idle.ico running.ico error.ico warn.ico
-       windres $< -O coff -o $@
-
-winmain.o: winmain.cpp winbacula.h
-       $(CC) -c $(WCFLAGS) $(CFLAGS) $<
-
-libmymapi32.a: mymapi32.def
-       dlltool --as=as -k --output-lib $@ --def $<
-
-Makefile: $(srcdir)/Makefile.in $(topdir)/config.status
-       cd $(topdir) \
-         && CONFIG_FILES=$(thisdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-clean:
-       rm -f *.exe *.o *.res *.a 1 2 3
-       rm -f bin/smtp.exe bin/console.exe
-       rm -f bin/bacula-fd.exe bin/bsmtp.exe bin/testfind.exe
-
-distclean: clean
-       @rm -f Makefile
-
-devclean: clean
-       @rm -f Makefile
-
-install:
-       @mkdir -p $(DESTDIR)$(sbindir) $(DESTDIR)/tmp $(DESTDIR)$(sbindir)/../working
-       @echo "Installing system binary files ..."
-       @strip ../bacula-fd.exe
-       @strip ../../tools/bsmtp.exe
-       @strip ../../tools/testfind.exe
-       @strip ../../console/bconsole.exe
-       @cp -f ../bacula-fd.exe bin/
-       @cp -f ../../tools/bsmtp.exe bin/
-       @cp -f ../../tools/testfind.exe bin/
-       @cp -f ../../console/bconsole.exe bin/
-       @cp -f bin/* $(DESTDIR)$(sbindir)
-       @cp -f ../bacula-fd.conf $(DESTDIR)$(sysconfdir)/bacula-fd.conf.new
-       @cp -f ../../console/bconsole.conf $(DESTDIR)$(sysconfdir)/bconsole.conf.new
-
-# Make a Win32 binary release 
-binary-release:
-       @rm -rf wr
-       @mkdir -p wr
-       @mkdir -p wr/$(prefix) wr/$(sbindir) wr/$(sbindir)/../working wr/$(sysconfdir) wr/tmp
-       @echo "Copying system binary files ..."
-       @cp bin/* wr/$(sbindir)
-       @strip ../bacula-fd.exe
-       @strip ../../tools/bsmtp.exe
-       @strip ../../tools/testfind.exe
-       @strip ../../console/bconsole.exe
-       @echo "Copying executables ..."
-       @cp -f ../bacula-fd.exe wr/$(sbindir)/bacula-fd.exe 
-       @cp -f ../../tools/bsmtp.exe wr/$(sbindir)/bsmtp.exe 
-       @cp -f ../../tools/testfind.exe wr/$(sbindir)/testfind.exe 
-       @cp -f ../../console/bconsole.exe wr/$(sbindir)/bconsole.exe 
-       @echo "Copying bacula-fd.conf..."
-       @cp -f ../bacula-fd.conf wr/$(sysconfdir)/bacula-fd.conf.new
-       @cp -f ../../console/bconsole.conf wr/$(sysconfdir)/bconsole.conf.new
-# the two dummy files are necessary to insure that WinZip
-# actually creates the directories.
-       @echo "dummy" >wr/tmp/dummy.txt
-       @echo "dummy" >wr/$(sbindir)/../working/dummy.txt
-       @echo "Making tar file ..."
-       @tar cfz winbacula-${VERSION}.tar.gz -C wr bacula tmp
-       @mv -f winbacula-${VERSION}.tar.gz $(topdir)/..
-       @rm -rf wr
-       @(cd $(topdir)/..; \
-          echo "Tar file in: `pwd`/winbacula-${VERSION}.tar.gz")
-
-dummy:
-
-.c.o:
-       $(CC) -c $(WCFLAGS) $(CFLAGS) $<
-
-.cpp.o:
-       $(CXX) -c $(WCFLAGS) $(CFLAGS) $<
diff --git a/bacula/src/filed/win32/Makefile.mingw b/bacula/src/filed/win32/Makefile.mingw
deleted file mode 100644 (file)
index 4a3e36f..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-#
-# makefile to build Windows specific pieces of the Bacula File daemon
-#
-# Version $Id$
-#
-CFLAGS=-g -O2 -DHAVE_WIN32 -DHAVE_MINGW
-WCFLAGS=-mwindows -I../../win32/compat
-CC = gcc
-CXX = g++
-RANLIB = /usr/bin/ranlib
-SHELL = /bin/sh
-
-# Program to install `make'.
-INSTALL_PROGRAM = ${INSTALL}
-# Program to install the man page.
-INSTALL_DATA = ${INSTALL} -m 644
-# Generic install program.
-INSTALL = /usr/bin/install -c
-
-VERSION = 1.35.0
-
-
-# this dir
-srcdir = .
-# main dir
-topdir = ../../..
-# this dir relative to top dir
-thisdir = src/filed/win32
-
-# Common prefix for machine-independent installed files.
-prefix = 
-sysconfdir = /etc/bacula
-sbindir = /sbin
-piddir = /var/run
-
-SRCS = shutdown.c
-
-OBJS = shutdown.o
-
-BACOBJS = winabout.o winevents.o winservice.o winstat.o wintray.o winmain.o
-
-all: winlib.a winres.res 
-
-win32: winlib.a
-
-winlib.a: $(BACOBJS) winres.res
-       ar rcs $@ $(BACOBJS)
-
-winres.res: winres.rc bacula.ico winres.h idle.ico running.ico error.ico warn.ico
-       windres -DHAVE_MINGW $< -O coff -o $@
-
-winmain.o: winmain.cpp winbacula.h
-       $(CC) -c $(WCFLAGS) $(CFLAGS) $<
-
-libmymapi32.a: mymapi32.def
-       dlltool --as=as -k --output-lib $@ --def $<
-
-Makefile: $(srcdir)/Makefile.in $(topdir)/config.status
-       cd $(topdir) \
-         && CONFIG_FILES=$(thisdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-clean:
-       rm -f *.exe *.o *.res *.a 1 2 3
-       rm -f bin/smtp.exe bin/console.exe
-       rm -f bin/bacula-fd.exe bin/bsmtp.exe bin/testfind.exe
-
-distclean: clean
-       @rm -f Makefile
-       @rm -rf bin/CVS CVS
-
-devclean: clean
-       @rm -f Makefile
-
-install:
-       @mkdir -p $(DESTDIR)$(sbindir) $(DESTDIR)/tmp $(DESTDIR)$(sbindir)/../working
-       @echo "Installing system binary files ..."
-       @strip ../bacula-fd.exe
-       @strip ../../tools/bsmtp.exe
-       @strip ../../tools/testfind.exe
-       @strip ../../console/bconsole.exe
-       @cp -f ../bacula-fd.exe bin/
-       @cp -f ../../tools/bsmtp.exe bin/
-       @cp -f ../../tools/testfind.exe bin/
-       @cp -f ../../console/bconsole.exe bin/
-       @cp -f bin/* $(DESTDIR)$(sbindir)
-       @cp -f ../bacula-fd.conf $(DESTDIR)$(sysconfdir)/bacula-fd.conf.new
-       @cp -f ../../console/bconsole.conf $(DESTDIR)$(sysconfdir)/bconsole.conf.new
-
-# Make a Win32 binary release 
-binary-release:
-       @rm -rf wr
-       @mkdir -p wr
-       @mkdir -p wr/$(prefix) wr/$(sbindir) wr/$(sbindir)/../working wr/$(sysconfdir) wr/tmp
-       @echo "Copying system binary files ..."
-       @cp bin/* wr/$(sbindir)
-       @strip ../bacula-fd.exe
-       @strip ../../tools/bsmtp.exe
-       @strip ../../tools/testfind.exe
-       @strip ../../console/bconsole.exe
-       @echo "Copying executables ..."
-       @cp -f ../bacula-fd.exe wr/$(sbindir)/bacula-fd.exe 
-       @cp -f ../../tools/bsmtp.exe wr/$(sbindir)/bsmtp.exe 
-       @cp -f ../../tools/testfind.exe wr/$(sbindir)/testfind.exe 
-       @cp -f ../../console/bconsole.exe wr/$(sbindir)/bconsole.exe 
-       @echo "Copying bacula-fd.conf..."
-       @cp -f ../bacula-fd.conf wr/$(sysconfdir)/bacula-fd.conf.new
-       @cp -f ../../console/bconsole.conf wr/$(sysconfdir)/bconsole.conf.new
-# the two dummy files are necessary to insure that WinZip
-# actually creates the directories.
-       @echo "dummy" >wr/tmp/dummy.txt
-       @echo "dummy" >wr/$(sbindir)/../working/dummy.txt
-       @echo "Making tar file ..."
-       @tar cfz winbacula-${VERSION}.tar.gz -C wr bacula tmp
-       @mv -f winbacula-${VERSION}.tar.gz $(topdir)/..
-       @rm -rf wr
-       @(cd $(topdir)/..; \
-          echo "Tar file in: `pwd`/winbacula-${VERSION}.tar.gz")
-
-dummy:
-
-.c.o:
-       $(CC) -c $(WCFLAGS) $(CFLAGS) $<
-
-.cpp.o:
-       $(CXX) -c $(WCFLAGS) $(CFLAGS) $<
diff --git a/bacula/src/filed/win32/bacula.bmp b/bacula/src/filed/win32/bacula.bmp
deleted file mode 100644 (file)
index a31eb16..0000000
Binary files a/bacula/src/filed/win32/bacula.bmp and /dev/null differ
diff --git a/bacula/src/filed/win32/bacula.ico b/bacula/src/filed/win32/bacula.ico
deleted file mode 100644 (file)
index f6d50bf..0000000
Binary files a/bacula/src/filed/win32/bacula.ico and /dev/null differ
diff --git a/bacula/src/filed/win32/bacula.rc b/bacula/src/filed/win32/bacula.rc
deleted file mode 100644 (file)
index 5849beb..0000000
+++ /dev/null
@@ -1 +0,0 @@
-1 ICON  "apcupsd.ico"
diff --git a/bacula/src/filed/win32/error.ico b/bacula/src/filed/win32/error.ico
deleted file mode 100644 (file)
index a8f85f1..0000000
Binary files a/bacula/src/filed/win32/error.ico and /dev/null differ
diff --git a/bacula/src/filed/win32/idle.ico b/bacula/src/filed/win32/idle.ico
deleted file mode 100644 (file)
index ce5315f..0000000
Binary files a/bacula/src/filed/win32/idle.ico and /dev/null differ
diff --git a/bacula/src/filed/win32/mymapi32.def b/bacula/src/filed/win32/mymapi32.def
deleted file mode 100644 (file)
index 42f0bfe..0000000
+++ /dev/null
@@ -1,151 +0,0 @@
-LIBRARY MAPI32.DLL
-EXPORTS
-MAPISendMail@20
-BuildDisplayTable@40
-CbOfEncoded@4
-CchOfEncoding@4
-ChangeIdleRoutine@28
-CloseIMsgSession@4
-CreateIProp@24
-CreateTable@36
-DeinitMapiUtil@0
-DeregisterIdleRoutine@4
-EnableIdleRoutine@8
-EncodeID@12
-FBadColumnSet@4
-FBadEntryList@4
-FBadProp@4
-FBadPropTag@4
-FBadRestriction@4
-FBadRglpNameID@8
-FBadRglpszA@8
-FBadRglpszW@8
-FBadRow@4
-FBadRowSet@4
-FBadSortOrderSet@4
-FBinFromHex@8
-FDecodeID@12
-FEqualNames@8
-FPropCompareProp@12
-FPropContainsProp@12
-FPropExists@8
-FreePadrlist@4
-FreeProws@4
-FtAdcFt@20
-FtAddFt@16
-FtDivFtBogus@20
-FtMulDw@12
-FtMulDwDw@8
-FtNegFt@8
-FtSubFt@16
-FtgRegisterIdleRoutine@20
-GetAttribIMsgOnIStg@12
-GetTnefStreamCodepage
-GetTnefStreamCodepage@12
-HexFromBin@12
-HrAddColumns@16
-HrAddColumnsEx@20
-HrAllocAdviseSink@12
-HrComposeEID@28
-HrComposeMsgID@24
-HrDecomposeEID@28
-HrDecomposeMsgID@24
-HrDispatchNotifications@4
-HrEntryIDFromSz@12
-HrGetOneProp@12
-HrIStorageFromStream@16
-HrQueryAllRows@24
-HrSetOneProp@8
-HrSzFromEntryID@12
-HrThisThreadAdviseSink@8
-HrValidateIPMSubtree@20
-HrValidateParameters@8
-InstallFilterHook@4
-IsBadBoundedStringPtr@8
-LAUNCHWIZARD
-LPropCompareProp@8
-LaunchWizard@20
-LpValFindProp@12
-MAPIAdminProfiles
-MAPIAdminProfiles@8
-MAPIAllocateBuffer
-MAPIAllocateBuffer@8
-MAPIAllocateMore
-MAPIAllocateMore@12
-MAPIDeinitIdle@0
-MAPIFreeBuffer
-MAPIFreeBuffer@4
-MAPIGetDefaultMalloc@0
-MAPIInitIdle@4
-MAPIInitialize
-MAPIInitialize@4
-MAPILogonEx
-MAPILogonEx@20
-MAPIOpenFormMgr
-MAPIOpenFormMgr@8
-MAPIOpenLocalFormContainer
-MAPIOpenLocalFormContainer@4
-MAPIUninitialize
-MAPIUninitialize@0
-MNLS_CompareStringW@24
-MNLS_IsBadStringPtrW@8
-MNLS_MultiByteToWideChar@24
-MNLS_WideCharToMultiByte@32
-MNLS_lstrcmpW@8
-MNLS_lstrcpyW@8
-MNLS_lstrlenW@4
-MapStorageSCode@4
-OpenIMsgOnIStg@44
-OpenIMsgSession@12
-OpenStreamOnFile
-OpenStreamOnFile@24
-OpenTnefStream
-OpenTnefStream@28
-OpenTnefStreamEx
-OpenTnefStreamEx@32
-PRProviderInit
-PpropFindProp@12
-PropCopyMore@16
-RTFSync
-RTFSync@12
-ScBinFromHexBounded@12
-ScCopyNotifications@16
-ScCopyProps@16
-ScCountNotifications@12
-ScCountProps@12
-ScCreateConversationIndex@16
-ScDupPropset@16
-ScGenerateMuid@4
-ScInitMapiUtil@4
-ScLocalPathFromUNC@12
-ScMAPIXFromCMC
-ScMAPIXFromSMAPI
-ScRelocNotifications@20
-ScRelocProps@20
-ScSplEntry
-ScUNCFromLocalPath@12
-SetAttribIMsgOnIStg@16
-SwapPlong@8
-SwapPword@8
-SzFindCh@8
-SzFindLastCh@8
-SzFindSz@8
-UFromSz@4
-UNKOBJ_COFree@8
-UNKOBJ_Free@8
-UNKOBJ_FreeRows@8
-UNKOBJ_ScAllocate@12
-UNKOBJ_ScAllocateMore@16
-UNKOBJ_ScCOAllocate@12
-UNKOBJ_ScCOReallocate@12
-UNKOBJ_ScSzFromIdsAlloc@20
-UlAddRef@4
-UlFromSzHex@4
-UlPropSize@4
-UlRelease@4
-WrapCompressedRTFStream
-WrapCompressedRTFStream@12
-WrapProgress@20
-WrapStoreEntryID@24
-__CPPValidateParameters@8
-__ValidateParameters@8
diff --git a/bacula/src/filed/win32/popup.c b/bacula/src/filed/win32/popup.c
deleted file mode 100644 (file)
index e3e3420..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Dumb Windows program to put up a message box
- * containing the command line.  Any leading and
- * trailing quotes are stripped.
- *
- *  Kern E. Sibbald
- *   July MM
- */
-#include "windows.h"
-
-
-int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
-                  PSTR szCmdLine, int iCmdShow)
-{
-   int len = strlen(szCmdLine);
-   char *msg, *wordPtr;
-
-   // Funny things happen with the command line if the
-   // execution comes from c:/Program Files/apcupsd/apcupsd.exe
-   // We get a command line like: Files/apcupsd/apcupsd.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 = szCmdLine;
-   while (*wordPtr && *wordPtr != ' ')
-      wordPtr++;
-   if (wordPtr > szCmdLine)     // backup to char before space
-      wordPtr--;
-   // if first character is not a quote and last is, junk it
-   if (*szCmdLine != '"' && *wordPtr == '"') {
-      wordPtr++;
-      while (*wordPtr && *wordPtr == ' ')
-        wordPtr++;              /* strip leading spaces */
-      szCmdLine = wordPtr;
-      len = strlen(szCmdLine);
-   }
-
-   msg = szCmdLine;
-   if (*szCmdLine == '"' && len > 0 && szCmdLine[len-1] == '"') {
-      msg = szCmdLine + 1;
-      szCmdLine[len-1] = 0;
-   }
-   MessageBox(NULL, msg, "Apcupsd message", MB_OK);
-   return 0;
-}
diff --git a/bacula/src/filed/win32/running.ico b/bacula/src/filed/win32/running.ico
deleted file mode 100644 (file)
index 32dc42c..0000000
Binary files a/bacula/src/filed/win32/running.ico and /dev/null differ
diff --git a/bacula/src/filed/win32/saving.ico b/bacula/src/filed/win32/saving.ico
deleted file mode 100644 (file)
index f6d50bf..0000000
Binary files a/bacula/src/filed/win32/saving.ico and /dev/null differ
diff --git a/bacula/src/filed/win32/warn.ico b/bacula/src/filed/win32/warn.ico
deleted file mode 100644 (file)
index 26e1d39..0000000
Binary files a/bacula/src/filed/win32/warn.ico and /dev/null differ
diff --git a/bacula/src/filed/win32/winabout.cpp b/bacula/src/filed/win32/winabout.cpp
deleted file mode 100755 (executable)
index 5fbccae..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
-   Copyright (C) 2000-2004 Kern Sibbald and John Walker
-
-   This program is free software; you can redistribute it and/or
-   modify it under the terms of the GNU General Public License as
-   published by the Free Software Foundation; either version 2 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.
-
-   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., 59 Temple Place - Suite 330, Boston,
-   MA 02111-1307, USA.
-
-   This file is patterned after the VNC Win32 code by ATT
-  
-   Kern E. Sibbald, 2000
-*/
-
-#include "bacula.h"
-#include "winbacula.h"
-#include "winabout.h"
-#include "winres.h"
-
-bacAbout::bacAbout()
-{
-   visible = false;
-}
-
-bacAbout::~bacAbout() { };
-
-void bacAbout::Show(BOOL show)
-{
-   if (show && !visible) {
-      DialogBoxParam(hAppInstance, MAKEINTRESOURCE(IDD_ABOUT), NULL,
-         (DLGPROC)DialogProc, (LONG)this);
-   }
-}
-
-
-BOOL CALLBACK
-bacAbout::DialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
-{
-   /* Get the dialog class pointer from USERDATA */
-   bacAbout *_this;
-
-   switch (uMsg) {
-   case WM_INITDIALOG:
-      /* save the dialog class pointer */
-      SetWindowLong(hwnd, GWL_USERDATA, lParam);
-      _this = (bacAbout *)lParam;
-
-      /* Show the dialog */
-      SetForegroundWindow(hwnd);
-      _this->visible = true;
-      return TRUE;
-
-   case WM_COMMAND:
-      switch (LOWORD(wParam)) {
-      case IDCANCEL:
-      case IDOK:
-         EndDialog(hwnd, TRUE);
-         _this = (bacAbout *)GetWindowLong(hwnd, GWL_USERDATA);
-         _this->visible = false;
-         return TRUE;
-      }
-      break;
-
-   case WM_DESTROY:
-      EndDialog(hwnd, FALSE);
-      _this = (bacAbout *)GetWindowLong(hwnd, GWL_USERDATA);
-      _this->visible = false;
-      return TRUE;
-   }
-   return 0;
-}
diff --git a/bacula/src/filed/win32/winabout.h b/bacula/src/filed/win32/winabout.h
deleted file mode 100755 (executable)
index 46a6e94..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
-   Copyright (C) 2000-2004 Kern Sibbald and John Walker
-
-   This program is free software; you can redistribute it and/or
-   modify it under the terms of the GNU General Public License as
-   published by the Free Software Foundation; either version 2 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.
-
-   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., 59 Temple Place - Suite 330, Boston,
-   MA 02111-1307, USA.
-
-   This file was inspired by the VNC Win32 code by ATT
-
-   Kern E. Sibbald, 2000
-*/
-
-
-/* Object implementing the About dialog for Bacula */
-
-class bacAbout;
-
-#ifndef _WINABOUT_H_
-#define _WINABOUT_H_ 1
-
-/* Define the bacAbout class */
-class bacAbout
-{
-public:
-   bacAbout();
-  ~bacAbout();
-
-   /* The dialog box window proc */
-   static BOOL CALLBACK DialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
-
-   void Show(BOOL show);
-
-   /* Object local storage */
-   bool visible;
-};
-
-#endif
diff --git a/bacula/src/filed/win32/winbacula.h b/bacula/src/filed/win32/winbacula.h
deleted file mode 100755 (executable)
index 088205b..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-//  Copyright (C) 1999 AT&T Laboratories Cambridge. All Rights Reserved.
-//
-//  This file was part of the VNC system.
-//
-//  The VNC system 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
-//  (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.
-//
-//  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., 59 Temple Place - Suite 330, Boston, MA  02111-1307,
-//  USA.
-//
-// If the source code for the VNC system is not available from the place
-// whence you received this file, check http://www.uk.research.att.com/vnc or contact
-// the authors on vnc@uk.research.att.com for information on obtaining it.
-//
-// This file has been adapted to the Win32 version of Bacula
-// by Kern E. Sibbald.  Many thanks to ATT and James Weatherall,
-// the original author, for providing an excellent template.
-//
-// Copyright (2000) Kern E. Sibbald
-//
-
-
-// Application specific messages
-
-// Message used for system tray notifications
-#define WM_TRAYNOTIFY                           WM_USER+1
-
-// Messages used for the server object to notify windows of things
-#define WM_SRV_CLIENT_CONNECT           WM_USER+2
-#define WM_SRV_CLIENT_AUTHENTICATED     WM_USER+3
-#define WM_SRV_CLIENT_DISCONNECT        WM_USER+4
-
-// Export the application details
-extern HINSTANCE        hAppInstance;
-extern const char       *szAppName;
-extern DWORD            mainthreadId;
-
-// Main Bacula server routine
-extern int BaculaAppMain();
-
-extern void LogErrorMsg(char *msg);
-
-// Standard command-line flag definitions
-const char BaculaRunService[]            = "/service";
-const char BaculaRunServiceHelper[]      = "/servicehelper";
-const char BaculaRunAsUserApp[]          = "/run";
-
-const char BaculaInstallService[]        = "/install";
-const char BaculaRemoveService[]         = "/remove";
-
-const char BaculaShowAbout[]             = "/about";
-const char BaculaShowStatus[]            = "/status";
-const char BaculaShowEvents[]            = "/events";
-const char BaculaKillRunningCopy[]       = "/kill";
-
-const char BaculaShowHelp[]              = "/help";
-
-// Usage string
-const char BaculaUsageText[] = "Bacula [/run] [/kill] [/install] [/remove] [/about] [/status] [/events]\n";
-
-void LogErrorMsg(char *msg, char *fname, int lineno);
-#define log_error_message(msg) LogErrorMsg((msg), __FILE__, __LINE__)
diff --git a/bacula/src/filed/win32/winevents.cpp b/bacula/src/filed/win32/winevents.cpp
deleted file mode 100755 (executable)
index 50edd0a..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
-   Copyright (C) 2000-2003 Kern Sibbald and John Walker
-
-   This program is free software; you can redistribute it and/or
-   modify it under the terms of the GNU General Public License as
-   published by the Free Software Foundation; either version 2 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.
-
-   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., 59 Temple Place - Suite 330, Boston,
-   MA 02111-1307, USA.
-
-   This file is patterned after the VNC Win32 code by ATT
-  
-   Copyright (2000) Kern E. Sibbald
-*/
-
-
-/* Code for the Events dialogue */
-
-#include "bacula.h"
-#include "winbacula.h"
-#include "winevents.h"
-#include "winres.h"
-
-extern "C" void FillEventsBox(HWND hwnd, int id_list);
-
-bacEvents::bacEvents()
-{
-   visible = FALSE;
-}
-
-bacEvents::~bacEvents()
-{
-}
-
-/* Show the dialogue box */
-void
-bacEvents::Show(BOOL show)
-{
-   if (show && !visible) {
-      DialogBoxParam(hAppInstance, MAKEINTRESOURCE(IDD_EVENTS), NULL,
-         (DLGPROC)DialogProc, (LONG)this);
-   }
-}
-
-
-BOOL CALLBACK
-bacEvents::DialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
-{
-   /* The dialog-box this pointer is in USERDATA */
-   bacEvents *_this = (bacEvents *)GetWindowLong(hwnd, GWL_USERDATA);
-
-   switch (uMsg) {
-   case WM_INITDIALOG:
-      /* Retrieve the Dialog box parameter */
-      SetWindowLong(hwnd, GWL_USERDATA, lParam);
-      _this = (bacEvents *)lParam;
-
-      /* Show the dialog */
-      SetForegroundWindow(hwnd);
-      _this->visible = TRUE;
-      return TRUE;
-
-   case WM_COMMAND:
-      switch (LOWORD(wParam)) {
-      case IDCANCEL:
-      case IDOK:
-         EndDialog(hwnd, TRUE);
-         _this->visible = FALSE;
-         return TRUE;
-      }
-      break;
-
-   case WM_DESTROY:
-      EndDialog(hwnd, FALSE);
-      _this->visible = FALSE;
-      return TRUE;
-   }
-   return 0;
-}
diff --git a/bacula/src/filed/win32/winevents.h b/bacula/src/filed/win32/winevents.h
deleted file mode 100755 (executable)
index a28d66e..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-/* Object implementing the Events dialog for Bacula */
-/*
-   Copyright (C) 2000-2003 Kern Sibbald and John Walker
-
-   This program is free software; you can redistribute it and/or
-   modify it under the terms of the GNU General Public License as
-   published by the Free Software Foundation; either version 2 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.
-
-   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., 59 Temple Place - Suite 330, Boston,
-   MA 02111-1307, USA.
-
- */
-
-
-class bacEvents;
-
-#ifndef _win_bacEVENTS
-#define _win_bacEVENTS 1
-
-/* Define the bacEvents class */
-class bacEvents
-{
-public:
-   bacEvents();
-   ~bacEvents();
-
-   /* The dialog box window proc */
-   static BOOL CALLBACK DialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
-
-   void Show(BOOL show);
-
-   /* Object local storage */
-   BOOL visible;
-};
-
-#endif
diff --git a/bacula/src/filed/win32/winmain.cpp b/bacula/src/filed/win32/winmain.cpp
deleted file mode 100755 (executable)
index 4a662a5..0000000
+++ /dev/null
@@ -1,330 +0,0 @@
-/*
-   Copyright (C) 2000-2006 Kern Sibbald
-
-   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.
-
-   This file is patterned after the VNC Win32 code by ATT
-  
-*/
-
-#include <unistd.h>
-#include <ctype.h>
-
-#include "bacula.h"
-#include "winbacula.h"
-#include "wintray.h"
-#include "winservice.h"
-#include <signal.h>
-#include <pthread.h>
-
-extern int BaculaMain(int argc, char *argv[]);
-extern void terminate_filed(int sig);
-extern DWORD g_error;
-extern BOOL ReportStatus(DWORD state, DWORD exitcode, DWORD waithint);
-extern void d_msg(const char *, int, int, const char *, ...);
-
-/* Globals */
-HINSTANCE       hAppInstance;
-const char      *szAppName = "Bacula";
-DWORD           mainthreadId;
-bool            silent = false;
-
-/* Imported variables */
-extern DWORD    g_servicethread;
-extern DWORD    g_platform_id;
-
-#define MAX_COMMAND_ARGS 100
-static char *command_args[MAX_COMMAND_ARGS] = {"bacula-fd", NULL};
-static int num_command_args = 1;
-static pid_t main_pid;
-static pthread_t main_tid;
-
-/*
- * WinMain parses the command line and either calls the main App
- * routine or, under NT, the main service routine.
- */
-int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, 
-                   PSTR CmdLine, int iCmdShow)
-{
-   char *szCmdLine = CmdLine;
-   char *wordPtr, *tempPtr;
-   int i, quote;
-
-   /* Save the application instance and main thread id */
-   hAppInstance = hInstance;
-   mainthreadId = GetCurrentThreadId();
-
-   main_pid = getpid();
-   main_tid = pthread_self();
-
-   /*
-    * 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 = szCmdLine;
-   while (*wordPtr && *wordPtr != ' ')
-      wordPtr++;
-   if (wordPtr > szCmdLine)      /* backup to char before space */
-      wordPtr--;
-   /* if first character is not a quote and last is, junk it */
-   if (*szCmdLine != '"' && *wordPtr == '"') {
-      szCmdLine = wordPtr + 1;
-   }
-// MessageBox(NULL, szCmdLine, "Cmdline", MB_OK);
-
-   /* Build Unix style argc *argv[] */      
-
-   /* Don't NULL command_args[0] !!! */
-   for (i=1;i<MAX_COMMAND_ARGS;i++)
-      command_args[i] = NULL;
-
-   wordPtr = szCmdLine;
-   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
-    *   as defined by ATT
-    *
-    * Make the command-line lowercase and parse it
-    */
-   for (i = 0; i < (int)strlen(szCmdLine); i++) {
-      szCmdLine[i] = tolower(szCmdLine[i]);
-   }
-
-   bool argfound = false;
-   for (i = 0; i < (int)strlen(szCmdLine); i++) {
-      if (szCmdLine[i] <= ' ') {
-         continue;
-      }
-
-      if (szCmdLine[i] == '-') {
-         while (szCmdLine[i] && szCmdLine[i] != ' ') {
-            i++;
-         }
-         continue;
-      }
-
-      argfound = true;
-
-      /* Now check for command-line arguments */
-
-      /* /silent install quietly -- no prompts */
-      if (strncmp(&szCmdLine[i], "/silent", strlen("/silent")) == 0) {
-         silent = true;
-         i += strlen("/silent");
-      }
-
-      /* /service start service */
-      if (strncmp(&szCmdLine[i], BaculaRunService, strlen(BaculaRunService)) == 0) {
-         /* Run Bacula as a service */
-         return bacService::BaculaServiceMain();
-      }
-      /* /run  (this is the default if no command line arguments) */
-      if (strncmp(&szCmdLine[i], BaculaRunAsUserApp, strlen(BaculaRunAsUserApp)) == 0) {
-         /* Bacula is being run as a user-level program */
-         return BaculaAppMain();
-      }
-      /* /install */
-      if (strncmp(&szCmdLine[i], BaculaInstallService, strlen(BaculaInstallService)) == 0) {
-         /* Install Bacula as a service */
-         bacService::InstallService();
-         i += strlen(BaculaInstallService);
-         continue;
-      }
-      /* /remove */
-      if (strncmp(&szCmdLine[i], BaculaRemoveService, strlen(BaculaRemoveService)) == 0) {
-         /* Remove the Bacula service */
-         bacService::RemoveService();
-         i += strlen(BaculaRemoveService);
-         continue;
-      }
-
-      /* /about */
-      if (strncmp(&szCmdLine[i], BaculaShowAbout, strlen(BaculaShowAbout)) == 0) {
-         /* Show Bacula's about box */
-         bacService::ShowAboutBox();
-         i += strlen(BaculaShowAbout);
-         continue;
-      }
-
-      /* /status */
-      if (strncmp(&szCmdLine[i], BaculaShowStatus, strlen(BaculaShowStatus)) == 0) {
-         /* Show Bacula's status box */                             
-         bacService::ShowStatus();
-         i += strlen(BaculaShowStatus);
-         continue;
-      }
-
-      /* /kill */
-      if (strncmp(&szCmdLine[i], BaculaKillRunningCopy, strlen(BaculaKillRunningCopy)) == 0) {
-         /* Kill running copy of Bacula */
-         bacService::KillRunningCopy();
-         i += strlen(BaculaKillRunningCopy);
-         continue;
-      }
-
-      /* /help */
-      if (strncmp(&szCmdLine[i], BaculaShowHelp, strlen(BaculaShowHelp)) == 0) {
-         MessageBox(NULL, BaculaUsageText, _("Bacula Usage"), MB_OK|MB_ICONINFORMATION);
-         i += strlen(BaculaShowHelp);
-         continue;
-      }
-      
-      MessageBox(NULL, szCmdLine, _("Bad Command Line Options"), MB_OK);
-
-      /* Show the usage dialog */
-      MessageBox(NULL, BaculaUsageText, _("Bacula Usage"), MB_OK | MB_ICONINFORMATION);
-      break;
-   }
-
-   /* If no arguments were given then just run */
-   if (!argfound) {
-      BaculaAppMain();
-   }
-   return 0;
-}
-
-
-/*
- * Called as a thread from BaculaAppMain()
- * Here we handle the Windows messages
- */
-//DWORD WINAPI Main_Msg_Loop(LPVOID lpwThreadParam)
-void *Main_Msg_Loop(LPVOID lpwThreadParam) 
-{
-   DWORD old_servicethread = g_servicethread;
-
-
-   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.
-    */
-   g_servicethread = GetCurrentThreadId();
-
-   /* Create tray icon & menu if we're running as an app */
-   bacMenu *menu = new bacMenu();
-   if (menu == NULL) {
-//    log_error_message("Could not create sys tray menu");
-      PostQuitMessage(0);
-   }
-
-
-   /* Now enter the Windows message handling loop until told to quit! */
-   MSG msg;
-   while (GetMessage(&msg, NULL, 0,0) ) {
-      TranslateMessage(&msg);
-      DispatchMessage(&msg);
-   }
-
-   if (menu != NULL) {
-      delete menu;
-   }
-
-   if (old_servicethread != 0) { /* started as NT service */
-      /* Mark that we're no longer running */
-      g_servicethread = 0;
-
-      /* Tell the service manager that we've stopped. */
-      ReportStatus(SERVICE_STOPPED, g_error, 0);
-   }  
-   /* Tell main program to go away */
-   terminate_filed(0);
-
-   /* Should not get here */
-   pthread_kill(main_tid, SIGTERM);   /* ask main thread to terminate */
-   sleep(1);
-   kill(main_pid, SIGTERM);           /* ask main thread to terminate */
-   _exit(0);
-}
-
-/*
- * This is the main routine for Bacula when running as an application
- * (under Windows 95 or Windows NT)
- * Under NT, Bacula can also run as a service.  The BaculaServerMain routine,
- * defined in the bacService header, is used instead when running as a service.
- */
-int BaculaAppMain()
-{
- /* DWORD dwThreadID; */
-   pthread_t tid;
-
-   InitWinAPIWrapper();
-
-   WSA_Init();
-
-   /* Set this process to be the last application to be shut down. */
-   if (p_SetProcessShutdownParameters) {
-      p_SetProcessShutdownParameters(0x100, 0);
-   }
-
-   HWND hservwnd = FindWindow(MENU_CLASS_NAME, NULL);
-   if (hservwnd != NULL) {
-      /* We don't allow multiple instances! */
-      MessageBox(NULL, _("Another instance of Bacula is already running"), szAppName, MB_OK);
-      _exit(0);
-   }
-
-
-   /* Create a thread to handle the Windows messages */
-// (void)CreateThread(NULL, 0, Main_Msg_Loop, NULL, 0, &dwThreadID);
-   pthread_create(&tid, NULL,  Main_Msg_Loop, (void *)0);
-
-   /* Call the "real" Bacula */
-   BaculaMain(num_command_args, command_args);
-   PostQuitMessage(0);
-   WSACleanup();
-   _exit(0);
-}
diff --git a/bacula/src/filed/win32/winres.h b/bacula/src/filed/win32/winres.h
deleted file mode 100755 (executable)
index 66a84c1..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Included by bacula.rc
- */
-
-/* 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_LIST                        1000
-#define IDC_NONYET_LABEL                1006
-#define IDC_UPDATE_BORDER               1010
-#define IDC_APCUPSDBMP                  1016
-#define IDC_VERSION                     1017
-#define IDC_NAME                        1018
-#define IDC_EMAIL                       1019
-#define IDC_WWW                         1022
-#define IDC_COPYRIGHT                   1023
-#define IDACCEPT                        1030
-#define IDREJECT                        1031
-#define IDC_STATIC_TEXT1                1032
-#define IDC_ACCEPT_IP                   1033
-#define IDC_STATIC_TEXT                 1034
-#define IDC_ACCEPT_TIMEOUT              1035
-#define IDC_TRADEMARK                   1036
-
-
-#define ID_PROPERTIES                   40001
-#define ID_CLOSE                        40002
-#define ID_KILLCLIENTS                  40003
-#define ID_ABOUT                        40004
-#define ID_STATUS                       40005
-#define ID_DEFAULT_PROPERTIES           40006
-#define ID_EVENTS                       40007
-
-/* Dialog definitions */
-#define IDD_PROPERTIES                  200
-#define IDD_ABOUT                       201
-#define IDD_STATUS                      202
-#define IDD_EVENTS                      203
-
-
diff --git a/bacula/src/filed/win32/winres.rc b/bacula/src/filed/win32/winres.rc
deleted file mode 100644 (file)
index 8e6dbb7..0000000
+++ /dev/null
@@ -1,181 +0,0 @@
-#include <winuser.h>
-#include <winver.h>
-#include "winres.h"
-#include "../../version.h"
-
-/* NB: Internationalization of this file will require some work... */
-#define N_(s) s
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Icons
-//
-
-// Icon with lowest ID value placed first to ensure application icon
-// remains consistent on all systems.
-IDI_BACULA              ICON    DISCARDABLE     "bacula.ico"
-IDI_IDLE                ICON    DISCARDABLE     "idle.ico"
-IDI_RUNNING             ICON    DISCARDABLE     "running.ico"
-IDI_JOB_ERROR           ICON    DISCARDABLE     "error.ico"
-IDI_JOB_WARNING         ICON    DISCARDABLE     "warn.ico"
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Menu
-//
-
-IDR_TRAYMENU MENU DISCARDABLE
-BEGIN
-    POPUP "tray"
-    BEGIN
-        MENUITEM N_("&Status"),                     ID_STATUS
-        MENUITEM N_("&Events"),                     ID_EVENTS
-#ifdef properties_implemented
-        MENUITEM N_("&Properties"),                 ID_PROPERTIES
-#endif
-        MENUITEM SEPARATOR
-        MENUITEM N_("&About Bacula"),               ID_ABOUT
-        MENUITEM SEPARATOR
-        MENUITEM N_("&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", "            \0"
-            VALUE "FileDescription", "Bacula File daemon for Win32\0"
-            VALUE "FileVersion", VERSION "\0"
-            VALUE "InternalName", "Bacula\0"
-            VALUE "LegalCopyright", "Copyright Kern Sibbald, 1999-2006\0"
-            VALUE "LegalTrademarks", "Licensed under GNU GPL 2.0\0"
-            VALUE "OriginalFilename", "filed.exe\0"
-            VALUE "PrivateBuild", "\0"
-            VALUE "ProductName", "Bacula - Win32 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     "bacula.bmp"
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// String Table
-//
-
-STRINGTABLE DISCARDABLE
-BEGIN
-    IDI_BACULA              "Bacula"
-END
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Properties Dialog
-//
-#ifdef properties_implemented
-
-IDD_PROPERTIES DIALOG DISCARDABLE  0, 0, 221, 204
-STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP |
-    WS_VISIBLE | WS_CAPTION | WS_SYSMENU
-CAPTION "Bacula Properties"
-FONT 8, "MS Sans Serif"
-BEGIN
-    PUSHBUTTON      N_("&Cancel"),IDCANCEL,165,25,51,15
-    DEFPUSHBUTTON   N_("&OK"),IDOK,165,5,51,15
-    LTEXT           "No Properites yet",IDC_NONYET_LABEL,19,30,56,15,
-                    SS_CENTERIMAGE
-END
-#endif
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// About Dialog
-//
-
-IDD_ABOUT DIALOG DISCARDABLE  0, 0, 250, 145
-STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
-CAPTION "About Bacula"
-FONT 8, "MS Sans Serif"
-BEGIN
-    DEFPUSHBUTTON   "OK",IDOK,190,120,50,15
-//  CONTROL         "\3", IDC_BACULABMP,"Static",SS_ICON | SS_CENTERIMAGE |
-//                  SS_SUNKEN,7,5,73,65
-#ifndef HAVE_MINGW
-    CONTROL         IDB_BACULABMP,IDB_BACULABMP,"Static",SS_BITMAP|SS_SUNKEN,7,5,32,32
-#endif
-
-    LTEXT           N_("      by Kern Sibbald"),IDC_NAME,134,38,78,10
-    LTEXT           N_("For more information, see:"),-1,115,60,100,10
-    LTEXT           "         www.bacula.org",IDC_WWW,115,70,100,10
-//    LTEXT           "                 ",-1,69,81,100,10
-//    LTEXT           "                 ",-1,90,70,100,10
-    LTEXT           "Copyright (C) 1999-2006, Kern Sibbald",IDC_COPYRIGHT,7,120,175,10
-    LTEXT           N_("Licensed under GNU GPL 2.0."),IDC_TRADEMARK,7,130,175,10
-    RTEXT           N_("Build Date:"),-1,108,24,42,8
-    RTEXT           N_("Bacula Version:"),-1,100,9,50,8
-    LTEXT           VERSION,IDC_VERSION,159,10,65,8
-    LTEXT           BDATE,-1,159,24,65,10
-
-END
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Status Dialog
-//
-
-IDD_STATUS DIALOG DISCARDABLE  0, 0, 411, 244
-STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP |
-    WS_VISIBLE | WS_CAPTION | WS_SYSMENU
-CAPTION N_("Bacula Status")
-FONT 8, "Courier New"
-BEGIN
-    DEFPUSHBUTTON   "&OK",IDOK,355,5,51,15
-    LISTBOX         IDC_LIST, 2, 2, 350, 240, WS_VSCROLL | WS_HSCROLL | WS_BORDER
-END
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Events Dialog
-//
-
-IDD_EVENTS DIALOG DISCARDABLE  0, 0, 411, 204
-STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP |
-    WS_VISIBLE | WS_CAPTION | WS_SYSMENU
-CAPTION N_("Bacula Events")
-FONT 8, "Courier New"
-BEGIN
-    DEFPUSHBUTTON   "&OK",IDOK,355,5,51,15
-    LISTBOX         IDC_LIST, 2, 2, 350, 200, WS_VSCROLL | WS_HSCROLL | WS_BORDER
-END
diff --git a/bacula/src/filed/win32/winservice.cpp b/bacula/src/filed/win32/winservice.cpp
deleted file mode 100755 (executable)
index 7fc85b2..0000000
+++ /dev/null
@@ -1,764 +0,0 @@
-//  Copyright (C) 1999 AT&T Laboratories Cambridge. All Rights Reserved.
-//
-//  This file was part of the VNC system.
-//
-//  The VNC system 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
-//  (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.
-//
-//  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., 59 Temple Place - Suite 330, Boston, MA  02111-1307,
-//  USA.
-//
-// If the source code for the VNC system is not available from the place 
-// whence you received this file, check http://www.uk.research.att.com/vnc or contact
-// the authors on vnc@uk.research.att.com for information on obtaining it.
-//
-// This file has been adapted to the Win32 version of Bacula
-// by Kern E. Sibbald.  Many thanks to ATT and James Weatherall,
-// the original author, for providing an excellent template.
-//
-// Copyright (C) 2000-2006 Kern E. Sibbald
-//
-
-
-// winService
-
-// Implementation of service-oriented functionality of Bacula
-// I.e. command line options that contact a running version of
-// Bacula and ask it to do something (show about, show status,
-// show events, ...)
-
-
-#include "bacula.h"
-#include "winbacula.h"
-#include "winservice.h"
-#include "wintray.h"
-
-void set_service_description(SC_HANDLE hSCManager, SC_HANDLE hService,
-                             LPSTR lpDesc);
-
-// OS-SPECIFIC ROUTINES
-
-// Create an instance of the bacService class to cause the static fields to be
-// initialised properly
-
-bacService init;
-
-extern DWORD   g_platform_id;
-extern bool    silent;
-
-bacService::bacService()
-{
-   OSVERSIONINFO osversioninfo;
-   osversioninfo.dwOSVersionInfoSize = sizeof(osversioninfo);
-
-   // Get the current OS version
-   if (!GetVersionEx(&osversioninfo)) {
-      g_platform_id = 0;
-   } else {
-      g_platform_id = osversioninfo.dwPlatformId;
-   }
-}
-
-
-// IsWin95 - returns a BOOL indicating whether the current OS is Win95
-BOOL
-bacService::IsWin95()
-{
-   return (g_platform_id == VER_PLATFORM_WIN32_WINDOWS);
-}
-
-// IsWinNT - returns a bool indicating whether the current OS is WinNT
-BOOL
-bacService::IsWinNT()
-{
-   return (g_platform_id == VER_PLATFORM_WIN32_NT);
-}
-
-// Internal routine to find the  Bacula menu class window and
-// post a message to it!
-
-BOOL
-PostToBacula(UINT message, WPARAM wParam, LPARAM lParam)
-{
-  // Locate the hidden Bacula menu window
-  HWND hservwnd = FindWindow(MENU_CLASS_NAME, NULL);
-  if (hservwnd == NULL) {
-     return FALSE;
-  }
-
-  // Post the message to Bacula
-  PostMessage(hservwnd, message, wParam, lParam);
-  return TRUE;
-}
-
-
-// Static routine to show the Properties dialog for a currently-running
-// copy of Bacula, (usually a servicified version.)
-
-BOOL
-bacService::ShowProperties()
-{
-   return TRUE;
-}
-
-// Static routine to show the Default Properties dialog for a currently-running
-// copy of Bacula, (usually a servicified version.)
-
-BOOL
-bacService::ShowDefaultProperties()
-{
-   return TRUE;
-}
-
-// Static routine to show the About dialog for a currently-running
-// copy of Bacula, (usually a servicified version.)
-
-BOOL
-bacService::ShowAboutBox()
-{
-  // Post to the Bacula menu window
-  if (!PostToBacula(MENU_ABOUTBOX_SHOW, 0, 0)) {
-     MessageBox(NULL, _("No existing instance of Bacula could be contacted"), szAppName, MB_ICONEXCLAMATION | MB_OK);
-     return FALSE;
-  }
-  return TRUE;
-}
-
-// Static routine to show the Status dialog for a currently-running
-// copy of Bacula, (usually a servicified version.)
-
-BOOL
-bacService::ShowStatus()
-{
-  // Post to the Bacula menu window
-  if (!PostToBacula(MENU_STATUS_SHOW, 0, 0)) {
-     MessageBox(NULL, _("No existing instance of Bacula could be contacted"), szAppName, MB_ICONEXCLAMATION | MB_OK);
-     return FALSE;
-  }
-  return TRUE;
-}
-
-// SERVICE-MODE ROUTINES
-
-// Service-mode defines:
-
-// Executable name
-#define BAC_APPNAME            "bacula"
-
-// Internal service name
-#define BAC_SERVICENAME        "Bacula"
-
-// Displayed service name
-#define BAC_SERVICEDISPLAYNAME "Bacula File Server"
-
-// List other required serves 
-#define BAC_DEPENDENCIES __TEXT("tcpip\0afd\0+File System\0") 
-
-
-// Internal service state
-SERVICE_STATUS          g_srvstatus;       // current status of the service
-SERVICE_STATUS_HANDLE   g_hstatus;
-DWORD                   g_error = 0;
-DWORD                   g_servicethread = 0;
-char*                   g_errortext[256];
-
-
-// Forward defines of internal service functions
-void WINAPI ServiceMain(DWORD argc, char **argv);
-DWORD WINAPI ServiceWorkThread(LPVOID lpwThreadParam);
-void ServiceStop();
-void WINAPI ServiceCtrl(DWORD ctrlcode);
-bool WINAPI CtrlHandler (DWORD ctrltype);
-BOOL ReportStatus(DWORD state, DWORD exitcode, DWORD waithint);
-
-// ROUTINE TO QUERY WHETHER THIS PROCESS IS RUNNING AS A SERVICE OR NOT
-
-BOOL    g_servicemode = FALSE;
-
-BOOL
-bacService::RunningAsService()
-{
-   return g_servicemode;
-}
-
-BOOL
-bacService::KillRunningCopy()
-{
-  while (PostToBacula(WM_CLOSE, 0, 0))
-      {  }
-  return TRUE;
-}
-
-// SERVICE MAIN ROUTINE
-int
-bacService::BaculaServiceMain()
-{
-   // Mark that we are a service
-   g_servicemode = TRUE;
-
-   // How to run as a service depends upon the OS being used
-   switch (g_platform_id) {
-
-   // Windows 95/98/Me
-   case VER_PLATFORM_WIN32_WINDOWS:
-      {
-      // Obtain a handle to the kernel library
-      HINSTANCE kerneldll = LoadLibrary("KERNEL32.DLL");
-      if (kerneldll == NULL) {
-         MessageBox(NULL, _("KERNEL32.DLL not found: Bacula service not started"), 
-             "Bacula Service", MB_OK);
-         break;
-      }
-
-      // And find the 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"),
-            "Bacula Service", MB_OK);
-         log_error_message(_("Registry service not found")); 
-         break;
-      }
-      
-      // Register this process with the OS as a service!
-      RegisterService(0, 1);
-
-      // Run the main program as a service
-      BaculaAppMain();
-
-      // Then remove the service from the system service table
-      RegisterService(0, 0);
-
-      // Free the kernel library
-      FreeLibrary(kerneldll);
-      break;
-      }
-
-
-   // Windows NT, Win2K, WinXP 
-   case VER_PLATFORM_WIN32_NT:
-      {
-      // Create a service entry table
-      SERVICE_TABLE_ENTRY dispatchTable[] = {
-         {BAC_SERVICENAME, (LPSERVICE_MAIN_FUNCTION)ServiceMain},
-         {NULL, NULL}
-      };
-
-      // Call the service control dispatcher with our entry table
-      if (!StartServiceCtrlDispatcher(dispatchTable)) {
-         log_error_message(_("StartServiceCtrlDispatcher failed."));
-      }
-      break;
-      } /* end case */
-   } /* end switch */
-   return 0;
-}
-
-// SERVICE MAIN ROUTINE - NT ONLY !!!
-// NT/Win2K/WinXP ONLY !!!
-void WINAPI ServiceMain(DWORD argc, char **argv)
-{
-    DWORD dwThreadID;
-
-    // Register the service control handler
-    g_hstatus = RegisterServiceCtrlHandler(BAC_SERVICENAME, ServiceCtrl);
-
-    if (g_hstatus == 0) {
-       log_error_message(_("RegisterServiceCtlHandler failed")); 
-       MessageBox(NULL, _("Contact Register Service Handler failure"),
-          "Bacula service", MB_OK);
-       return;
-    }
-
-     // Set up some standard service state values
-    g_srvstatus.dwServiceType = SERVICE_WIN32 | SERVICE_INTERACTIVE_PROCESS;
-    g_srvstatus.dwServiceSpecificExitCode = 0;
-
-        // Give this status to the SCM
-    if (!ReportStatus(
-            SERVICE_START_PENDING,          // Service state
-            NO_ERROR,                       // Exit code type
-            45000)) {                       // Hint as to how long Bacula should have hung before you assume error
-
-        ReportStatus(SERVICE_STOPPED, g_error,  0);
-        log_error_message(_("ReportStatus STOPPED failed 1")); 
-        return;
-    }
-
-        // Now start the service for real
-    (void)CreateThread(NULL, 0, ServiceWorkThread, NULL, 0, &dwThreadID);
-    return;
-}
-
-// SERVICE START ROUTINE - thread that calls BaculaAppMain
-//   NT ONLY !!!!
-DWORD WINAPI ServiceWorkThread(LPVOID lpwThreadParam)
-{
-
-    // Save the current thread identifier
-    g_servicethread = GetCurrentThreadId();
-
-    // report the status to the service control manager.
-    //
-    if (!ReportStatus(
-          SERVICE_RUNNING,       // service state
-          NO_ERROR,              // exit code
-          0)) {                  // wait hint
-       MessageBox(NULL, _("Report Service failure"), "Bacula Service", MB_OK);
-       log_error_message("ReportStatus RUNNING failed"); 
-       return 0;
-    }
-
-    /* Call Bacula main code */
-    BaculaAppMain();
-
-    /* Mark that we're no longer running */
-    g_servicethread = 0;
-
-    /* Tell the service manager that we've stopped */
-    ReportStatus(SERVICE_STOPPED, g_error, 0);
-    return 0;
-}
-
-
-// SERVICE STOP ROUTINE - post a quit message to the relevant thread
-void ServiceStop()
-{
-   // Post a quit message to the main service thread
-   if (g_servicethread != 0) {
-      PostThreadMessage(g_servicethread, WM_QUIT, 0, 0);
-   }
-}
-
-// SERVICE INSTALL ROUTINE
-int
-bacService::InstallService()
-{
-   const int pathlength = 2048;
-   char path[pathlength];
-   char servicecmd[pathlength];
-   int len;
-
-   // Get the filename of this executable
-   if (GetModuleFileName(NULL, path, pathlength-(strlen(BaculaRunService)+2)) == 0) {
-      MessageBox(NULL, _("Unable to install Bacula service"), szAppName, MB_ICONEXCLAMATION | MB_OK);
-      return 0;
-   }
-
-   // Append the service-start flag to the end of the path:
-   if ((int)strlen(path) + 20 + (int)strlen(BaculaRunService) < pathlength) {
-      sprintf(servicecmd, "\"%s\" %s -c \"%s\"", path, BaculaRunService, path);
-      len = strlen(servicecmd) - 1;
-      for ( ; len > 0; len--) {
-         if (servicecmd[len] == '\\') {
-            servicecmd[len] = 0;
-            break;
-         }
-         servicecmd[len] = 0;
-      }
-      strcat(servicecmd, "\\bacula-fd.conf");
-
-   } else {
-      log_error_message(_("Service command length too long")); 
-      MessageBox(NULL, _("Service command length too long. Service not registered."),
-          szAppName, MB_ICONEXCLAMATION | MB_OK);
-      return 0;
-   }
-
-   // How to add the Bacula service depends upon the OS
-   switch (g_platform_id) {
-
-   // Windows 95/98/Me
-   case VER_PLATFORM_WIN32_WINDOWS:
-      // Locate the RunService registry entry
-      HKEY runservices;
-      if (RegCreateKey(HKEY_LOCAL_MACHINE, 
-              "Software\\Microsoft\\Windows\\CurrentVersion\\RunServices",
-              &runservices) != ERROR_SUCCESS) {
-         log_error_message(_("Cannot write System Registry")); 
-         MessageBox(NULL, _("The System Registry could not be updated - the Bacula service was not installed"), szAppName, MB_ICONEXCLAMATION | MB_OK);
-         break;
-      }
-
-      // Attempt to add a Bacula key
-      if (RegSetValueEx(runservices, szAppName, 0, REG_SZ, (unsigned char *)servicecmd, strlen(servicecmd)+1) != ERROR_SUCCESS) {
-         RegCloseKey(runservices);
-         log_error_message(_("Cannot add Bacula key to System Registry")); 
-         MessageBox(NULL, _("The Bacula service could not be installed"), szAppName, MB_ICONEXCLAMATION | MB_OK);
-         break;
-      }
-
-      RegCloseKey(runservices);
-
-      // We have successfully installed the service!
-      if (!silent) {
-         MessageBox(NULL,
-              _("The Bacula File service 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. "),
-              szAppName,
-              MB_ICONINFORMATION | MB_OK);
-      }
-      break;
-
-   // Windows NT, Win2K, WinXP
-   case VER_PLATFORM_WIN32_NT:
-      SC_HANDLE   hservice;
-      SC_HANDLE   hsrvmanager;
-
-      // Open the default, local Service Control Manager database
-      hsrvmanager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
-      if (hsrvmanager == NULL) {
-         log_error_message("OpenSCManager failed"); 
-         MessageBox(NULL,
-            _("The Service Control Manager could not be contacted - the Bacula service was not installed"),
-            szAppName, MB_ICONEXCLAMATION | MB_OK);
-         break;
-      }
-
-      // Create an entry for the Bacula service
-      hservice = CreateService(
-              hsrvmanager,                    // SCManager database
-              BAC_SERVICENAME,                // name of service
-              BAC_SERVICEDISPLAYNAME,         // name to display
-              SERVICE_ALL_ACCESS,             // desired access
-              SERVICE_WIN32_OWN_PROCESS | SERVICE_INTERACTIVE_PROCESS,
-                                                                      // service type
-              SERVICE_AUTO_START,             // start type
-              SERVICE_ERROR_NORMAL,           // error control type
-              servicecmd,                     // service's binary
-              NULL,                           // no load ordering group
-              NULL,                           // no tag identifier
-              BAC_DEPENDENCIES,               // dependencies
-              NULL,                           // LocalSystem account
-              NULL);                          // no password
-      if (hservice == NULL) {
-         CloseServiceHandle(hsrvmanager);
-         log_error_message("CreateService failed"); 
-         MessageBox(NULL,
-             _("The Bacula service could not be installed"),
-              szAppName, MB_ICONEXCLAMATION | MB_OK);
-         break;
-      }
-
-      set_service_description(hsrvmanager,hservice, 
-_("Provides file backup and restore services. Bacula -- the network backup solution."));
-
-      CloseServiceHandle(hsrvmanager);
-      CloseServiceHandle(hservice);
-
-      // Everything went fine
-      if (!silent) {
-         MessageBox(NULL,
-              _("The Bacula File service was successfully installed.\n"
-              "The service may be started from the Control Panel and will\n"
-              "automatically be run the next time this machine is rebooted."),
-              szAppName,
-              MB_ICONINFORMATION | MB_OK);
-      }
-      break;
-   default:
-      log_error_message("Unknown Windows System version"); 
-      MessageBox(NULL, 
-                 _("Unknown Windows operating system.\n"     
-                 "Cannot install Bacula service.\n"),
-                 szAppName, MB_ICONEXCLAMATION | MB_OK);
-       break;     
-   };
-
-   return 0;
-}
-
-
-// SERVICE REMOVE ROUTINE
-int
-bacService::RemoveService()
-{
-   // How to remove the Bacula service depends upon the OS
-   switch (g_platform_id) {
-
-   // Windows 95/98/Me
-   case VER_PLATFORM_WIN32_WINDOWS:
-      // Locate the RunService registry entry
-      HKEY runservices;
-      if (RegOpenKey(HKEY_LOCAL_MACHINE, 
-              "Software\\Microsoft\\Windows\\CurrentVersion\\RunServices",
-              &runservices) != ERROR_SUCCESS) {
-         MessageBox(NULL, 
-            _("Could not find registry entry.\nService probably not registerd - the Bacula service was not removed"), szAppName, MB_ICONEXCLAMATION | MB_OK);
-      } else {
-         // Attempt to delete the Bacula key
-         if (RegDeleteValue(runservices, szAppName) != ERROR_SUCCESS) {
-            RegCloseKey(runservices);
-            MessageBox(NULL, _("Could not delete Registry key.\nThe Bacula service could not be removed"), szAppName, MB_ICONEXCLAMATION | MB_OK);
-         }
-
-         RegCloseKey(runservices);
-         break;
-      }
-
-      // Try to kill any running copy of Bacula
-      if (!KillRunningCopy()) {
-         MessageBox(NULL,
-             _("Bacula could not be contacted, probably not running"),
-             szAppName, MB_ICONEXCLAMATION | MB_OK);
-         break;
-      }
-
-      // We have successfully removed the service!
-      if (!silent) {
-         MessageBox(NULL, _("The Bacula service has been removed"), szAppName, MB_ICONINFORMATION | MB_OK);
-      }
-      break;
-
-   // Windows NT, Win2K, WinXP
-   case VER_PLATFORM_WIN32_NT:
-      SC_HANDLE   hservice;
-      SC_HANDLE   hsrvmanager;
-
-      // Open the SCM
-      hsrvmanager = OpenSCManager(
-         NULL,                   // machine (NULL == local)
-         NULL,                   // database (NULL == default)
-         SC_MANAGER_ALL_ACCESS   // access required
-         );
-      if (hsrvmanager) {
-         hservice = OpenService(hsrvmanager, BAC_SERVICENAME, SERVICE_ALL_ACCESS);
-         if (hservice != NULL) {
-            SERVICE_STATUS status;
-
-            // Try to stop the Bacula service
-            if (ControlService(hservice, SERVICE_CONTROL_STOP, &status)) {
-               while(QueryServiceStatus(hservice, &status)) {
-                  if (status.dwCurrentState == SERVICE_STOP_PENDING) {
-                     Sleep(1000);
-                  } else {
-                     break;
-                  }
-               }
-
-               if (status.dwCurrentState != SERVICE_STOPPED) {
-                  MessageBox(NULL, _("The Bacula service could not be stopped"), szAppName, MB_ICONEXCLAMATION | MB_OK);
-               }
-            }
-
-            // Now remove the service from the SCM
-            if (DeleteService(hservice)) {
-               if (!silent) {
-                  MessageBox(NULL, _("The Bacula service has been removed"), szAppName, MB_ICONINFORMATION | MB_OK);
-               }
-            } else {
-               MessageBox(NULL, _("The Bacula service could not be removed"), szAppName, MB_ICONEXCLAMATION | MB_OK);
-            }
-
-            CloseServiceHandle(hservice);
-         } else {
-            MessageBox(NULL, _("The Bacula service could not be found"), szAppName, MB_ICONEXCLAMATION | MB_OK);
-         }
-
-         CloseServiceHandle(hsrvmanager);
-      } else {
-         MessageBox(NULL, _("The SCM could not be contacted - the Bacula service was not removed"), szAppName, MB_ICONEXCLAMATION | MB_OK);
-      }
-      break;
-   }
-   return 0;
-}
-
-// USEFUL SERVICE SUPPORT ROUTINES
-
-// Service control routine
-void WINAPI ServiceCtrl(DWORD ctrlcode)
-{
-    // What control code have we been sent?
-    switch(ctrlcode) {
-    case SERVICE_CONTROL_STOP:
-        // STOP : The service must stop
-        g_srvstatus.dwCurrentState = SERVICE_STOP_PENDING;
-        ServiceStop();
-        break;
-
-    case SERVICE_CONTROL_INTERROGATE:
-        // QUERY : Service control manager just wants to know our state
-        break;
-
-     default:
-        // Control code not recognised
-        break;
-    }
-
-    // Tell the control manager what we're up to.
-    ReportStatus(g_srvstatus.dwCurrentState, NO_ERROR, 0);
-}
-
-// Service manager status reporting
-BOOL ReportStatus(DWORD state,
-                  DWORD exitcode,
-                  DWORD waithint)
-{
-    static DWORD checkpoint = 1;
-    BOOL result = TRUE;
-
-    // If we're in the start state then we don't want the control manager
-    // sending us control messages because they'll confuse us.
-    if (state == SERVICE_START_PENDING) {
-       g_srvstatus.dwControlsAccepted = 0;
-    } else {
-       g_srvstatus.dwControlsAccepted = SERVICE_ACCEPT_STOP;
-    }
-
-    // Save the new status we've been given
-    g_srvstatus.dwCurrentState = state;
-    g_srvstatus.dwWin32ExitCode = exitcode;
-    g_srvstatus.dwWaitHint = waithint;
-
-    // Update the checkpoint variable to let the SCM know that we
-    // haven't died if requests take a long time
-    if ((state == SERVICE_RUNNING) || (state == SERVICE_STOPPED)) {
-       g_srvstatus.dwCheckPoint = 0;
-    } else {
-       g_srvstatus.dwCheckPoint = checkpoint++;
-    }
-
-    // Tell the SCM our new status
-    if (!(result = SetServiceStatus(g_hstatus, &g_srvstatus))) {
-       log_error_message(_("SetServiceStatus failed"));
-    }
-
-    return result;
-}
-
-// Error reporting
-void LogErrorMsg(char *message, char *fname, int lineno)
-{
-   char        msgbuff[256];
-   HANDLE      heventsrc;
-   char *      strings[32];
-   LPTSTR      msg;
-
-   // Get the error code
-   g_error = GetLastError();
-   FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|
-                 FORMAT_MESSAGE_FROM_SYSTEM,
-                 NULL,
-                 g_error,
-                 0,
-                 (LPTSTR)&msg,
-                 0,
-                 NULL);
-
-   // Use event logging to log the error
-   heventsrc = RegisterEventSource(NULL, BAC_SERVICENAME);
-
-   sprintf(msgbuff, _("\n\n%s error: %ld at %s:%d"), 
-      BAC_SERVICENAME, g_error, fname, lineno);
-   strings[0] = msgbuff;
-   strings[1] = message;
-   strings[2] = msg;
-
-   if (heventsrc != NULL) {
-      MessageBeep(MB_OK);
-
-      ReportEvent(
-              heventsrc,              // handle of event source
-              EVENTLOG_ERROR_TYPE,    // event type
-              0,                      // event category
-              0,                      // event ID
-              NULL,                   // current user's SID
-              3,                      // strings in 'strings'
-              0,                      // no bytes of raw data
-              (const char **)strings, // array of error strings
-              NULL);                  // no raw data
-
-      DeregisterEventSource(heventsrc);
-   }
-   LocalFree(msg);
-}
-typedef BOOL  (WINAPI * WinAPI)(SC_HANDLE, DWORD, LPVOID);
-
-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/bacula/src/filed/win32/winservice.h b/bacula/src/filed/win32/winservice.h
deleted file mode 100755 (executable)
index 157dea3..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-//  Copyright (C) 1999 AT&T Laboratories Cambridge. All Rights Reserved.
-//
-//  This file was part of the ups system.
-//
-//  The ups system 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
-//  (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.
-//
-//  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., 59 Temple Place - Suite 330, Boston, MA  02111-1307,
-//  USA.
-//
-// If the source code for the ups system is not available from the place
-// whence you received this file, check http://www.uk.research.att.com/vnc or contact
-// the authors on ups@uk.research.att.com for information on obtaining it.
-//
-// This file has been adapted to the Win32 version of Bacula
-// by Kern E. Sibbald.  Many thanks to ATT and James Weatherall,
-// the original author, for providing an excellent template.
-//
-// Copyright (C) 2000-2006 Kern E. Sibbald
-//
-
-
-// winservice.cpp
-
-// SERVICE-MODE CODE
-
-// This class provides access to service-oriented routines, under both
-// Windows NT and Windows 95.  Some routines only operate under one
-// OS, others operate under any OS.
-
-class bacService;
-
-#if (!defined(_win_bacService))
-#define _win_bacService
-
-// The NT-specific code wrapper class
-class bacService
-{
-public:
-        bacService();
-
-   // SERVICE INSTALL & START FUNCTIONS
-
-   // Routine called by WinMain to cause Bacula to be installed
-   // as a service.
-   static int BaculaServiceMain();
-
-   // Routine to install the Apcupsd service on the local machine
-   static int InstallService();
-
-   // Routine to remove the Apcupsd service from the local machine
-   static int RemoveService();
-
-   // SERVICE SUPPORT FUNCTIONS
-
-   // Routine to establish and return the currently logged in user name
-   static BOOL CurrentUser(char *buffer, UINT size);
-
-   // Routine to post a message to the currently running Apcupsd server
-   // to pass it a handle to the current user
-   static BOOL PostUserHelperMessage();
-   // Routine to process a user helper message
-   static BOOL ProcessUserHelperMessage(WPARAM wParam, LPARAM lParam);
-
-   // Routines to establish which OS we're running on
-   static BOOL IsWin95();
-   static BOOL IsWinNT();
-
-   // Routine to establish whether the current instance is running
-   // as a service or not
-   static BOOL RunningAsService();
-
-   // Routine to kill any other running copy of Apcupsd
-   static BOOL KillRunningCopy();
-
-   // Routine to set the current thread into the given desktop
-   static BOOL SelectHDESK(HDESK newdesktop);
-
-   // Routine to set the current thread into the named desktop,
-   // or the input desktop if no name is given
-   static BOOL SelectDesktop(char *name);
-
-   // Routine to establish whether the current thread desktop is the
-   // current user input one
-   static BOOL InputDesktopSelected();
-
-   // Routine to fake a CtrlAltDel to winlogon when required.
-   // *** This is a nasty little hack...
-   static BOOL SimulateCtrlAltDel();
-
-   // Routine to make any currently running version of Apcupsd show its
-   // Properties dialog, to allow the user to make changes to their settings
-   static BOOL ShowProperties();
-
-   // Routine to make any currently running version of Apcupsd show the
-   // Properties dialog for the default settings, so the user can make changes
-   static BOOL ShowDefaultProperties();
-
-   // Routine to make the an already running copy of Apcupsd bring up its
-   // About box so you can check the version!
-   static BOOL ShowAboutBox();
-
-   // Routine to make the an already running copy of Apcupsd bring up its
-   // Status dialog
-   static BOOL ShowStatus();
-
-   // Routine to make the an already running copy of Apcupsd bring up its
-   // Events dialog
-   static BOOL ShowEvents();
-
-   // Routine to make an already running copy of Apcupsd form an outgoing
-   // connection to a new ups client
-   static BOOL PostAddNewClient(unsigned long ipaddress);
-};
-
-#endif
diff --git a/bacula/src/filed/win32/winstat.cpp b/bacula/src/filed/win32/winstat.cpp
deleted file mode 100755 (executable)
index 45e3c41..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Bacula File daemon Status Dialog box
- *
- *  Inspired from the VNC code by ATT.
- *
- * Copyright (2000) Kern E. Sibbald
- *
- */
-/*
-   Copyright (C) 2000-2003 Kern Sibbald and John Walker
-
-   This program is free software; you can redistribute it and/or
-   modify it under the terms of the GNU General Public License
-   as published by the Free Software Foundation; either version 2
-   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.
-
-   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., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
- */
-
-#include "bacula.h"
-#include "winbacula.h"
-#include "winstat.h"
-#include "winres.h"
-
-extern void FillStatusBox(HWND hwnd, int id_list);
-
-bacStatus::bacStatus()
-{
-   visible = FALSE;
-}
-
-bacStatus::~bacStatus()
-{
-}
-
-
-/* Dialog box handling functions */
-void
-bacStatus::Show(BOOL show)
-{
-   if (show && !visible) {
-      DialogBoxParam(hAppInstance, MAKEINTRESOURCE(IDD_STATUS), NULL,
-          (DLGPROC)DialogProc, (LONG)this);
-   }
-}
-
-BOOL CALLBACK
-bacStatus::DialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
-{
-   /* Get class pointer from user data */
-   bacStatus *_this = (bacStatus *)GetWindowLong(hwnd, GWL_USERDATA);
-
-   switch (uMsg) {
-   case WM_INITDIALOG:
-      /* Set class pointer in user data */
-      SetWindowLong(hwnd, GWL_USERDATA, lParam);
-      _this = (bacStatus *)lParam;
-
-      /* show the dialog */
-      SetForegroundWindow(hwnd);
-
-      /* Update every 5 seconds */
-      SetTimer(hwnd, 1, 5000, NULL); 
-      _this->visible = TRUE;
-      FillStatusBox(hwnd, IDC_LIST);
-      return TRUE;
-
-   case WM_TIMER:
-      FillStatusBox(hwnd, IDC_LIST);
-      return TRUE;
-
-   case WM_COMMAND:
-      switch (LOWORD(wParam)) {
-      case IDCANCEL:
-      case IDOK:
-         KillTimer(hwnd, 1);
-         EndDialog(hwnd, TRUE);
-         _this->visible = FALSE;
-         return TRUE;
-      }
-      break;
-
-   case WM_DESTROY:
-      KillTimer(hwnd, 1);
-      EndDialog(hwnd, FALSE);
-      _this->visible = FALSE;
-      return TRUE;
-   }
-   return 0;
-}
diff --git a/bacula/src/filed/win32/winstat.h b/bacula/src/filed/win32/winstat.h
deleted file mode 100755 (executable)
index 3486a00..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Bacula Status Dialog header file
- *
- */
-/*
-   Copyright (C) 2000-2003 Kern Sibbald and John Walker
-
-   This program is free software; you can redistribute it and/or
-   modify it under the terms of the GNU General Public License as
-   published by the Free Software Foundation; either version 2 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.
-
-   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., 59 Temple Place - Suite 330, Boston,
-   MA 02111-1307, USA.
-
- */
-
-
-class bacStatus;
-
-#ifndef _WINSTAT_H_
-#define _WINSTAT_H_
-
-class bacStatus
-{
-public:
-   bacStatus();
-   ~bacStatus();
-
-   /* The Windows callback routine */
-   static BOOL CALLBACK DialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
-
-   void Show(BOOL show);
-
-   BOOL visible;
-};
-
-#endif
diff --git a/bacula/src/filed/win32/wintray.cpp b/bacula/src/filed/win32/wintray.cpp
deleted file mode 100755 (executable)
index 044d34b..0000000
+++ /dev/null
@@ -1,353 +0,0 @@
-//  Copyright (C) 1999 AT&T Laboratories Cambridge. All Rights Reserved.
-//
-//  This file was part of the vnc system.
-//
-//  The vnc system 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
-//  (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.
-//
-//  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., 59 Temple Place - Suite 330, Boston, MA  02111-1307,
-//  USA.
-//
-// If the source code for the vnc system is not available from the place 
-// whence you received this file, check http://www.uk.research.att.com/vnc or contact
-// the authors on vnc@uk.research.att.com for information on obtaining it.
-//
-// This file has been adapted to the Win32 version of Bacula
-// by Kern E. Sibbald.  Many thanks to ATT and James Weatherall,
-// the original author, for providing an excellent template.
-//
-// Copyright 2000-2004, Kern E. Sibbald
-//
-
-
-
-// Tray
-
-// Implementation of a system tray icon & menu for Bacula
-
-#include "bacula.h"
-#include "jcr.h"
-#include "winbacula.h"
-#include "winservice.h"
-#include "winres.h"
-#include "wintray.h"
-
-// Constants
-#ifdef properties_implemented
-const UINT MENU_PROPERTIES_SHOW = RegisterWindowMessage("Bacula.Properties.User.Show");
-const UINT MENU_DEFAULT_PROPERTIES_SHOW = RegisterWindowMessage("Bacula.Properties.Default.Show");
-#endif
-const UINT MENU_ABOUTBOX_SHOW = RegisterWindowMessage("Bacula.AboutBox.Show");
-const UINT MENU_STATUS_SHOW = RegisterWindowMessage("Bacula.Status.Show");
-const UINT MENU_EVENTS_SHOW = RegisterWindowMessage("Bacula.Events.Show");
-const UINT MENU_SERVICEHELPER_MSG = RegisterWindowMessage("Bacula.ServiceHelper.Message");
-const UINT MENU_ADD_CLIENT_MSG = RegisterWindowMessage("Bacula.AddClient.Message");
-const char *MENU_CLASS_NAME = "Bacula Tray Icon";
-
-extern void terminate_filed(int sig);
-extern char *bac_status(char *buf, int buf_len);
-extern int bacstat;
-
-// Implementation
-
-bacMenu::bacMenu()
-{
-   // Create a dummy window to handle tray icon messages
-   WNDCLASSEX wndclass;
-
-   wndclass.cbSize                 = sizeof(wndclass);
-   wndclass.style                  = 0;
-   wndclass.lpfnWndProc    = bacMenu::WndProc;
-   wndclass.cbClsExtra             = 0;
-   wndclass.cbWndExtra             = 0;
-   wndclass.hInstance              = hAppInstance;
-   wndclass.hIcon                  = LoadIcon(NULL, IDI_APPLICATION);
-   wndclass.hCursor                = LoadCursor(NULL, IDC_ARROW);
-   wndclass.hbrBackground  = (HBRUSH) GetStockObject(WHITE_BRUSH);
-   wndclass.lpszMenuName   = (const char *) NULL;
-   wndclass.lpszClassName  = MENU_CLASS_NAME;
-   wndclass.hIconSm                = LoadIcon(NULL, IDI_APPLICATION);
-
-   RegisterClassEx(&wndclass);
-
-   m_hwnd = CreateWindow(MENU_CLASS_NAME,
-                           MENU_CLASS_NAME,
-                           WS_OVERLAPPEDWINDOW,
-                           CW_USEDEFAULT,
-                           CW_USEDEFAULT,
-                           200, 200,
-                           NULL,
-                           NULL,
-                           hAppInstance,
-                           NULL);
-   if (m_hwnd == NULL) {
-      PostQuitMessage(0);
-      return;
-   }
-
-   // record which client created this window
-   SetWindowLong(m_hwnd, GWL_USERDATA, (LONG) this);
-
-   // Timer to trigger icon updating
-   SetTimer(m_hwnd, 1, 5000, NULL);
-
-   // Load the icons for the tray
-   m_idle_icon    = LoadIcon(hAppInstance, MAKEINTRESOURCE(IDI_IDLE));
-   m_running_icon = LoadIcon(hAppInstance, MAKEINTRESOURCE(IDI_RUNNING));
-   m_error_icon   = LoadIcon(hAppInstance, MAKEINTRESOURCE(IDI_JOB_ERROR));
-   m_warn_icon    = LoadIcon(hAppInstance, MAKEINTRESOURCE(IDI_JOB_WARNING));
-
-   // Load the popup menu
-   m_hmenu = LoadMenu(hAppInstance, MAKEINTRESOURCE(IDR_TRAYMENU));
-
-   // Install the tray icon!
-   AddTrayIcon();
-}
-
-bacMenu::~bacMenu()
-{
-   // Remove the tray icon
-   SendTrayMsg(NIM_DELETE, 0);
-        
-   // Destroy the loaded menu
-   if (m_hmenu != NULL)
-      DestroyMenu(m_hmenu);
-}
-
-void
-bacMenu::AddTrayIcon()
-{
-   SendTrayMsg(NIM_ADD, bacstat);
-}
-
-void
-bacMenu::DelTrayIcon()
-{
-   SendTrayMsg(NIM_DELETE, 0);
-}
-
-
-void
-bacMenu::UpdateTrayIcon(int bacstat)
-{
-   (void *)bac_status(NULL, 0);
-   SendTrayMsg(NIM_MODIFY, bacstat);
-}
-
-void
-bacMenu::SendTrayMsg(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 resource string as tip if there is one
-   if (LoadString(hAppInstance, IDI_BACULA, m_nid.szTip, sizeof(m_nid.szTip))) {
-       m_nid.uFlags |= NIF_TIP;
-   }
-
-   // Try to add the Bacula status to the tip string, if possible
-   if (m_nid.uFlags & NIF_TIP) {
-       bac_status(m_nid.szTip, sizeof(m_nid.szTip));
-   }
-
-   // Send the message
-   if (Shell_NotifyIcon(msg, &m_nid)) {
-      EnableMenuItem(m_hmenu, ID_CLOSE, MF_ENABLED);
-   } else {
-      if (!bacService::RunningAsService()) {
-         if (msg == NIM_ADD) {
-            // The tray icon couldn't be created, so use the Properties dialog
-            // as the main program window
-         // removed because it causes quit when not running as a
-         // service in use with BartPe.
-         // PostQuitMessage(0);
-         }
-      }
-   }
-}
-
-// Process window messages
-LRESULT CALLBACK bacMenu::WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
-{
-   // This is a static method, so we don't know which instantiation we're 
-   // dealing with. We use Allen Hadden's (ahadden@taratec.com) suggestion 
-   // from a newsgroup to get the pseudo-this.
-   bacMenu *_this = (bacMenu *) GetWindowLong(hwnd, GWL_USERDATA);
-
-   switch (iMsg) {
-
-   // Every five seconds, a timer message causes the icon to update
-   case WM_TIMER:
-      // *** HACK for running servicified
-      if (bacService::RunningAsService()) {
-          // Attempt to add the icon if it's not already there
-          _this->AddTrayIcon();
-      }
-
-      // Update the icon
-      _this->UpdateTrayIcon(bacstat);
-     break;
-
-   // STANDARD MESSAGE HANDLING
-   case WM_CREATE:
-      return 0;
-
-   case WM_COMMAND:
-      // User has clicked an item on the tray menu
-      switch (LOWORD(wParam)) {
-      case ID_STATUS:
-         // Show the status dialog
-         _this->m_status.Show(TRUE);
-         _this->UpdateTrayIcon(bacstat);
-         break;
-
-      case ID_EVENTS:
-         // Show the Events dialog
-         _this->m_events.Show(TRUE);
-         _this->UpdateTrayIcon(bacstat);
-         break;
-
-
-      case ID_KILLCLIENTS:
-         // Disconnect all currently connected clients
-         break;
-
-      case ID_ABOUT:
-         // Show the About box
-         _this->m_about.Show(TRUE);
-         break;
-
-      case ID_CLOSE:
-         // User selected Close from the tray menu
-         PostMessage(hwnd, WM_CLOSE, 0, 0);
-         break;
-
-      }
-      return 0;
-
-   case WM_TRAYNOTIFY:
-      // User has clicked on the tray icon or the menu
-      {
-         // Get the submenu to use as a pop-up menu
-         HMENU submenu = GetSubMenu(_this->m_hmenu, 0);
-
-         // What event are we responding to, RMB click?
-         if (lParam==WM_RBUTTONUP) {
-            if (submenu == NULL) {
-                    return 0;
-            }
-
-            // Make the first menu item the default (bold font)
-            SetMenuDefaultItem(submenu, 0, TRUE);
-            
-            // Get the current cursor position, to display the menu at
-            POINT mouse;
-            GetCursorPos(&mouse);
-
-            // There's a "bug"
-            // (Microsoft calls it a feature) in Windows 95 that requires calling
-            // SetForegroundWindow. To find out more, search for Q135788 in MSDN.
-            //
-            SetForegroundWindow(_this->m_nid.hWnd);
-
-            // Display the menu at the desired position
-            TrackPopupMenu(submenu,
-                            0, mouse.x, mouse.y, 0,
-                            _this->m_nid.hWnd, NULL);
-
-            return 0;
-         }
-         
-         // Or was there a LMB double click?
-         if (lParam==WM_LBUTTONDBLCLK) {
-             // double click: execute first menu item
-             SendMessage(_this->m_nid.hWnd,
-                         WM_COMMAND, 
-                         GetMenuItemID(submenu, 0),
-                         0);
-         }
-
-         return 0;
-      }
-
-   case WM_CLOSE:
-      terminate_filed(0);
-      break;
-
-   case WM_DESTROY:
-      // The user wants Bacula to quit cleanly...
-      PostQuitMessage(0);
-      return 0;
-
-   case WM_QUERYENDSESSION:
-      // Are we running as a system service?
-      // Or is the system shutting down (in which case we should check anyway!)
-      if ((!bacService::RunningAsService()) || (lParam == 0)) {
-         // No, so we are about to be killed
-
-         // If there are remote connections then we should verify
-         // that the user is happy about killing them.
-
-         // Finally, post a quit message, just in case
-         PostQuitMessage(0);
-         return TRUE;
-      }
-      return TRUE;
-
-   
-   default:
-      if (iMsg == MENU_ABOUTBOX_SHOW) {
-         // External request to show our About dialog
-         PostMessage(hwnd, WM_COMMAND, MAKELONG(ID_ABOUT, 0), 0);
-         return 0;
-      }
-      if (iMsg == MENU_STATUS_SHOW) {
-         // External request to show our status
-         PostMessage(hwnd, WM_COMMAND, MAKELONG(ID_STATUS, 0), 0);
-         return 0;
-      }
-   }
-
-   // Message not recognised
-   return DefWindowProc(hwnd, iMsg, wParam, lParam);
-}
diff --git a/bacula/src/filed/win32/wintray.h b/bacula/src/filed/win32/wintray.h
deleted file mode 100755 (executable)
index 2f40492..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-//  Copyright (C) 1999 AT&T Laboratories Cambridge. All Rights Reserved.
-//
-//  This file was part of the VNC system.
-//
-//  The VNC system 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
-//  (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.
-//
-//  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., 59 Temple Place - Suite 330, Boston, MA  02111-1307,
-//  USA.
-//
-// If the source code for the VNC system is not available from the place
-// whence you received this file, check http://www.uk.research.att.com/vnc or contact
-// the authors on vnc@uk.research.att.com for information on obtaining it.
-//
-// This file has been adapted to the Win32 version of Bacula
-// by Kern E. Sibbald.  Many thanks to ATT and James Weatherall,
-// the original author, for providing an excellent template.
-//
-// Copyright (2000) Kern E. Sibbald
-//
-
-
-
-// winMenu
-
-// This class handles creation of a system-tray icon & menu
-
-class bacMenu;
-
-#if (!defined(_win_bacMENU))
-#define _win_bacMENU
-
-#include <lmcons.h>
-#include "winabout.h"
-#include "winstat.h"
-#include "winevents.h"
-
-// Constants
-extern const UINT MENU_ABOUTBOX_SHOW;
-extern const UINT MENU_STATUS_SHOW;
-extern const UINT MENU_EVENTS_SHOW;
-extern const UINT MENU_SERVICEHELPER_MSG;
-extern const UINT MENU_ADD_CLIENT_MSG;
-extern const char *MENU_CLASS_NAME;
-
-// The tray menu class itself
-class bacMenu
-{
-public:
-   bacMenu();
-   ~bacMenu();
-protected:
-   // Tray icon handling
-   void AddTrayIcon();
-   void DelTrayIcon();
-   void UpdateTrayIcon(int battstat);
-   void SendTrayMsg(DWORD msg, int battstat);
-
-   // Message handler for the tray window
-   static LRESULT CALLBACK WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam);
-
-   // Fields
-protected:
-
-   // About dialog for this server
-   bacAbout  m_about;
-
-   // Status dialog for this server
-   bacStatus m_status;
-
-   bacEvents m_events;
-
-   HWND  m_hwnd;
-   HMENU m_hmenu;
-   NOTIFYICONDATA m_nid;
-
-   // The icon handles
-   HICON m_idle_icon;
-   HICON m_running_icon;
-   HICON m_error_icon;
-   HICON m_warn_icon;
-};
-
-
-#endif
index 2a84fc9253abc79c3b8a3a88383baefeebd8087f..d1e2950faaded19f499dc059f084b7b3e5e45307 100644 (file)
@@ -22,7 +22,7 @@ first_rule: all
 dummy:
 
 #
-LIBSRCS = find.c match.c find_one.c attibs.c create_file.c \
+LIBSRCS = find.c match.c find_one.c attribs.c create_file.c \
          bfile.c drivetype.c enable_priv.c fstype.c makepath.c save-cwd.c
 LIBOBJS = find.o match.o find_one.o attribs.o create_file.o \
          bfile.o drivetype.o enable_priv.o fstype.o makepath.o save-cwd.o
diff --git a/bacula/src/findlib/Makefile.mingw b/bacula/src/findlib/Makefile.mingw
deleted file mode 100644 (file)
index 46fdb6d..0000000
+++ /dev/null
@@ -1,162 +0,0 @@
-#
-#  Find files library Makefile
-#
-
-# autoconf/Make.common.in       -*- Makefile -*-
-# release date (man), LSM date, version number/name, current maintainer
-DATE="15 Apr 2004"
-LSMDATE=15Apr04
-VERSION=1.35.0
-VERNAME=bacula-$(VERSION)#
-MAINT=Kern Sibbald#
-MAINTEMAIL=<kern@sibbald.com>#
-WEBMAINT=#
-WEBMAINTEMAIL=#
-WEBPAGE=#
-FTPSITENAME=#
-FTPSITEDIR=#
-#-------------------------------------------------------------------------
-
-SHELL = /bin/sh
-
-# Installation target directories & other installation stuff
-prefix = 
-exec_prefix = 
-binprefix =
-manprefix =
-sbindir = /sbin
-sysconfdir = /etc/bacula
-scriptdir = /etc/bacula
-mandir = ${prefix}/man/man1
-manext = 1
-
-# Tools & program stuff
-CC = gcc
-CPP = gcc -E
-CXX = g++
-MV = /usr/bin/mv
-RM = /usr/bin/rm
-RMF = /usr/bin/rm -f
-CP = /usr/bin/cp
-SED = /usr/bin/sed
-AWK = /usr/bin/awk
-ECHO = /usr/bin/echo
-CMP = /usr/bin/cmp
-TBL = /usr/bin/tbl
-AR = ar
-RANLIB = ranlib
-INSTALL = /usr/bin/install -c
-# add the -s to the following in PRODUCTION mode
-INSTALL_PROGRAM = /usr/bin/install -c -m 754
-INSTALL_DATA = /usr/bin/install -c -m 644
-INSTALL_SCRIPT = /usr/bin/install -c -m 754
-INSTALL_CONFIG = /usr/bin/install -c -m 640
-
-# Flags & libs
-CFLAGS = -g -O2 
-CPPFLAGS = 
-LDFLAGS = -O
-TTOOL_LDFLAGS = 
-DEFS = -DHAVE_WIN32 -DHAVE_MINGW
-LIBS = -lpthread
-DINCLUDE = 
-DLIB = 
-DB_LIBS = 
-
-# Windows (cygwin) flags 
-WCFLAGS = -mwindows
-WLDFLAGS = -mwindows
-
-# X Include directory
-#XINC =  @XPM_CFLAGS@
-
-# extra libraries needed by X on some systems, X library location
-#XLIB =  @XPM_LIBS@ -lX11 
-
-# End of common section of the Makefile
-#-------------------------------------------------------------------------
-
-srcdir =       .
-VPATH =        .
-.PATH:         .
-
-# one up
-basedir = ..
-# top dir
-topdir = ../..
-# this dir relative to top dir
-thisdir = src/findlib
-
-DEBUG=
-
-first_rule: all
-dummy:
-
-#
-LIBSRCS = find.c match.c find_one.c attibs.c create_file.c \
-         bfile.c enable_priv.c fstype.c makepath.c save-cwd.c winapi.c
-LIBOBJS = find.o match.o find_one.o attribs.o create_file.o \
-         bfile.o enable_priv.o fstype.o makepath.o save-cwd.o winapi.o
-
-.SUFFIXES:     .c .o
-.PHONY:
-.DONTCARE:
-
-# inference rules
-.c.o:
-       $(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) -I$(srcdir) -I$(basedir) -I../win32/compat $(DINCLUDE) $(CFLAGS) $<
-#-------------------------------------------------------------------------
-all: libfind.a
-       @echo "==== Make of findlib is good ===="
-       @echo " "
-
-libfind.a: $(LIBOBJS)
-       $(RMF) $@
-       $(AR) cr $@ $(LIBOBJS)
-       $(RANLIB) $@
-
-install:
-
-uninstall:
-
-
-clean:
-       $(RMF) find core a.out *.a *.o *.bak *~ *.intpro *.extpro 1 2 3
-
-realclean: clean
-       $(RMF) tags
-
-distclean: realclean
-       if test $(srcdir) = .; then $(MAKE) realclean; fi
-       (cd $(srcdir); $(RMF) Makefile; $(RMF) -r CVS)
-
-devclean: realclean
-       if test $(srcdir) = .; then $(MAKE) realclean; fi
-       (cd $(srcdir); $(RMF) Makefile)
-
-install:
-
-
-uninstall:
-
-
-
-# Semi-automatic generation of dependencies:
-# Use gcc -M  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
-       @$(CC) -S -M $(CPPFLAGS) $(XINC) -I$(srcdir) -I$(basedir) $(SQL_INC) *.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
index 6a81ac5dac3e77b4275c9548334af0415cd9a386..ab9a87f51d61de352d0041bde277d872bd33c411 100755 (executable)
@@ -710,17 +710,4 @@ void win_error(JCR *jcr, char *prefix, DWORD lerror)
    }
    LocalFree(msg);
 }
-
-
-/* Conversion of a Unix filename to a Win32 filename */
-extern void conv_unix_to_win32_path(const char *path, char *win32_path, DWORD dwSize);
-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_win32_path(name, *win32_name, dwSize);
-}
-
 #endif  /* HAVE_WIN32 */
index 827d52f5394e84154cde738f078d049f0d97ba33..ad6c837fe0ab72c111a8eabbc7408ce320abe6bb 100644 (file)
@@ -32,7 +32,7 @@ LIBSRCS = alloc.c attr.c base64.c berrno.c bsys.c bget_msg.c \
          res.c rwlock.c scan.c serial.c sha1.c \
          semlock.c signal.c smartall.c tls.c tree.c \
          util.c var.c watchdog.c workq.c btimers.c \
-         address_conf.c pythonlib.c winapi.c
+         address_conf.c pythonlib.c
 
 
 LIBOBJS = alloc.o attr.o base64.o berrno.o bsys.o bget_msg.o \
@@ -45,7 +45,7 @@ LIBOBJS = alloc.o attr.o base64.o berrno.o bsys.o bget_msg.o \
          res.o rwlock.o scan.o serial.o sha1.o \
          semlock.o signal.o smartall.o tls.o tree.o \
          util.o var.o watchdog.o workq.o btimers.o \
-         address_conf.o pythonlib.o winapi.o
+         address_conf.o pythonlib.o
 
 
 EXTRAOBJS = @OBJLIST@
diff --git a/bacula/src/lib/Makefile.mingw b/bacula/src/lib/Makefile.mingw
deleted file mode 100644 (file)
index dab73eb..0000000
+++ /dev/null
@@ -1,232 +0,0 @@
-# $Id$
-
-# autoconf/Make.common.in       -*- Makefile -*-
-# release date (man), LSM date, version number/name, current maintainer
-DATE="15 Apr 2004"
-LSMDATE=15Apr04
-VERSION=1.35.0
-VERNAME=bacula-$(VERSION)#
-MAINT=Kern Sibbald#
-MAINTEMAIL=<kern@sibbald.com>#
-WEBMAINT=#
-WEBMAINTEMAIL=#
-WEBPAGE=#
-FTPSITENAME=#
-FTPSITEDIR=#
-#-------------------------------------------------------------------------
-
-SHELL = /bin/sh
-
-# Installation target directories & other installation stuff
-prefix = 
-exec_prefix = 
-binprefix =
-manprefix =
-sbindir = /sbin
-sysconfdir = /etc/bacula
-scriptdir = /etc/bacula
-mandir = ${prefix}/man/man1
-manext = 1
-
-# Tools & program stuff
-CC = gcc
-CPP = gcc -E
-CXX = g++
-MV = /usr/bin/mv
-RM = /usr/bin/rm
-RMF = /usr/bin/rm -f
-CP = /usr/bin/cp
-SED = /usr/bin/sed
-AWK = /usr/bin/awk
-ECHO = /usr/bin/echo
-CMP = /usr/bin/cmp
-TBL = /usr/bin/tbl
-AR = ar
-RANLIB = ranlib
-INSTALL = /usr/bin/install -c
-# add the -s to the following in PRODUCTION mode
-INSTALL_PROGRAM = /usr/bin/install -c -m 754
-INSTALL_DATA = /usr/bin/install -c -m 644
-INSTALL_SCRIPT = /usr/bin/install -c -m 754
-INSTALL_CONFIG = /usr/bin/install -c -m 640
-
-# Flags & libs
-CFLAGS = -g -O2 -Wall
-CPPFLAGS = 
-LDFLAGS = -O
-TTOOL_LDFLAGS = 
-DEFS = -DHAVE_WIN32 -DHAVE_MINGW
-LIBS = -lpthread 
-DINCLUDE = 
-DLIB = 
-DB_LIBS = 
-
-# Windows (cygwin) flags 
-WCFLAGS = -mwindows
-WLDFLAGS = -mwindows
-
-# X Include directory
-#XINC =  @XPM_CFLAGS@
-
-# extra libraries needed by X on some systems, X library location
-#XLIB =  @XPM_LIBS@ -lX11 
-
-# End of common section of the Makefile
-#-------------------------------------------------------------------------
-
-CWEB = @CWEB@
-CTANGLE = $(CWEB)/ctangle
-CWEAVE = $(CWEB)/cweave
-TEXINPUTS = TEXINPUTS=.:$(CWEB):
-
-# FIXME -- These should be found by autoconf
-TEX = tex
-PDFTEX = pdftex
-XDVI = xdvi
-DVIPS = dvips
-
-srcdir =       .
-VPATH =        .
-.PATH:         .
-
-# one up
-basedir = ..
-# top dir
-topdir = ../..
-# this dir relative to top dir
-thisdir = src/lib
-
-
-DEBUG=
-
-GMP_INC=@GMP_INC@
-
-first_rule: all
-dummy:
-
-LIBSRCS = alloc.c attr.c base64.c bsys.c bget_msg.c \
-         bnet.c bnet_server.c \
-         bpipe.c bshm.c btime.c \
-         cram-md5.c crc32.c daemon.c edit.c fnmatch.c \
-         hmac.c idcache.c jcr.c lex.c alist.c dlist.c \
-         md5.c message.c mem_pool.c parse_conf.c \
-         queue.c rwlock.c scan.c serial.c sha1.c \
-         semlock.c signal.c smartall.c tree.c \
-         util.c var.c watchdog.c workq.c timers.c
-
-
-LIBOBJS = alloc.o attr.o base64.o bsys.o bget_msg.o \
-         bnet.o bnet_server.o \
-         bpipe.o bshm.o btime.o \
-         cram-md5.o crc32.o daemon.o edit.o fnmatch.o \
-         hmac.o idcache.o jcr.o lex.o alist.o dlist.o \
-         md5.o message.o mem_pool.o parse_conf.o \
-         queue.o rwlock.o scan.o serial.o sha1.o \
-         semlock.o signal.o smartall.o tree.o \
-         util.o var.o watchdog.o workq.o timers.o
-         
-
-
-EXTRAOBJS = 
-
-
-.SUFFIXES:     .c .o .ch .dvi .pdf .tex .view .w .1
-.PHONY:
-.DONTCARE:
-
-# inference rules
-compat.o: ../win32/compat/compat.cpp
-       $(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) -I../win32/compat \
-               -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) -o compat.o ../win32/compat/compat.cpp
-
-.c.o:
-       $(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) -I../win32/compat -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $<
-
-.cc.o:
-       $(CXX) $(DEFS) $(DEBUG) -c $(WCFLAGS) $(CPPFLAGS) -I../win32/compat -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $<
-
-.w.c:
-       $(CTANGLE) $<
-
-.w.tex:
-       $(CWEAVE) $<
-
-.tex.dvi:
-       ( $(TEXINPUTS) ; export TEXINPUTS; $(TEX) $< )
-
-.tex.pdf:
-       ( $(TEXINPUTS) ; export TEXINPUTS; $(PDFTEX) $< )
-
-.dvi.view:
-       $(XDVI) -s 0 $<
-
-#-------------------------------------------------------------------------
-all: Makefile libbac.a
-       @echo "==== Make of lib is good ===="
-       @echo " "
-
-libbac.a: $(LIBOBJS) compat.o
-       $(AR) rc  $@ $(LIBOBJS) compat.o
-       $(RANLIB) $@
-
-
-Makefile: $(srcdir)/Makefile.in $(topdir)/config.status
-       cd $(topdir) \
-         && CONFIG_FILES=$(thisdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
-
-rwlock_test:
-       rm -f rwlock.o
-       $(CXX) -DTEST_RWLOCK $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE)  $(CFLAGS) rwlock.c
-       $(CXX) $(LDFLAGS) -L. -o $@ rwlock.o $(LIBS) $(DLIB) -lbac -lm
-       rm -f rwlock.o
-       $(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) rwlock.c
-
-md5sum:
-       rm -f md5.o
-       $(CXX) -DMD5_SUM $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE)  $(CFLAGS) md5.c
-       $(CXX) $(LDFLAGS) -L. -o $@ md5.o $(LIBS) $(DLIB) -lbac -lm
-       rm -f md5.o
-       $(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) md5.c
-
-
-sha1sum:
-       rm -f sha1.o
-       $(CXX) -DSHA1_SUM $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE)  $(CFLAGS) sha1.c
-       $(CXX) $(LDFLAGS) -L. -o $@ sha1.o $(LIBS) $(DLIB) -lbac -lm
-       rm -f sha1.o
-       $(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) md5.c
-        
-install:
-
-uninstall:
-
-clean:
-       $(RMF) *.a core a.out *.o *.bak *.tex *.pdf *~ *.intpro *.extpro 1 2 3
-       $(RMF) rwlock_test md5sum sha1sum
-
-realclean: clean
-       $(RMF) tags
-
-distclean: realclean
-       if test $(srcdir) = .; then $(MAKE) realclean; fi
-       (cd $(srcdir); $(RMF) Makefile; $(RMF) -r CVS)
-
-# 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) $(XINC) -I$(srcdir) -I$(basedir) $(SQL_INC) *.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
\ No newline at end of file
index 12a5d8b925397c591c0a329e84314ff79d0165ee..d0fa3aaa79e1712cf7b87a0bd62fd8f951a537cc 100644 (file)
@@ -41,6 +41,8 @@ int num_execvp_errors = (int)(sizeof(execvp_errors)/sizeof(int));
 
 
 #define MAX_ARGV 100
+
+#if !defined(HAVE_WIN32)
 static void build_argc_argv(char *cmd, int *bargc, char *bargv[], int max_arg);
 
 /*
@@ -249,6 +251,53 @@ int close_bpipe(BPIPE *bpipe)
    return stat;
 }
 
+/*
+ * Build argc and argv from a string
+ */
+static void build_argc_argv(char *cmd, int *bargc, char *bargv[], int max_argv)
+{
+   int i;
+   char *p, *q, quote;
+   int argc = 0;
+
+   argc = 0;
+   for (i=0; i<max_argv; i++)
+      bargv[i] = NULL;
+
+   p = cmd;
+   quote = 0;
+   while  (*p && (*p == ' ' || *p == '\t'))
+      p++;
+   if (*p == '\"' || *p == '\'') {
+      quote = *p;
+      p++;
+   }
+   if (*p) {
+      while (*p && argc < MAX_ARGV) {
+         q = p;
+         if (quote) {
+            while (*q && *q != quote)
+            q++;
+            quote = 0;
+         } else {
+            while (*q && *q != ' ')
+            q++;
+         }
+         if (*q)
+            *(q++) = '\0';
+         bargv[argc++] = p;
+         p = q;
+         while (*p && (*p == ' ' || *p == '\t'))
+            p++;
+         if (*p == '\"' || *p == '\'') {
+            quote = *p;
+            p++;
+         }
+      }
+   }
+   *bargc = argc;
+}
+#endif /* HAVE_WIN32 */
 
 /*
  * Run an external program. Optionally wait a specified number
@@ -392,50 +441,3 @@ int run_program_full_output(char *prog, int wait, POOLMEM *results)
    free(buf);
    return stat1;
 }
-
-/*
- * Build argc and argv from a string
- */
-static void build_argc_argv(char *cmd, int *bargc, char *bargv[], int max_argv)
-{
-   int i;
-   char *p, *q, quote;
-   int argc = 0;
-
-   argc = 0;
-   for (i=0; i<max_argv; i++)
-      bargv[i] = NULL;
-
-   p = cmd;
-   quote = 0;
-   while  (*p && (*p == ' ' || *p == '\t'))
-      p++;
-   if (*p == '\"' || *p == '\'') {
-      quote = *p;
-      p++;
-   }
-   if (*p) {
-      while (*p && argc < MAX_ARGV) {
-         q = p;
-         if (quote) {
-            while (*q && *q != quote)
-            q++;
-            quote = 0;
-         } else {
-            while (*q && *q != ' ')
-            q++;
-         }
-         if (*q)
-            *(q++) = '\0';
-         bargv[argc++] = p;
-         p = q;
-         while (*p && (*p == ' ' || *p == '\t'))
-            p++;
-         if (*p == '\"' || *p == '\'') {
-            quote = *p;
-            p++;
-         }
-      }
-   }
-   *bargc = argc;
-}
index cfda3f0680e69757c24c626ea62c344a642bb2ef..e848185cb9c44fe074a1e60df4a80ed898a4481a 100644 (file)
@@ -62,6 +62,7 @@ typedef struct {
 #define REG_ICASE    (1<<2)
 #define REG_NOSUB    (1<<3)
 #define REG_NEWLINE  (1<<4)
+#define REG_NOTBOL   (1<<5)
 
 #define REG_NOMATCH -1
 
index 9b0dd5f6245de8b15abea274a1793cf0f46879b0..aa2be79c06b8cef4009eaa0a1c130e45d6b0c6bb 100644 (file)
@@ -497,21 +497,6 @@ static struct s_state_hdr state_hdr = {
    0
 };
 
-#ifdef HAVE_WIN32
-#undef open
-#undef read
-#undef write
-#undef lseek
-#undef close
-#undef O_BINARY 
-#define open _open
-#define read _read
-#define write _write
-#define lseek _lseeki64
-#define close _close
-#define O_BINARY _O_BINARY
-#endif
-
 /*
  * Open and read the state file for the daemon
  */
index 328dc588640e0a51d5ba5385bd4d372edc0a4e18..ab55307b9a86d4c719e48697b6db04ee9412404a 100644 (file)
@@ -133,7 +133,7 @@ void Qmsg(JCR *jcr, int type, time_t mtime, const char *fmt,...);
 bool get_trace(void);
 
 typedef void (*sql_query)(JCR *jcr, const char *cmd);
-extern sql_query p_sql_query;
+extern sql_query     DLL_IMP_EXP p_sql_query;
 
 extern int           DLL_IMP_EXP debug_level;
 extern int           DLL_IMP_EXP verbose;
index bc14891cb40e3713a856d1af8da97d9dd613193a..14289b19a8edece5f81d4415241a08e9abc6ad04 100644 (file)
@@ -37,7 +37,6 @@
 
  */
 
-#if !defined(HAVE_WIN32)
 #include "bacula.h"
 #if defined(HAVE_PCREPOSIX)
 #  include <pcreposix.h>
@@ -2718,4 +2717,3 @@ const char *var_strerror(var_t *var, var_rc_t rc)
     }
     return str;
 }
-#endif /* !defined(HAVE_WIN32) */
diff --git a/bacula/src/lib/winapi.c b/bacula/src/lib/winapi.c
deleted file mode 100644 (file)
index 58a20fd..0000000
+++ /dev/null
@@ -1,259 +0,0 @@
-/*
- * 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
- */
-/*
-   Copyright (C) 2003-2006 Kern Sibbald
-
-   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.
-
- */
-
-#ifdef __APCUPSD__
-#include "apc.h"
-#else
-#include "bacula.h"
-#endif
-
-#if defined(HAVE_CYGWIN) || defined(HAVE_WIN32)
-
-#include "winapi.h"
-
-int win32_client = 1;
-
-#ifdef WIN32_VSS
-#include "vss.h"   
-#endif
-
-// init with win9x, but maybe set to NT in InitWinAPI
-DWORD  g_platform_id = VER_PLATFORM_WIN32_WINDOWS;
-#ifdef WIN32_VSS
-/* preset VSSClient to NULL */
-VSSClient *g_pVSSClient = NULL;
-#endif
-
-
-/* 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_wopen p_wopen = 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_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;
-
-#ifdef WIN32_VSS
-void 
-VSSCleanup()
-{
-   if (g_pVSSClient)
-      delete (g_pVSSClient);
-}
-#endif
-
-void 
-InitWinAPIWrapper() 
-{
-   HMODULE hLib = LoadLibraryA("KERNEL32.DLL");
-   if (hLib) {
-      /* create file calls */
-      p_CreateFileA = (t_CreateFileA)
-          GetProcAddress(hLib, "CreateFileA");
-      p_CreateFileW = (t_CreateFileW)
-          GetProcAddress(hLib, "CreateFileW");      
-
-      p_CreateDirectoryA = (t_CreateDirectoryA)
-          GetProcAddress(hLib, "CreateDirectoryA");
-      p_CreateDirectoryW = (t_CreateDirectoryW)
-          GetProcAddress(hLib, "CreateDirectoryW");      
-
-      /* attribute calls */
-      p_GetFileAttributesA = (t_GetFileAttributesA)
-          GetProcAddress(hLib, "GetFileAttributesA");
-      p_GetFileAttributesW = (t_GetFileAttributesW)
-          GetProcAddress(hLib, "GetFileAttributesW");
-      p_GetFileAttributesExA = (t_GetFileAttributesExA)
-          GetProcAddress(hLib, "GetFileAttributesExA");
-      p_GetFileAttributesExW = (t_GetFileAttributesExW)
-          GetProcAddress(hLib, "GetFileAttributesExW");
-      p_SetFileAttributesA = (t_SetFileAttributesA)
-          GetProcAddress(hLib, "SetFileAttributesA");
-      p_SetFileAttributesW = (t_SetFileAttributesW)
-          GetProcAddress(hLib, "SetFileAttributesW");
-      /* process calls */
-      p_SetProcessShutdownParameters = (t_SetProcessShutdownParameters)
-          GetProcAddress(hLib, "SetProcessShutdownParameters");
-      /* backup calls */
-      p_BackupRead = (t_BackupRead)
-          GetProcAddress(hLib, "BackupRead");
-      p_BackupWrite = (t_BackupWrite)
-          GetProcAddress(hLib, "BackupWrite");
-      /* 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_FindFirstFileW = (t_FindFirstFileW)
-          GetProcAddress(hLib, "FindFirstFileW");       
-      p_FindNextFileA = (t_FindNextFileA)
-          GetProcAddress(hLib, "FindNextFileA");
-      p_FindNextFileW = (t_FindNextFileW)
-          GetProcAddress(hLib, "FindNextFileW");
-      /* set and get directory */
-      p_SetCurrentDirectoryA = (t_SetCurrentDirectoryA)
-          GetProcAddress(hLib, "SetCurrentDirectoryA");
-      p_SetCurrentDirectoryW = (t_SetCurrentDirectoryW)
-          GetProcAddress(hLib, "SetCurrentDirectoryW");       
-      p_GetCurrentDirectoryA = (t_GetCurrentDirectoryA)
-          GetProcAddress(hLib, "GetCurrentDirectoryA");
-      p_GetCurrentDirectoryW = (t_GetCurrentDirectoryW)
-          GetProcAddress(hLib, "GetCurrentDirectoryW");      
-
-      /* some special stuff we need for VSS
-         but statically linkage doesn't work on Win 9x */
-      p_GetVolumePathNameW = (t_GetVolumePathNameW)
-          GetProcAddress(hLib, "GetVolumePathNameW");
-      p_GetVolumeNameForVolumeMountPointW = (t_GetVolumeNameForVolumeMountPointW)
-          GetProcAddress(hLib, "GetVolumeNameForVolumeMountPointW");
-    
-      FreeLibrary(hLib);
-   }
-   
-   hLib = LoadLibraryA("MSVCRT.DLL");
-   if (hLib) {
-      /* unlink */
-      p_wunlink = (t_wunlink)
-      GetProcAddress(hLib, "_wunlink");
-      /* wmkdir */
-      p_wmkdir = (t_wmkdir)
-      GetProcAddress(hLib, "_wmkdir");
-      /* wopen */
-      p_wopen = (t_wopen)
-      GetProcAddress(hLib, "_wopen");
-        
-      FreeLibrary(hLib);
-   }
-   
-   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");
-      FreeLibrary(hLib);
-   }
-
-   // do we run on win 9x ???
-   OSVERSIONINFO osversioninfo;   
-   osversioninfo.dwOSVersionInfoSize = sizeof(osversioninfo);
-
-   DWORD dwMinorVersion;
-
-   // Get the current OS version
-   if (!GetVersionEx(&osversioninfo)) {
-      g_platform_id = 0;
-      dwMinorVersion = 0;
-   } else {
-      g_platform_id = osversioninfo.dwPlatformId;
-      dwMinorVersion = osversioninfo.dwMinorVersion;
-   }
-
-   /* deinitialize some routines on win95 - they're not implemented well */
-   if (g_platform_id == VER_PLATFORM_WIN32_WINDOWS) {
-      p_BackupRead = NULL;
-      p_BackupWrite = NULL;
-
-      p_CreateFileW = NULL;          
-      p_GetFileAttributesW = NULL;          
-      p_GetFileAttributesExW = NULL;
-          
-      p_SetFileAttributesW = NULL;
-                
-      p_FindFirstFileW = NULL;
-      p_FindNextFileW = NULL;
-      p_SetCurrentDirectoryW = NULL;
-      p_GetCurrentDirectoryW = NULL;
-
-      p_wunlink = NULL;
-      p_wmkdir = NULL;
-      p_wopen = NULL;
-
-      p_GetVolumePathNameW = NULL;
-      p_GetVolumeNameForVolumeMountPointW = NULL;
-   }   
-
-   /* decide which vss class to initialize */
-#ifdef WIN32_VSS
-   switch (dwMinorVersion) {
-      case 1: 
-         g_pVSSClient = new VSSClientXP();
-         atexit(VSSCleanup);
-         break;
-      case 2: 
-         g_pVSSClient = new VSSClient2003();
-         atexit(VSSCleanup);
-         break;
-   }
-#endif /* WIN32_VSS */
-   atexit(Win32ConvCleanupCache);
-}
-
-#else
-
-/* Not Windows */
-int win32_client = 0;
-
-#endif
diff --git a/bacula/src/lib/winapi.h b/bacula/src/lib/winapi.h
deleted file mode 100644 (file)
index 78b108a..0000000
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * 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
- */
-/*
-   Copyright (C) 2003-2006 Kern Sibbald
-
-   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.
-
- */
-
-#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>
-#endif
-
-#if defined(HAVE_CYGWIN) || defined(HAVE_WIN32)
-
-#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(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);
-
-
-/* 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      p_OpenProcessToken;
-extern t_AdjustTokenPrivileges p_AdjustTokenPrivileges;
-extern t_LookupPrivilegeValue  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   p_wunlink;
-extern t_wmkdir    p_wmkdir;
-extern t_wopen     p_wopen;
-
-/* 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);
-  
-extern t_GetFileAttributesA   p_GetFileAttributesA;
-extern t_GetFileAttributesW   p_GetFileAttributesW;
-
-extern t_GetFileAttributesExA   p_GetFileAttributesExA;
-extern t_GetFileAttributesExW   p_GetFileAttributesExW;
-
-extern t_SetFileAttributesA   p_SetFileAttributesA;
-extern t_SetFileAttributesW   p_SetFileAttributesW;
-
-extern t_CreateFileA   p_CreateFileA;
-extern t_CreateFileW   p_CreateFileW;
-
-extern t_CreateDirectoryA   p_CreateDirectoryA;
-extern t_CreateDirectoryW   p_CreateDirectoryW;
-
-extern t_SetProcessShutdownParameters p_SetProcessShutdownParameters;
-extern t_BackupRead         p_BackupRead;
-extern t_BackupWrite        p_BackupWrite;
-
-extern t_WideCharToMultiByte p_WideCharToMultiByte;
-extern t_MultiByteToWideChar p_MultiByteToWideChar;
-
-extern t_FindFirstFileA p_FindFirstFileA;
-extern t_FindFirstFileW p_FindFirstFileW;
-
-extern t_FindNextFileA p_FindNextFileA;
-extern t_FindNextFileW p_FindNextFileW;
-
-extern t_SetCurrentDirectoryA p_SetCurrentDirectoryA;
-extern t_SetCurrentDirectoryW p_SetCurrentDirectoryW;
-
-extern t_GetCurrentDirectoryA p_GetCurrentDirectoryA;
-extern t_GetCurrentDirectoryW p_GetCurrentDirectoryW;
-
-extern t_GetVolumePathNameW p_GetVolumePathNameW;
-extern t_GetVolumeNameForVolumeMountPointW p_GetVolumeNameForVolumeMountPointW;
-          
-#ifdef WIN32_VSS
-class  VSSClient;
-extern VSSClient* g_pVSSClient;
-#endif
-
-void InitWinAPIWrapper();
-#endif
-
-#endif /* __WINAPI_H */
index 28fba900f77e321ece6163257208c2bf4dfaccbe..02b70cadfddc3eaab45ac7f8653cdbf844e9c09e 100644 (file)
@@ -74,7 +74,7 @@ int read_ansi_ibm_label(DCR *dcr)
    /* Read a maximum of 5 records VOL1, HDR1, ... HDR4 */
    for (i=0; i < 6; i++) {
       do {
-         stat = read(dev->fd, label, sizeof(label));
+         stat = tape_read(dev->fd, label, sizeof(label));
       } while (stat == -1 && errno == EINTR);
       if (stat < 0) {
          berrno be;
@@ -296,7 +296,7 @@ bool write_ansi_ibm_labels(DCR *dcr, int type, const char *VolName)
          } else {
             label[79] = '3';                /* ANSI label flag */
          }
-         stat = write(dev->fd, label, sizeof(label));
+         stat = tape_write(dev->fd, label, sizeof(label));
          if (stat != sizeof(label)) {
             berrno be;
             Jmsg1(jcr, M_FATAL, 0,  _("Could not write ANSI VOL1 label. ERR=%s\n"),
@@ -328,7 +328,7 @@ bool write_ansi_ibm_labels(DCR *dcr, int type, const char *VolName)
        * This could come at the end of a tape, ignore
        *  EOT errors.
        */
-      stat = write(dev->fd, label, sizeof(label));
+      stat = tape_write(dev->fd, label, sizeof(label));
       if (stat != sizeof(label)) {
          berrno be;
          if (stat == -1) {
@@ -357,7 +357,7 @@ bool write_ansi_ibm_labels(DCR *dcr, int type, const char *VolName)
          label[4] = 'V';
          ascii_to_ebcdic(label, label, sizeof(label));
       }
-      stat = write(dev->fd, label, sizeof(label));
+      stat = tape_write(dev->fd, label, sizeof(label));
       if (stat != sizeof(label)) {
          berrno be;
          if (stat == -1) {
index 6ac2bfdc2c5568e8f4dbb1d738ffa394f2210332..e0907d54da2db7e1c15d222695247c808579ff5f 100644 (file)
@@ -511,7 +511,11 @@ bool write_block_to_dev(DCR *dcr)
    /*
     * Do write here
     */ 
-   stat = write(dev->fd, block->buf, (size_t)wlen);
+   if (dev->is_tape()) {
+      stat = tape_write(dev->fd, block->buf, (size_t)wlen);
+   } else {
+      stat = write(dev->fd, block->buf, (size_t)wlen);
+   }
 
 #ifdef DEBUG_BLOCK_ZEROING
    if (bp[0] == 0 && bp[1] == 0 && bp[2] == 0 && block->buf[12] == 0) {
@@ -925,7 +929,11 @@ reread:
 //    uint32_t *bp = (uint32_t *)block->buf;
 //    Pmsg3(000, "Read %p %u at %llu\n", block->buf, block->buf_len, lseek(dev->fd, 0, SEEK_CUR));
 
-      stat = read(dev->fd, block->buf, (size_t)block->buf_len);
+      if (dev->is_tape()) {
+         stat = tape_read(dev->fd, block->buf, (size_t)block->buf_len);
+      } else {
+         stat = read(dev->fd, block->buf, (size_t)block->buf_len);
+      }
 
 //    Pmsg8(000, "stat=%d Csum=%u blen=%u bnum=%u %c%c%c%c\n",stat, bp[0],bp[1],bp[2],
 //      block->buf[12],block->buf[13],block->buf[14],block->buf[15]);
index a69a3d2e3abf5ddb7656207e6f930bd2d256f9fc..21ea77ede6b9fbf6578b96278a30997d48fc8843 100644 (file)
@@ -309,6 +309,8 @@ static void terminate_btape(int stat)
       dev->term();
    }
 
+   free_volume_list();
+
    if (debug_level > 10)
       print_memory_pool_stats();
 
@@ -2455,7 +2457,11 @@ static void rawfill_cmd()
    Pmsg1(0, _("Begin writing raw blocks of %u bytes.\n"), block->buf_len);
    for ( ;; ) {
       *p = block_num;
-      stat = write(dev->fd, block->buf, block->buf_len);
+      if (dev->is_tape()) {
+         stat = tape_write(dev->fd, block->buf, block->buf_len);
+      } else {
+         stat = write(dev->fd, block->buf, block->buf_len);
+      }
       if (stat == (int)block->buf_len) {
          if ((block_num++ % 100) == 0) {
             printf("+");
index ffda26336a6921f8475d0dd52fe8a540a64b2485..3ccde2b2c3f318db60d49bf87864f0b6c8cf0ee6 100644 (file)
@@ -264,10 +264,14 @@ DEVICE::open(DCR *dcr, int omode)
       if (openmode == omode) {
          return fd;
       } else {
-        ::close(fd); /* use system close so correct mode will be used on open */
-        clear_opened();
-        Dmsg0(100, "Close fd for mode change.\n");
-        preserve = state & (ST_LABEL|ST_APPEND|ST_READ);
+         if (is_tape()) {
+            tape_close(fd);
+         } else {
+            ::close(fd);
+         }
+         clear_opened();
+         Dmsg0(100, "Close fd for mode change.\n");
+         preserve = state & (ST_LABEL|ST_APPEND|ST_READ);
       }
    }
    if (dcr) {
@@ -336,6 +340,17 @@ void DEVICE::open_tape_device(DCR *dcr, int omode)
    Dmsg3(100, "Try open %s mode=%s nonblocking=%d\n", print_name(),
       mode_to_str(omode), nonblocking);
    /* Use system open() */
+
+#ifdef HAVE_WIN32
+   if ((fd = tape_open(dev_name, mode)) < 0) {
+      berrno be;
+      dev_errno = errno;
+
+      Mmsg2(errmsg, _("Unable to open device %s: ERR=%s\n"),
+            print_name(), be.strerror(dev_errno));
+      Jmsg0(dcr->jcr, M_FATAL, 0, errmsg);
+   }
+#else
    while ((fd = ::open(dev_name, mode+nonblocking)) < 0) {
       berrno be;
       dev_errno = errno;
@@ -361,6 +376,7 @@ void DEVICE::open_tape_device(DCR *dcr, int omode)
       Jmsg0(dcr->jcr, M_FATAL, 0, errmsg);
       break;
    }
+#endif
 
    if (fd >= 0) {
       openmode = omode;              /* save open mode */
@@ -645,7 +661,7 @@ bool DEVICE::rewind(DCR *dcr)
        * retrying every 5 seconds.
        */
       for (i=max_rewind_wait; ; i -= 5) {
-         if (ioctl(fd, MTIOCTOP, (char *)&mt_com) < 0) {
+         if (tape_ioctl(fd, MTIOCTOP, (char *)&mt_com) < 0) {
             berrno be;
             clrerror(MTREW);
             if (i == max_rewind_wait) {
@@ -659,7 +675,7 @@ bool DEVICE::rewind(DCR *dcr)
              */
             if (first && dcr) {
                int open_mode = openmode;
-               ::close(fd);
+               tape_close(fd);
                clear_opened();
                open(dcr, open_mode);
                if (fd < 0) {
@@ -827,7 +843,7 @@ bool DEVICE::eod()
          mt_com.mt_count = 1;
       }
 
-      if (ioctl(fd, MTIOCTOP, (char *)&mt_com) < 0) {
+      if (tape_ioctl(fd, MTIOCTOP, (char *)&mt_com) < 0) {
          berrno be;
          clrerror(mt_com.mt_op);
          Dmsg1(50, "ioctl error: %s\n", be.strerror());
@@ -971,7 +987,7 @@ uint32_t status_dev(DEVICE *dev)
       stat |= BMT_TAPE;
       Pmsg0(-20,_(" Bacula status:"));
       Pmsg2(-20,_(" file=%d block=%d\n"), dev->file, dev->block_num);
-      if (ioctl(dev->fd, MTIOCGET, (char *)&mt_stat) < 0) {
+      if (tape_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"),
@@ -1017,6 +1033,40 @@ uint32_t status_dev(DEVICE *dev)
          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);
@@ -1064,7 +1114,7 @@ bool load_dev(DEVICE *dev)
    dev->file_addr = 0;
    mt_com.mt_op = MTLOAD;
    mt_com.mt_count = 1;
-   if (ioctl(dev->fd, MTIOCTOP, (char *)&mt_com) < 0) {
+   if (tape_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"),
@@ -1096,11 +1146,11 @@ bool DEVICE::offline()
 #ifdef MTUNLOCK
    mt_com.mt_op = MTUNLOCK;
    mt_com.mt_count = 1;
-   ioctl(fd, MTIOCTOP, (char *)&mt_com);
+   tape_ioctl(fd, MTIOCTOP, (char *)&mt_com);
 #endif
    mt_com.mt_op = MTOFFL;
    mt_com.mt_count = 1;
-   if (ioctl(fd, MTIOCTOP, (char *)&mt_com) < 0) {
+   if (tape_ioctl(fd, MTIOCTOP, (char *)&mt_com) < 0) {
       berrno be;
       dev_errno = errno;
       Mmsg2(errmsg, _("ioctl MTOFFL error on %s. ERR=%s.\n"),
@@ -1173,7 +1223,7 @@ bool DEVICE::fsf(int num)
    if (has_cap(CAP_FSF) && has_cap(CAP_MTIOCGET) && has_cap(CAP_FASTFSF)) {
       mt_com.mt_op = MTFSF;
       mt_com.mt_count = num;
-      stat = ioctl(fd, MTIOCTOP, (char *)&mt_com);
+      stat = tape_ioctl(fd, MTIOCTOP, (char *)&mt_com);
       if (stat < 0 || !dev_get_os_pos(this, &mt_stat)) {
          berrno be;
          set_eot();
@@ -1210,7 +1260,7 @@ bool DEVICE::fsf(int num)
       mt_com.mt_count = 1;
       while (num-- && !at_eot()) {
          Dmsg0(100, "Doing read before fsf\n");
-         if ((stat = read(fd, (char *)rbuf, rbuf_len)) < 0) {
+         if ((stat = tape_read(fd, (char *)rbuf, rbuf_len)) < 0) {
             if (errno == ENOMEM) {     /* tape record exceeds buf len */
                stat = rbuf_len;        /* This is OK */
             /*
@@ -1249,7 +1299,7 @@ bool DEVICE::fsf(int num)
          }
 
          Dmsg0(100, "Doing MTFSF\n");
-         stat = ioctl(fd, MTIOCTOP, (char *)&mt_com);
+         stat = tape_ioctl(fd, MTIOCTOP, (char *)&mt_com);
          if (stat < 0) {                 /* error => EOT */
             berrno be;
             set_eot();
@@ -1323,7 +1373,7 @@ bool DEVICE::bsf(int num)
    file_size = 0;
    mt_com.mt_op = MTBSF;
    mt_com.mt_count = num;
-   stat = ioctl(fd, MTIOCTOP, (char *)&mt_com);
+   stat = tape_ioctl(fd, MTIOCTOP, (char *)&mt_com);
    if (stat < 0) {
       berrno be;
       clrerror(MTBSF);
@@ -1363,7 +1413,7 @@ bool DEVICE::fsr(int num)
    Dmsg1(29, "fsr %d\n", num);
    mt_com.mt_op = MTFSR;
    mt_com.mt_count = num;
-   stat = ioctl(fd, MTIOCTOP, (char *)&mt_com);
+   stat = tape_ioctl(fd, MTIOCTOP, (char *)&mt_com);
    if (stat == 0) {
       clear_eof();
       block_num += num;
@@ -1423,7 +1473,7 @@ bool DEVICE::bsr(int num)
    clear_eot();
    mt_com.mt_op = MTBSR;
    mt_com.mt_count = num;
-   stat = ioctl(fd, MTIOCTOP, (char *)&mt_com);
+   stat = tape_ioctl(fd, MTIOCTOP, (char *)&mt_com);
    if (stat < 0) {
       berrno be;
       clrerror(MTBSR);
@@ -1529,7 +1579,7 @@ bool DEVICE::weof(int num)
    clear_eot();
    mt_com.mt_op = MTWEOF;
    mt_com.mt_count = num;
-   stat = ioctl(fd, MTIOCTOP, (char *)&mt_com);
+   stat = tape_ioctl(fd, MTIOCTOP, (char *)&mt_com);
    if (stat == 0) {
       block_num = 0;
       file += num;
@@ -1645,7 +1695,7 @@ void DEVICE::clrerror(int func)
     */
 
    /* On some systems such as NetBSD, this clears all errors */
-   ioctl(fd, MTIOCGET, (char *)&mt_stat);
+   tape_ioctl(fd, MTIOCGET, (char *)&mt_stat);
 
 /* Found on Linux */
 #ifdef MTIOCLRERR
@@ -1654,7 +1704,7 @@ void DEVICE::clrerror(int func)
    mt_com.mt_op = MTIOCLRERR;
    mt_com.mt_count = 1;
    /* Clear any error condition on the tape */
-   ioctl(fd, MTIOCTOP, (char *)&mt_com);
+   tape_ioctl(fd, MTIOCTOP, (char *)&mt_com);
    Dmsg0(200, "Did MTIOCLRERR\n");
 }
 #endif
@@ -1666,7 +1716,7 @@ void DEVICE::clrerror(int func)
    union mterrstat mt_errstat;
    Dmsg2(200, "Doing MTIOCERRSTAT errno=%d ERR=%s\n", dev_errno,
       strerror(dev_errno));
-   ioctl(fd, MTIOCERRSTAT, (char *)&mt_errstat);
+   tape_ioctl(fd, MTIOCERRSTAT, (char *)&mt_errstat);
 }
 #endif
 
@@ -1677,7 +1727,7 @@ void DEVICE::clrerror(int func)
    mt_com.mt_op = MTCSE;
    mt_com.mt_count = 1;
    /* Clear any error condition on the tape */
-   ioctl(fd, MTIOCTOP, (char *)&mt_com);
+   tape_ioctl(fd, MTIOCTOP, (char *)&mt_com);
    Dmsg0(200, "Did MTCSE\n");
 }
 #endif
@@ -1693,7 +1743,11 @@ void DEVICE::close()
       offline();
    }
    if (fd >= 0) {
-      ::close(fd);
+      if (is_tape()) {
+         tape_close(fd);
+      } else {
+         ::close(fd);
+      }
    } else {
       Dmsg2(100, "device %s already closed vol=%s\n", print_name(),
          VolHdr.VolumeName);
@@ -2096,13 +2150,13 @@ bool double_dev_wait_time(DEVICE *dev)
 
 void set_os_device_parameters(DEVICE *dev)
 {
-#ifdef HAVE_LINUX_OS
+#if defined(HAVE_LINUX_OS) || defined(HAVE_WIN32)
    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 = MTSETBLK;
       mt_com.mt_count = 0;
-      if (ioctl(dev->fd, MTIOCTOP, (char *)&mt_com) < 0) {
+      if (tape_ioctl(dev->fd, MTIOCTOP, (char *)&mt_com) < 0) {
          dev->clrerror(MTSETBLK);
       }
       mt_com.mt_op = MTSETDRVBUFFER;
@@ -2113,7 +2167,7 @@ void set_os_device_parameters(DEVICE *dev)
       if (dev->has_cap(CAP_EOM)) {
          mt_com.mt_count |= MT_ST_FAST_MTEOM;
       }
-      if (ioctl(dev->fd, MTIOCTOP, (char *)&mt_com) < 0) {
+      if (tape_ioctl(dev->fd, MTIOCTOP, (char *)&mt_com) < 0) {
          dev->clrerror(MTSETBLK);
       }
    }
@@ -2126,13 +2180,13 @@ void set_os_device_parameters(DEVICE *dev)
        dev->min_block_size == 0) {    /* variable block mode */
       mt_com.mt_op = MTSETBSIZ;
       mt_com.mt_count = 0;
-      if (ioctl(dev->fd, MTIOCTOP, (char *)&mt_com) < 0) {
+      if (tape_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 (ioctl(dev->fd, MTIOCTOP, (char *)&mt_com) < 0) {
+      if (tape_ioctl(dev->fd, MTIOCTOP, (char *)&mt_com) < 0) {
          dev->clrerror(MTEWARN);
       }
    }
@@ -2145,7 +2199,7 @@ void set_os_device_parameters(DEVICE *dev)
        dev->min_block_size == 0) {    /* variable block mode */
       mt_com.mt_op = MTSETBSIZ;
       mt_com.mt_count = 0;
-      if (ioctl(dev->fd, MTIOCTOP, (char *)&mt_com) < 0) {
+      if (tape_ioctl(dev->fd, MTIOCTOP, (char *)&mt_com) < 0) {
          dev->clrerror(MTSETBSIZ);
       }
    }
@@ -2158,7 +2212,7 @@ void set_os_device_parameters(DEVICE *dev)
        dev->min_block_size == 0) {    /* variable block mode */
       mt_com.mt_op = MTSRSZ;
       mt_com.mt_count = 0;
-      if (ioctl(dev->fd, MTIOCTOP, (char *)&mt_com) < 0) {
+      if (tape_ioctl(dev->fd, MTIOCTOP, (char *)&mt_com) < 0) {
          dev->clrerror(MTSRSZ);
       }
    }
@@ -2169,7 +2223,7 @@ void set_os_device_parameters(DEVICE *dev)
 static bool dev_get_os_pos(DEVICE *dev, struct mtget *mt_stat)
 {
    return dev->has_cap(CAP_MTIOCGET) && 
-          ioctl(dev->fd, MTIOCGET, (char *)mt_stat) == 0 &&
+          tape_ioctl(dev->fd, MTIOCGET, (char *)mt_stat) == 0 &&
           mt_stat->mt_fileno >= 0;
 }
 
index 421afd087118cfd3f823f6d53b689f9d2343825d..1b92dc0e945592ae652fbf33200c3df9566158dc 100644 (file)
@@ -217,9 +217,9 @@ bool    free_volume(DEVICE *dev);
 void    free_unused_volume(DCR *dcr);
 void    create_volume_list();
 void    free_volume_list();
-void    list_volumes(BSOCK *user);
+void    list_volumes(void sendit(const char *msg, int len, void *sarg), void *arg);
 bool    is_volume_in_use(DCR *dcr);
-void    send_drive_reserve_messages(JCR *jcr, BSOCK *user);
+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);
 void    release_msgs(JCR *jcr);
@@ -234,7 +234,7 @@ bool    begin_attribute_spool     (JCR *jcr);
 bool    discard_attribute_spool   (JCR *jcr);
 bool    commit_attribute_spool    (JCR *jcr);
 bool    write_block_to_spool_file (DCR *dcr);
-void    list_spool_stats          (BSOCK *bs);
+void    list_spool_stats          (void sendit(const char *msg, int len, void *sarg), void *arg);
 
 /* From wait.c */
 int wait_for_sysop(DCR *dcr);
index d10c0c04271e2cbf24aa0f79302e449d1bec7980..dad24e65def7aef85a39ac156e387709101a3b31 100644 (file)
@@ -254,18 +254,27 @@ void free_unused_volume(DCR *dcr)
 /*
  * List Volumes -- this should be moved to status.c
  */
-void list_volumes(BSOCK *user)  
+void list_volumes(void sendit(const char *msg, int len, void *sarg), void *arg)
 {
    VOLRES *vol;
+   char *msg;
+   int len;
+
+   msg = (char *)get_pool_memory(PM_MESSAGE);
+
    P(vol_list_lock);
    for (vol=(VOLRES *)vol_list->first(); vol; vol=(VOLRES *)vol_list->next(vol)) {
       if (vol->dev) {
-         bnet_fsend(user, "%s on device %s\n", vol->vol_name, vol->dev->print_name());
+         len = Mmsg(msg, "%s on device %s\n", vol->vol_name, vol->dev->print_name());
+         sendit(msg, len, arg);
       } else {
-         bnet_fsend(user, "%s\n", vol->vol_name);
+         len = Mmsg(msg, "%s\n", vol->vol_name);
+         sendit(msg, len, arg);
       }
    }
    V(vol_list_lock);
+
+   free_pool_memory(msg);
 }
       
 /* Create the Volume list */
@@ -1046,7 +1055,7 @@ static void queue_reserve_message(JCR *jcr)
 /*
  * Send any reservation messages queued for this jcr
  */
-void send_drive_reserve_messages(JCR *jcr, BSOCK *user)
+void send_drive_reserve_messages(JCR *jcr, void sendit(const char *msg, int len, void *sarg), void *arg)
 {
    int i;
    alist *msgs;
@@ -1061,7 +1070,8 @@ void send_drive_reserve_messages(JCR *jcr, BSOCK *user)
    for (i=msgs->size()-1; i >= 0; i--) {
       msg = (char *)msgs->get(i);
       if (msg) {
-         bnet_fsend(user, "   %s", msg);
+         sendit("   ", 3, arg);
+         sendit(msg, strlen(msg), arg);
       } else {
          break;
       }
index 5923279c02cf3437c9b4799f136b710f72825bc4..e69fec331fb44012b7e679b1f436b9cc389616f6 100644 (file)
@@ -62,21 +62,31 @@ enum {
    RB_OK
 };
 
-void list_spool_stats(BSOCK *bs)
+void list_spool_stats(void sendit(const char *msg, int len, void *sarg), void *arg)
 {
-   char ed1[30], ed2[30];
+   char *msg, ed1[30], ed2[30];
+   int len;
+
+   msg = (char *)get_pool_memory(PM_MESSAGE);
+
    if (spool_stats.data_jobs || spool_stats.max_data_size) {
-      bnet_fsend(bs, _("Data spooling: %u active jobs, %s bytes; %u total jobs, %s max bytes/job.\n"),
+      len = Mmsg(msg, _("Data spooling: %u active jobs, %s bytes; %u total jobs, %s max bytes/job.\n"),
          spool_stats.data_jobs, edit_uint64_with_commas(spool_stats.data_size, ed1),
          spool_stats.total_data_jobs,
          edit_uint64_with_commas(spool_stats.max_data_size, ed2));
+
+      sendit(msg, len, arg);
    }
    if (spool_stats.attr_jobs || spool_stats.max_attr_size) {
-      bnet_fsend(bs, _("Attr spooling: %u active jobs, %s bytes; %u total jobs, %s max bytes.\n"),
+      len = Mmsg(msg, _("Attr spooling: %u active jobs, %s bytes; %u total jobs, %s max bytes.\n"),
          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, len, arg);
    }
+
+   free_pool_memory(msg);
 }
 
 bool begin_data_spool(DCR *dcr)
index 404f47ae021f583d76b9ec88aee820713ec7e3c4..d483d41f456757a8e9ac2d651eee5184632ae3dc 100644 (file)
@@ -39,69 +39,82 @@ static char DotStatusJob[] = "JobId=%d JobStatus=%c JobErrors=%d\n";
 
 
 /* Forward referenced functions */
-static void send_blocked_status(JCR *jcr, DEVICE *dev);
-static void list_terminated_jobs(void *arg);
-static void list_running_jobs(BSOCK *user);
-static void list_jobs_waiting_on_reservation(BSOCK *user);
-static void sendit(const char *msg, int len, void *arg);
-static const char *level_to_str(int level);
+static void send_blocked_status(DEVICE *dev, void sendit(const char *msg, int len, void *sarg), void *arg);
+static void list_terminated_jobs(void sendit(const char *msg, int len, void *sarg), void *arg);
+static void list_running_jobs(void sendit(const char *msg, int len, void *sarg), void *arg);
+static void list_jobs_waiting_on_reservation(void sendit(const char *msg, int len, void *sarg), void *arg);
+#if defined(HAVE_WIN32)
+static void win32_sendit(const char *msg, int len, void *arg);
+#endif
 
+static const char *level_to_str(int level);
 
 /*
  * Status command from Director
  */
-bool status_cmd(JCR *jcr)
+bool do_status(void sendit(const char *msg, int len, void *sarg), void *arg)
 {
    DEVRES *device;
    AUTOCHANGER *changer;
    DEVICE *dev;
-   BSOCK *user = jcr->dir_bsock;
    char dt[MAX_TIME_LENGTH];
-   char b1[35], b2[35], b3[35], b4[35];
+   char *msg, b1[35], b2[35], b3[35], b4[35];
    int bpb;
+   int len;
+
+   msg = (char *)get_pool_memory(PM_MESSAGE);
+
+   len = Mmsg(msg, _("%s Version: %s (%s) %s %s %s\n"), 
+              my_name, VERSION, BDATE, HOST_OS, DISTNAME, DISTVER);
+   sendit(msg, len, arg);
 
-   bnet_fsend(user, _("\n%s Version: %s (%s) %s %s %s\n"), my_name,
-              VERSION, BDATE, HOST_OS, DISTNAME, DISTVER);
    bstrftime_nc(dt, sizeof(dt), daemon_start_time);
-   if (num_jobs_run == 1) {
-      bnet_fsend(user, _("Daemon started %s, 1 Job run since started.\n"), dt);
-   }
-   else {
-      bnet_fsend(user, _("Daemon started %s, %d Jobs run since started.\n"), dt, num_jobs_run);
-   }
-   bnet_fsend(user, _(" Heap: bytes=%s max_bytes=%s bufs=%s max_bufs=%s\n"),
+
+
+   len = Mmsg(msg, _("Daemon started %s, %d Job%s run since started.\n"),
+        dt, num_jobs_run, num_jobs_run == 1 ? "" : "s");
+   sendit(msg, len, arg);
+
+   len = Mmsg(msg, _(" Heap: bytes=%s max_bytes=%s bufs=%s max_bufs=%s\n"),
          edit_uint64_with_commas(sm_bytes, b1),
          edit_uint64_with_commas(sm_max_bytes, b2),
          edit_uint64_with_commas(sm_buffers, b3),
          edit_uint64_with_commas(sm_max_buffers, b4));
+   sendit(msg, len, arg);
 
    /*
     * List running jobs
     */
-   list_running_jobs(user);
+   list_running_jobs(sendit, arg);
 
    /*
     * List jobs stuck in reservation system
     */
-   list_jobs_waiting_on_reservation(user);
+   list_jobs_waiting_on_reservation(sendit, arg);
 
    /*
     * List terminated jobs
     */
-   list_terminated_jobs(user);
+   list_terminated_jobs(sendit, arg);
 
    /*
     * List devices
     */
-   bnet_fsend(user, _("\nDevice status:\n"));
+   len = Mmsg(msg, _("\nDevice status:\n"));
+   sendit(msg, len, arg);
+
    foreach_res(changer, R_AUTOCHANGER) {
-      bnet_fsend(user, _("Autochanger \"%s\" with devices:\n"),
+      len = Mmsg(msg, _("Autochanger \"%s\" with devices:\n"),
          changer->hdr.name);
+      sendit(msg, len, arg);
+
       foreach_alist(device, changer->device) {
          if (device->dev) {
-            bnet_fsend(user, "   %s\n", device->dev->print_name());
+            len = Mmsg(msg, "   %s\n", device->dev->print_name());
+            sendit(msg, len, arg);
          } else {
-            bnet_fsend(user, "   %s\n", device->hdr.name);
+            len = Mmsg(msg, "   %s\n", device->hdr.name);
+            sendit(msg, len, arg);
          }
       }
    }
@@ -109,24 +122,27 @@ bool status_cmd(JCR *jcr)
       dev = device->dev;
       if (dev && dev->is_open()) {
          if (dev->is_labeled()) {
-            bnet_fsend(user, _("Device %s is mounted with Volume=\"%s\" Pool=\"%s\"\n"),
+            len = Mmsg(msg, _("Device %s is mounted with Volume=\"%s\" Pool=\"%s\"\n"),
                dev->print_name(), dev->VolHdr.VolumeName, 
                dev->pool_name[0]?dev->pool_name:"*unknown*");
+            sendit(msg, len, arg);
          } else {
-            bnet_fsend(user, _("Device %s open but no Bacula volume is mounted.\n"), 
+            len = Mmsg(msg, _("Device %s open but no Bacula volume is mounted.\n"), 
                dev->print_name());
+            sendit(msg, len, arg);
          }
-         send_blocked_status(jcr, dev);
+         send_blocked_status(dev, sendit, arg);
          if (dev->can_append()) {
             bpb = dev->VolCatInfo.VolCatBlocks;
             if (bpb <= 0) {
                bpb = 1;
             }
             bpb = dev->VolCatInfo.VolCatBytes / bpb;
-            bnet_fsend(user, _("    Total Bytes=%s Blocks=%s Bytes/block=%s\n"),
+            len = Mmsg(msg, _("    Total Bytes=%s Blocks=%s Bytes/block=%s\n"),
                edit_uint64_with_commas(dev->VolCatInfo.VolCatBytes, b1),
                edit_uint64_with_commas(dev->VolCatInfo.VolCatBlocks, b2),
                edit_uint64_with_commas(bpb, b3));
+            sendit(msg, len, arg);
          } else {  /* reading */
             bpb = dev->VolCatInfo.VolCatReads;
             if (bpb <= 0) {
@@ -137,28 +153,35 @@ bool status_cmd(JCR *jcr)
             } else {
                bpb = 0;
             }
-            bnet_fsend(user, _("    Total Bytes Read=%s Blocks Read=%s Bytes/block=%s\n"),
+            len = Mmsg(msg, _("    Total Bytes Read=%s Blocks Read=%s Bytes/block=%s\n"),
                edit_uint64_with_commas(dev->VolCatInfo.VolCatRBytes, b1),
                edit_uint64_with_commas(dev->VolCatInfo.VolCatReads, b2),
                edit_uint64_with_commas(bpb, b3));
+            sendit(msg, len, arg);
          }
-         bnet_fsend(user, _("    Positioned at File=%s Block=%s\n"),
+         len = Mmsg(msg, _("    Positioned at File=%s Block=%s\n"),
             edit_uint64_with_commas(dev->file, b1),
             edit_uint64_with_commas(dev->block_num, b2));
+         sendit(msg, len, arg);
 
       } else {
          if (dev) {
-            bnet_fsend(user, _("Device %s is not open.\n"), dev->print_name());
-         } else {
-            bnet_fsend(user, _("Device \"%s\" is not open or does not exist.\n"), device->hdr.name);
+            len = Mmsg(msg, _("Device %s is not open.\n"), dev->print_name());
+            sendit(msg, len, arg);
+        } else {
+            len = Mmsg(msg, _("Device \"%s\" is not open or does not exist.\n"), device->hdr.name);
+            sendit(msg, len, arg);
          }
-         send_blocked_status(jcr, dev);
+         send_blocked_status(dev, sendit, arg);
       }
    }
-   bnet_fsend(user, _("====\n\n"));
-   bnet_fsend(user, _("In Use Volume status:\n"));
-   list_volumes(user);
-   bnet_fsend(user, _("====\n\n"));
+   len = Mmsg(msg, _("====\n\n"));
+   sendit(msg, len, arg);
+   len = Mmsg(msg, _("In Use Volume status:\n"));
+   sendit(msg, len, arg);
+   list_volumes(sendit, arg);
+   len = Mmsg(msg, _("====\n\n"));
+   sendit(msg, len, arg);
        
 #ifdef xxx
    if (debug_level > 10) {
@@ -168,41 +191,64 @@ bool status_cmd(JCR *jcr)
    }
 #endif
 
-   list_spool_stats(user);
+   list_spool_stats(sendit, arg);
 
-   bnet_sig(user, BNET_EOD);
+   free_pool_memory(msg);
    return true;
 }
 
-static void send_blocked_status(JCR *jcr, DEVICE *dev)
+static void send_blocked_status(DEVICE *dev, void sendit(const char *msg, int len, void *sarg), void *arg)
 {
-   BSOCK *user = jcr->dir_bsock;
-   DCR *dcr = jcr->dcr;
+   char *msg;
+   int len;
+
+   msg = (char *)get_pool_memory(PM_MESSAGE);
 
    if (!dev) {
-      bnet_fsend(user, _("No DEVICE structure.\n\n"));
+      len = Mmsg(msg, _("No DEVICE structure.\n\n"));
+      sendit(msg, len, arg);
       return;
    }
    switch (dev->dev_blocked) {
    case BST_UNMOUNTED:
-      bnet_fsend(user, _("    Device is BLOCKED. User unmounted.\n"));
+      len = Mmsg(msg, _("    Device is BLOCKED. User unmounted.\n"));
+      sendit(msg, len, arg);
       break;
    case BST_UNMOUNTED_WAITING_FOR_SYSOP:
-      bnet_fsend(user, _("    Device is BLOCKED. User unmounted during wait for media/mount.\n"));
+      len = Mmsg(msg, _("    Device is BLOCKED. User unmounted during wait for media/mount.\n"));
+      sendit(msg, len, arg);
       break;
    case BST_WAITING_FOR_SYSOP:
-      if (jcr->JobStatus == JS_WaitMount) {
-         bnet_fsend(user, _("    Device is BLOCKED waiting for mount of volume \"%s\".\n"),
-            dcr->VolumeName);
-      } else {
-         bnet_fsend(user, _("    Device is BLOCKED waiting for media.\n"));
+      {
+         dlist *dcrs = dev->attached_dcrs;
+         bool found_jcr = false;
+
+         if (dcrs != NULL) {
+            DCR *dcr;
+
+            for (dcr = (DCR *)dcrs->first(); dcr != NULL; dcr = (DCR *)dcrs->next(dcr)) {
+               if (dcr->jcr->JobStatus == JS_WaitMount) {
+                  len = Mmsg(msg, _("    Device is BLOCKED waiting for mount of volume \"%s\".\n"),
+                     dcr->VolumeName);
+                  sendit(msg, len, arg);
+                  found_jcr = true;
+               }
+            }
+         }
+
+         if (!found_jcr) {
+            len = Mmsg(msg, _("    Device is BLOCKED waiting for media.\n"));
+            sendit(msg, len, arg);
+         }
       }
       break;
    case BST_DOING_ACQUIRE:
-      bnet_fsend(user, _("    Device is being initialized.\n"));
+      len = Mmsg(msg, _("    Device is being initialized.\n"));
+      sendit(msg, len, arg);
       break;
    case BST_WRITING_LABEL:
-      bnet_fsend(user, _("    Device is blocked labeling a Volume.\n"));
+      len = Mmsg(msg, _("    Device is blocked labeling a Volume.\n"));
+      sendit(msg, len, arg);
       break;
    default:
       break;
@@ -210,68 +256,91 @@ static void send_blocked_status(JCR *jcr, DEVICE *dev)
    /* Send autochanger slot status */
    if (dev->is_autochanger()) {
       if (dev->Slot) {
-         bnet_fsend(user, _("    Slot %d is loaded in drive %d.\n"), 
+         len = Mmsg(msg, _("    Slot %d is loaded in drive %d.\n"), 
             dev->Slot, dev->drive_index);
+         sendit(msg, len, arg);
       } else {
-         bnet_fsend(user, _("    Drive %d is not loaded.\n"), dev->drive_index);
+         len = Mmsg(msg, _("    Drive %d is not loaded.\n"), dev->drive_index);
+         sendit(msg, len, arg);
       }
    }
    if (debug_level > 1) {
-      bnet_fsend(user, _("Configured device capabilities:\n"));
-      bnet_fsend(user, "%sEOF ", dev->capabilities & CAP_EOF ? "" : "!");
-      bnet_fsend(user, "%sBSR ", dev->capabilities & CAP_BSR ? "" : "!");
-      bnet_fsend(user, "%sBSF ", dev->capabilities & CAP_BSF ? "" : "!");
-      bnet_fsend(user, "%sFSR ", dev->capabilities & CAP_FSR ? "" : "!");
-      bnet_fsend(user, "%sFSF ", dev->capabilities & CAP_FSF ? "" : "!");
-      bnet_fsend(user, "%sEOM ", dev->capabilities & CAP_EOM ? "" : "!");
-      bnet_fsend(user, "%sREM ", dev->capabilities & CAP_REM ? "" : "!");
-      bnet_fsend(user, "%sRACCESS ", dev->capabilities & CAP_RACCESS ? "" : "!");
-      bnet_fsend(user, "%sAUTOMOUNT ", dev->capabilities & CAP_AUTOMOUNT ? "" : "!");
-      bnet_fsend(user, "%sLABEL ", dev->capabilities & CAP_LABEL ? "" : "!");
-      bnet_fsend(user, "%sANONVOLS ", dev->capabilities & CAP_ANONVOLS ? "" : "!");
-      bnet_fsend(user, "%sALWAYSOPEN ", dev->capabilities & CAP_ALWAYSOPEN ? "" : "!");
-      bnet_fsend(user, "\n");
-
-      bnet_fsend(user, _("Device state:\n"));
-      bnet_fsend(user, "%sOPENED ", dev->is_open() ? "" : "!");
-      bnet_fsend(user, "%sTAPE ", dev->is_tape() ? "" : "!");
-      bnet_fsend(user, "%sLABEL ", dev->is_labeled() ? "" : "!");
-      bnet_fsend(user, "%sMALLOC ", dev->state & ST_MALLOC ? "" : "!");
-      bnet_fsend(user, "%sAPPEND ", dev->can_append() ? "" : "!");
-      bnet_fsend(user, "%sREAD ", dev->can_read() ? "" : "!");
-      bnet_fsend(user, "%sEOT ", dev->at_eot() ? "" : "!");
-      bnet_fsend(user, "%sWEOT ", dev->state & ST_WEOT ? "" : "!");
-      bnet_fsend(user, "%sEOF ", dev->at_eof() ? "" : "!");
-      bnet_fsend(user, "%sNEXTVOL ", dev->state & ST_NEXTVOL ? "" : "!");
-      bnet_fsend(user, "%sSHORT ", dev->state & ST_SHORT ? "" : "!");
-      bnet_fsend(user, "%sMOUNTED ", dev->state & ST_MOUNTED ? "" : "!");
-      bnet_fsend(user, "\n");
-      bnet_fsend(user, _("num_writers=%d JobStatus=%c block=%d\n\n"), dev->num_writers,
-         jcr->JobStatus, dev->dev_blocked);
-
-      bnet_fsend(user, _("Device parameters:\n"));
-      bnet_fsend(user, _("Archive name: %s Device name: %s\n"), dev->archive_name(),
+      len = Mmsg(msg, _("Configured device capabilities:\n"));
+      sendit(msg, len, arg);
+
+      len = Mmsg(msg, "%sEOF %sBSR %sBSF %sFSR %sFSF %sEOM %sREM %sRACCESS %sAUTOMOUNT %sLABEL %sANONVOLS %sALWAYSOPEN\n",
+         dev->capabilities & CAP_EOF ? "" : "!", 
+         dev->capabilities & CAP_BSR ? "" : "!", 
+         dev->capabilities & CAP_BSF ? "" : "!", 
+         dev->capabilities & CAP_FSR ? "" : "!", 
+         dev->capabilities & CAP_FSF ? "" : "!", 
+         dev->capabilities & CAP_EOM ? "" : "!", 
+         dev->capabilities & CAP_REM ? "" : "!", 
+         dev->capabilities & CAP_RACCESS ? "" : "!",
+         dev->capabilities & CAP_AUTOMOUNT ? "" : "!", 
+         dev->capabilities & CAP_LABEL ? "" : "!", 
+         dev->capabilities & CAP_ANONVOLS ? "" : "!", 
+         dev->capabilities & CAP_ALWAYSOPEN ? "" : "!");
+      sendit(msg, len, arg);
+
+      len = Mmsg(msg, _("Device state:\n"));
+      sendit(msg, len, arg);
+
+      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, arg);
+
+      len = Mmsg(msg, _("num_writers=%d block=%d\n\n"), dev->num_writers, dev->dev_blocked);
+      sendit(msg, len, arg);
+
+      len = Mmsg(msg, _("Device parameters:\n"));
+      sendit(msg, len, arg);
+
+      len = Mmsg(msg, _("Archive name: %s Device name: %s\n"), dev->archive_name(),
          dev->name());
-      bnet_fsend(user, _("File=%u block=%u\n"), dev->file, dev->block_num);
-      bnet_fsend(user, _("Min block=%u Max block=%u\n"), dev->min_block_size, dev->max_block_size);
+      sendit(msg, len, arg);
+
+      len = Mmsg(msg, _("File=%u block=%u\n"), dev->file, dev->block_num);
+      sendit(msg, len, arg);
+
+      len = Mmsg(msg, _("Min block=%u Max block=%u\n"), dev->min_block_size, dev->max_block_size);
+      sendit(msg, len, arg);
    }
 
+   free_pool_memory(msg);
 }
 
-static void list_running_jobs(BSOCK *user)
+static void list_running_jobs(void sendit(const char *msg, int len, void *sarg), void *arg)
 {
    bool found = false;
    int bps, sec;
    JCR *jcr;
    DCR *dcr, *rdcr;
    char JobName[MAX_NAME_LENGTH];
-   char b1[30], b2[30], b3[30];
+   char *msg, b1[30], b2[30], b3[30];
+   int len;
+
+   msg = (char *)get_pool_memory(PM_MESSAGE);
+
+   len = Mmsg(msg, _("\nRunning Jobs:\n"));
+   sendit(msg, len, arg);
 
-   bnet_fsend(user, _("\nRunning Jobs:\n"));
    foreach_jcr(jcr) {
       if (jcr->JobStatus == JS_WaitFD) {
-         bnet_fsend(user, _("%s Job %s waiting for Client connection.\n"),
+         len = Mmsg(msg, _("%s Job %s waiting for Client connection.\n"),
             job_type_to_str(jcr->JobType), jcr->Job);
+         sendit(msg, len, arg);
       }
       dcr = jcr->dcr;
       rdcr = jcr->read_dcr;
@@ -285,7 +354,7 @@ static void list_running_jobs(BSOCK *user)
             }
          }
          if (rdcr && rdcr->device) {
-            bnet_fsend(user, _("Reading: %s %s job %s JobId=%d Volume=\"%s\"\n"
+            len = Mmsg(msg, _("Reading: %s %s job %s JobId=%d Volume=\"%s\"\n"
                             "    pool=\"%s\" device=\"%s\"\n"),
                    job_level_to_str(jcr->JobLevel),
                    job_type_to_str(jcr->JobType),
@@ -295,9 +364,10 @@ static void list_running_jobs(BSOCK *user)
                    rdcr->pool_name,
                    rdcr->dev?rdcr->dev->print_name(): 
                             rdcr->device->device_name);
+            sendit(msg, len, arg);
          }
          if (dcr && dcr->device) {
-            bnet_fsend(user, _("Writing: %s %s job %s JobId=%d Volume=\"%s\"\n"
+            len = Mmsg(msg, _("Writing: %s %s job %s JobId=%d Volume=\"%s\"\n"
                             "    pool=\"%s\" device=\"%s\"\n"),
                    job_level_to_str(jcr->JobLevel),
                    job_type_to_str(jcr->JobType),
@@ -307,27 +377,29 @@ static void list_running_jobs(BSOCK *user)
                    dcr->pool_name,
                    dcr->dev?dcr->dev->print_name(): 
                             dcr->device->device_name);
-            bnet_fsend(user, _("    spooling=%d despooling=%d despool_wait=%d\n"),
-                   dcr->spooling, dcr->despooling, dcr->despool_wait); 
+            sendit(msg, len, arg);
          }
          sec = time(NULL) - jcr->run_time;
          if (sec <= 0) {
             sec = 1;
          }
          bps = jcr->JobBytes / sec;
-         bnet_fsend(user, _("    Files=%s Bytes=%s Bytes/sec=%s\n"),
+         len = Mmsg(msg, _("    Files=%s Bytes=%s Bytes/sec=%s\n"),
             edit_uint64_with_commas(jcr->JobFiles, b1),
             edit_uint64_with_commas(jcr->JobBytes, b2),
             edit_uint64_with_commas(bps, b3));
+         sendit(msg, len, arg);
          found = true;
 #ifdef DEBUG
          if (jcr->file_bsock) {
-            bnet_fsend(user, _("    FDReadSeqNo=%s in_msg=%u out_msg=%d fd=%d\n"),
+            len = Mmsg(msg, _("    FDReadSeqNo=%s in_msg=%u out_msg=%d fd=%d\n"),
                edit_uint64_with_commas(jcr->file_bsock->read_seqno, b1),
                jcr->file_bsock->in_msg_no, jcr->file_bsock->out_msg_no,
                jcr->file_bsock->fd);
+            sendit(msg, len, arg);
          } else {
-            bnet_fsend(user, _("    FDSocket closed\n"));
+            len = Mmsg(msg, _("    FDSocket closed\n"));
+            sendit(msg, len, arg);
          }
 #endif
       }
@@ -335,29 +407,37 @@ static void list_running_jobs(BSOCK *user)
    endeach_jcr(jcr);
 
    if (!found) {
-      bnet_fsend(user, _("No Jobs running.\n"));
+      len = Mmsg(msg, _("No Jobs running.\n"));
+      sendit(msg, len, arg);
    }
-   bnet_fsend(user, _("====\n"));
+   len = Mmsg(msg, _("====\n"));
+   sendit(msg, len, arg);
+
+   free_pool_memory(msg);
 }
 
-static void list_jobs_waiting_on_reservation(BSOCK *user)
+static void list_jobs_waiting_on_reservation(void sendit(const char *msg, int len, void *sarg), void *arg)
 { 
    JCR *jcr;
+   char *msg;
+
+   msg = _("\nJobs waiting to reserve a drive:\n");
+   sendit(msg, strlen(msg), arg);
 
-   bnet_fsend(user, _("\nJobs waiting to reserve a drive:\n"));
    foreach_jcr(jcr) {
       if (!jcr->reserve_msgs) {
          continue;
       }
-      send_drive_reserve_messages(jcr, user);
+      send_drive_reserve_messages(jcr, sendit, arg);
    }
    endeach_jcr(jcr);
 
-   bnet_fsend(user, _("====\n"));
+   msg = _("====\n");
+   sendit(msg, strlen(msg), arg);
 }
 
 
-static void list_terminated_jobs(void *arg)
+static void list_terminated_jobs(void sendit(const char *msg, int len, void *sarg), void *arg)
 {
    char dt[MAX_TIME_LENGTH], b1[30], b2[30];
    char level[10];
@@ -484,7 +564,7 @@ static const char *level_to_str(int level)
 /*
  * Send to Director
  */
-static void sendit(const char *msg, int len, void *arg)
+static void bsock_sendit(const char *msg, int len, void *arg)
 {
    BSOCK *user = (BSOCK *)arg;
 
@@ -493,6 +573,20 @@ static void sendit(const char *msg, int len, void *arg)
    bnet_send(user);
 }
 
+/*
+ * Status command from Director
+ */
+bool status_cmd(JCR *jcr)
+{
+   BSOCK *user = jcr->dir_bsock;
+
+   bnet_fsend(user, "\n");
+   do_status(bsock_sendit, (void *)user);
+
+   bnet_sig(user, BNET_EOD);
+   return 1;
+}
+
 /*
  * .status command from Director
  */
@@ -536,3 +630,94 @@ bool qstatus_cmd(JCR *jcr)
    bnet_sig(dir, BNET_EOD);
    return true;
 }
+
+#if defined(HAVE_WIN32)
+int bacstat = 0;
+
+struct s_win32_arg {
+   HWND hwnd;
+   int idlist;
+};
+
+/*
+ * Put message in Window List Box
+ */
+static void win32_sendit(const char *msg, int len, void *marg)
+{
+   struct s_win32_arg *arg = (struct s_win32_arg *)marg;
+
+   if (len > 0 && msg[len-1] == '\n') {
+       // when compiling with visual studio some strings are read-only
+       // and cause access violations.  So we creat a tmp copy.
+       char *_msg = (char *)alloca(len);
+       bstrncpy(_msg, msg, len);
+       msg = _msg;
+   }
+   SendDlgItemMessage(arg->hwnd, arg->idlist, LB_ADDSTRING, 0, (LONG)msg);
+
+}
+
+void FillStatusBox(HWND hwnd, int idlist)
+{
+   struct s_win32_arg arg;
+
+   arg.hwnd = hwnd;
+   arg.idlist = idlist;
+
+   /* Empty box */
+   for ( ; SendDlgItemMessage(hwnd, idlist, LB_DELETESTRING, 0, (LONG)0) > 0; )
+      { }
+   do_status(win32_sendit, (void *)&arg);
+}
+
+char *bac_status(char *buf, int buf_len)
+{
+   JCR *njcr;
+   const char *termstat = _("Bacula 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 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 = _("Last Job Canceled");
+         break;
+      case JS_ErrorTerminated:
+      case JS_FatalError:
+         termstat = _("Last Job Failed");
+         break;
+      default:
+         if (job->Errors) {
+            termstat = _("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 */
index 0889a761f7f7d17469fba89dce85d36f75414ff5..b72b9208fa1e5df5275cff419d6c65e2e895116d 100644 (file)
@@ -84,6 +84,10 @@ static void usage()
  *  Main Bacula Unix Storage Daemon
  *
  */
+#if defined(HAVE_WIN32)
+#define main BaculaMain
+#endif
+
 int main (int argc, char *argv[])
 {
    int ch;
index 7ae3dffe94bb217736d034cd6bc72a4d2963a2a3..34569fff88850c38c852ea8d2bc749173c26b56c 100644 (file)
@@ -29,7 +29,7 @@
 # ifdef HAVE_SYS_MTIO_H
 # include <sys/mtio.h>
 # else
-#   ifdef HAVE_SYS_TAPE
+#   ifdef HAVE_SYS_TAPE_H
 #   include <sys/tape.h>
 #   endif
 # endif
index e1677fcc7a7c0368d5731d66dfbf7c09f5ae1911..50b7f9612b5ceaa40a30427b53b8bfa25da9e7d3 100644 (file)
@@ -30,7 +30,7 @@ GETTEXT_LIBS = @LIBINTL@
 OPENSSL_INC = @OPENSSL_INC@
 OPENSSL_LIBS = @OPENSSL_LIBS@
 
-FINDOBJS = testfind.o
+FINDOBJS = testfind.o dird_conf.o inc_conf.o run_conf.o
 
 # these are the objects that are changed by the .configure process
 EXTRAOBJS = @OBJLIST@
@@ -71,6 +71,15 @@ fstype: fstype.o ../lib/libbac.a ../findlib/libfind.a
 drivetype: drivetype.o ../lib/libbac.a ../findlib/libfind.a
        $(CXX) $(LDFLAGS) -L../lib -L../findlib -o $@ drivetype.o -lfind -lbac -lm $(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) $<
+
+run_conf.o: ../dird/run_conf.c
+       $(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) $(PYTHON_INC) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $<
+
+inc_conf.o: ../dird/inc_conf.c
+       $(CXX) $(DEFS) $(DEBUG) -c $(CPPFLAGS) $(PYTHON_INC) -I$(srcdir) -I$(basedir) $(DINCLUDE) $(CFLAGS) $<
+
 testfind: ../findlib/libfind.a ../lib/libbac.a $(FINDOBJS)
        $(CXX) -g $(LDFLAGS) -L. -L../lib -L../findlib -o $@ $(FINDOBJS) \
          $(DLIB) -lfind -lbac -lm $(LIBS) $(GETTEXT_LIBS) $(OPENSSL_LIBS)
index fe4c21a2e626489d31bfa17bad4c3d326c3f607d..3b7876912fccd53f44070374ba1d648840386947 100644 (file)
  */
 
 #include "bacula.h"
+#include "dird/dird.h"
 #include "findlib/find.h"
 
 
 #if defined(HAVE_WIN32)
-int win32_client = 1;
-#else
-int win32_client = 0;
+#define isatty(fd) (fd==0)
 #endif
 
 /* Dummy functions */
@@ -42,6 +41,8 @@ static JCR *jcr;
 
 static int print_file(FF_PKT *ff, void *pkt, bool);
 static void count_files(FF_PKT *ff);
+static bool copy_fileset(FF_PKT *ff, JCR *jcr);
+static void set_options(findFOPTS *fo, const char *opts);
 
 static void usage()
 {
@@ -50,9 +51,8 @@ static void usage()
 "Usage: testfind [-d debug_level] [-] [pattern1 ...]\n"
 "       -a          print extended attributes (Win32 debug)\n"
 "       -dnn        set debug level to nn\n"
-"       -e          specify file of exclude patterns\n"
-"       -i          specify file of include patterns\n"
-"       -           read pattern(s) from stdin\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"
@@ -71,22 +71,26 @@ int
 main (int argc, char *const *argv)
 {
    FF_PKT *ff;
-   char name[1000];
-   int i, ch, hard_links;
-   char *inc = NULL;
-   char *exc = NULL;
-   FILE *fd;
+   char *configfile = "bacula-dir.conf";
+   char *fileset_name = "Windows-Full-Set";
+   int ch, hard_links;
+
+   OSDependentInit();
 
    setlocale(LC_ALL, "");
    bindtextdomain("bacula", LOCALEDIR);
    textdomain("bacula");
 
-   while ((ch = getopt(argc, argv, "ad:e:i:?")) != -1) {
+   while ((ch = getopt(argc, argv, "ac:d:f:?")) != -1) {
       switch (ch) {
          case 'a':                    /* print extended attributes *debug* */
             attrs = 1;
             break;
 
+         case 'c':                    /* set debug level */
+            configfile = optarg;
+            break;
+
          case 'd':                    /* set debug level */
             debug_level = atoi(optarg);
             if (debug_level <= 0) {
@@ -94,12 +98,8 @@ main (int argc, char *const *argv)
             }
             break;
 
-         case 'e':                    /* exclude patterns */
-            exc = optarg;
-            break;
-
-         case 'i':                    /* include patterns */
-            inc = optarg;
+         case 'f':                    /* exclude patterns */
+            fileset_name = optarg;
             break;
 
          case '?':
@@ -108,56 +108,105 @@ main (int argc, char *const *argv)
 
       }
    }
+
    argc -= optind;
    argv += optind;
 
-   jcr = new_jcr(sizeof(JCR), NULL);
+   parse_config(configfile);
 
-   ff = init_find_files();
-   if (argc == 0 && !inc) {
-      add_fname_to_include_list(ff, 0, "/"); /* default to / */
-   } else {
-      for (i=0; i < argc; i++) {
-         if (strcmp(argv[i], "-") == 0) {
-             while (fgets(name, sizeof(name)-1, stdin)) {
-                strip_trailing_junk(name);
-                add_fname_to_include_list(ff, 0, name);
-              }
-              continue;
-         }
-         add_fname_to_include_list(ff, 0, argv[i]);
-      }
+   MSGS *msg;
+
+   foreach_res(msg, R_MSGS)
+   {
+      init_msg(NULL, msg);
    }
-   if (inc) {
-      fd = fopen(inc, "r");
-      if (!fd) {
-         printf(_("Could not open include file: %s\n"), inc);
-         exit(1);
-      }
-      while (fgets(name, sizeof(name)-1, fd)) {
-         strip_trailing_junk(name);
-         add_fname_to_include_list(ff, 0, name);
+
+   jcr = new_jcr(sizeof(JCR), NULL);
+   jcr->fileset = (FILESET *)GetResWithName(R_FILESET, fileset_name);
+
+   if (jcr->fileset == NULL) {
+      fprintf(stderr, "%s: Fileset not found\n", fileset_name);
+
+      FILESET *var;
+
+      fprintf(stderr, "Valid FileSets:\n");
+      
+      foreach_res(var, R_FILESET) {
+         fprintf(stderr, "    %s\n", var->hdr.name);
       }
-      fclose(fd);
+
+      exit(1);
    }
 
-   if (exc) {
-      fd = fopen(exc, "r");
-      if (!fd) {
-         printf(_("Could not open exclude file: %s\n"), exc);
-         exit(1);
+   ff = init_find_files();
+   
+   copy_fileset(ff, jcr);
+
+   find_files(jcr, ff, print_file, NULL);
+
+   free_jcr(jcr);
+   free_config_resources();
+   term_last_jobs_list();
+
+   /* Clean up fileset */
+   findFILESET *fileset = ff->fileset;
+
+   if (fileset) {
+      int i, j, k;
+      /* Delete FileSet Include lists */
+      for (i=0; i<fileset->include_list.size(); i++) {
+         findINCEXE *incexe = (findINCEXE *)fileset->include_list.get(i);
+         for (j=0; j<incexe->opts_list.size(); j++) {
+            findFOPTS *fo = (findFOPTS *)incexe->opts_list.get(j);
+            for (k=0; k<fo->regex.size(); k++) {
+               regfree((regex_t *)fo->regex.get(k));
+            }
+            fo->regex.destroy();
+            fo->regexdir.destroy();
+            fo->regexfile.destroy();
+            fo->wild.destroy();
+            fo->wilddir.destroy();
+            fo->wildfile.destroy();
+            fo->wildbase.destroy();
+            fo->fstype.destroy();
+            fo->drivetype.destroy();
+            if (fo->reader) {
+               free(fo->reader);
+            }
+            if (fo->writer) {
+               free(fo->writer);
+            }
+         }
+         incexe->opts_list.destroy();
+         incexe->name_list.destroy();
       }
-      while (fgets(name, sizeof(name)-1, fd)) {
-         strip_trailing_junk(name);
-         add_fname_to_exclude_list(ff, name);
+      fileset->include_list.destroy();
+
+      /* Delete FileSet Exclude lists */
+      for (i=0; i<fileset->exclude_list.size(); i++) {
+         findINCEXE *incexe = (findINCEXE *)fileset->exclude_list.get(i);
+         for (j=0; j<incexe->opts_list.size(); j++) {
+            findFOPTS *fo = (findFOPTS *)incexe->opts_list.get(j);
+            fo->regex.destroy();
+            fo->regexdir.destroy();
+            fo->regexfile.destroy();
+            fo->wild.destroy();
+            fo->wilddir.destroy();
+            fo->wildfile.destroy();
+            fo->wildbase.destroy();
+            fo->fstype.destroy();
+            fo->drivetype.destroy();
+         }
+         incexe->opts_list.destroy();
+         incexe->name_list.destroy();
       }
-      fclose(fd);
+      fileset->exclude_list.destroy();
+      free(fileset);
    }
-   match_files(jcr, ff, print_file, NULL);
-   term_include_exclude_files(ff);
+   ff->fileset = NULL;
    hard_links = term_find_files(ff);
 
-   printf(_(""
+   printf(_("\n"
 "Total files    : %d\n"
 "Max file length: %d\n"
 "Max path length: %d\n"
@@ -167,10 +216,11 @@ main (int argc, char *const *argv)
      num_files, max_file_len, max_path_len,
      trunc_fname, trunc_path, hard_links);
 
-  free_jcr(jcr);
-  close_memory_pool();
-  sm_dump(false);
-  exit(0);
+   term_msg();
+
+   close_memory_pool();
+   sm_dump(false);
+   exit(0);
 }
 
 static int print_file(FF_PKT *ff, void *pkt, bool top_level) 
@@ -213,6 +263,7 @@ static int print_file(FF_PKT *ff, void *pkt, bool top_level)
    case FT_NORECURSE:
    case FT_NOFSCHG:
    case FT_INVALIDFS:
+   case FT_INVALIDDT:
    case FT_DIREND:
       if (debug_level) {
          char errmsg[100] = "";
@@ -222,6 +273,8 @@ static int print_file(FF_PKT *ff, void *pkt, bool top_level)
             bstrncpy(errmsg, _("\t[will not descend: file system change not allowed]"), sizeof(errmsg));
          } else if (ff->type == FT_INVALIDFS) {
             bstrncpy(errmsg, _("\t[will not descend: disallowed file system]"), sizeof(errmsg));
+         } else if (ff->type == FT_INVALIDDT) {
+            bstrncpy(errmsg, _("\t[will not descend: disallowed drive type]"), sizeof(errmsg));
          }
          printf("%s%s%s\n", (debug_level > 1 ? "Dir: " : ""), ff->fname, errmsg);
       }
@@ -341,3 +394,230 @@ static void count_files(FF_PKT *ar)
 }
 
 bool python_set_prog(JCR*, char const*) { return false; }
+
+static bool copy_fileset(FF_PKT *ff, JCR *jcr)
+{
+   FILESET *jcr_fileset = jcr->fileset;
+   int num;
+   bool include = true;
+
+   findFILESET *fileset;
+   findFOPTS *current_opts;
+
+   fileset = (findFILESET *)malloc(sizeof(findFILESET));
+   memset(fileset, 0, sizeof(findFILESET));
+   ff->fileset = fileset;
+
+   fileset->state = state_none;
+   fileset->include_list.init(1, true);
+   fileset->exclude_list.init(1, true);
+
+   for ( ;; ) {
+      if (include) {
+         num = jcr_fileset->num_includes;
+      } else {
+         num = jcr_fileset->num_excludes;
+      }
+      for (int i=0; i<num; i++) {
+         INCEXE *ie;
+         int j, k;
+
+         if (include) {
+            ie = jcr_fileset->include_items[i];
+
+            /* New include */
+            fileset->incexe = (findINCEXE *)malloc(sizeof(findINCEXE));
+            memset(fileset->incexe, 0, sizeof(findINCEXE));
+            fileset->incexe->opts_list.init(1, true);
+            fileset->incexe->name_list.init(1, true);
+            fileset->include_list.append(fileset->incexe);
+         } else {
+            ie = jcr_fileset->exclude_items[i];
+
+            /* New exclude */
+            fileset->incexe = (findINCEXE *)malloc(sizeof(findINCEXE));
+            memset(fileset->incexe, 0, sizeof(findINCEXE));
+            fileset->incexe->opts_list.init(1, true);
+            fileset->incexe->name_list.init(1, true);
+            fileset->exclude_list.append(fileset->incexe);
+         }
+
+         for (j=0; j<ie->num_opts; j++) {
+            FOPTS *fo = ie->opts_list[j];
+
+            current_opts = (findFOPTS *)malloc(sizeof(findFOPTS));
+            memset(current_opts, 0, sizeof(findFOPTS));
+            fileset->incexe->current_opts = current_opts;
+            fileset->incexe->opts_list.append(current_opts);
+
+            current_opts->regex.init(1, true);
+            current_opts->regexdir.init(1, true);
+            current_opts->regexfile.init(1, true);
+            current_opts->wild.init(1, true);
+            current_opts->wilddir.init(1, true);
+            current_opts->wildfile.init(1, true);
+            current_opts->wildbase.init(1, true);
+            current_opts->fstype.init(1, true);
+            current_opts->drivetype.init(1, true);
+
+            set_options(current_opts, fo->opts);
+
+            for (k=0; k<fo->regex.size(); k++) {
+               // bnet_fsend(fd, "R %s\n", fo->regex.get(k));
+               current_opts->regex.append(bstrdup((const char *)fo->regex.get(k)));
+            }
+            for (k=0; k<fo->regexdir.size(); k++) {
+               // bnet_fsend(fd, "RD %s\n", fo->regexdir.get(k));
+               current_opts->regexdir.append(bstrdup((const char *)fo->regexdir.get(k)));
+            }
+            for (k=0; k<fo->regexfile.size(); k++) {
+               // bnet_fsend(fd, "RF %s\n", fo->regexfile.get(k));
+               current_opts->regexfile.append(bstrdup((const char *)fo->regexfile.get(k)));
+            }
+            for (k=0; k<fo->wild.size(); k++) {
+               current_opts->wild.append(bstrdup((const char *)fo->wild.get(k)));
+            }
+            for (k=0; k<fo->wilddir.size(); k++) {
+               current_opts->wilddir.append(bstrdup((const char *)fo->wilddir.get(k)));
+            }
+            for (k=0; k<fo->wildfile.size(); k++) {
+               current_opts->wildfile.append(bstrdup((const char *)fo->wildfile.get(k)));
+            }
+            for (k=0; k<fo->wildbase.size(); k++) {
+               current_opts->wildbase.append(bstrdup((const char *)fo->wildbase.get(k)));
+            }
+            for (k=0; k<fo->fstype.size(); k++) {
+               current_opts->fstype.append(bstrdup((const char *)fo->fstype.get(k)));
+            }
+            for (k=0; k<fo->drivetype.size(); k++) {
+               current_opts->drivetype.append(bstrdup((const char *)fo->drivetype.get(k)));
+            }
+            if (fo->reader) {
+               current_opts->reader = bstrdup(fo->reader);
+            }
+            if (fo->writer) {
+               current_opts->writer = bstrdup(fo->writer);
+            }
+         }
+
+         for (j=0; j<ie->name_list.size(); j++) {
+            fileset->incexe->name_list.append(bstrdup((const char *)ie->name_list.get(j)));
+         }
+      }
+
+      if (!include) {                 /* If we just did excludes */
+         break;                       /*   all done */
+      }
+
+      include = false;                /* Now do excludes */
+   }
+
+   return true;
+}
+
+static void set_options(findFOPTS *fo, const char *opts)
+{
+   int j;
+   const char *p;
+
+   for (p=opts; *p; p++) {
+      switch (*p) {
+      case 'a':                 /* alway replace */
+      case '0':                 /* no option */
+         break;
+      case 'e':
+         fo->flags |= FO_EXCLUDE;
+         break;
+      case 'f':
+         fo->flags |= FO_MULTIFS;
+         break;
+      case 'h':                 /* no recursion */
+         fo->flags |= FO_NO_RECURSION;
+         break;
+      case 'H':                 /* no hard link handling */
+         fo->flags |= FO_NO_HARDLINK;
+         break;
+      case 'i':
+         fo->flags |= FO_IGNORECASE;
+         break;
+      case 'M':                 /* MD5 */
+         fo->flags |= FO_MD5;
+         break;
+      case 'n':
+         fo->flags |= FO_NOREPLACE;
+         break;
+      case 'p':                 /* use portable data format */
+         fo->flags |= FO_PORTABLE;
+         break;
+      case 'R':                 /* Resource forks and Finder Info */
+         fo->flags |= FO_HFSPLUS;
+      case 'r':                 /* read fifo */
+         fo->flags |= FO_READFIFO;
+         break;
+      case 'S':
+         switch(*(p + 1)) {
+         case ' ':
+            /* Old director did not specify SHA variant */
+            fo->flags |= FO_SHA1;
+            break;
+         case '1':
+            fo->flags |= FO_SHA1;
+            p++;
+            break;
+#ifdef HAVE_SHA2
+         case '2':
+            fo->flags |= FO_SHA256;
+            p++;
+            break;
+         case '3':
+            fo->flags |= FO_SHA512;
+            p++;
+            break;
+#endif
+         default:
+            /* Automatically downgrade to SHA-1 if an unsupported
+             * SHA variant is specified */
+            fo->flags |= FO_SHA1;
+            p++;
+            break;
+         }
+         break;
+      case 's':
+         fo->flags |= FO_SPARSE;
+         break;
+      case 'm':
+         fo->flags |= FO_MTIMEONLY;
+         break;
+      case 'k':
+         fo->flags |= FO_KEEPATIME;
+         break;
+      case 'A':
+         fo->flags |= FO_ACL;
+         break;
+      case 'V':                  /* verify options */
+         /* Copy Verify Options */
+         for (j=0; *p && *p != ':'; p++) {
+            fo->VerifyOpts[j] = *p;
+            if (j < (int)sizeof(fo->VerifyOpts) - 1) {
+               j++;
+            }
+         }
+         fo->VerifyOpts[j] = 0;
+         break;
+      case 'w':
+         fo->flags |= FO_IF_NEWER;
+         break;
+      case 'W':
+         fo->flags |= FO_ENHANCEDWILD;
+         break;
+      case 'Z':                 /* gzip compression */
+         fo->flags |= FO_GZIP;
+         fo->GZIP_level = *++p - '0';
+         Dmsg1(200, "Compression level=%d\n", fo->GZIP_level);
+         break;
+      default:
+         Emsg1(M_ERROR, 0, _("Unknown include/exclude option: %c\n"), *p);
+         break;
+      }
+   }
+}