/*
Bacula® - The Network Backup Solution
- Copyright (C) 2000-2007 Free Software Foundation Europe e.V.
+ Copyright (C) 2000-2008 Free Software Foundation Europe e.V.
The main author of Bacula is Kern Sibbald, with contributions from
many others, a complete list can be found in the file AUTHORS.
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- Bacula® is a registered trademark of John Walker.
+ Bacula® is a registered trademark of Kern Sibbald.
The licensor of Bacula is the Free Software Foundation Europe
(FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich,
Switzerland, email:ftf@fsfeurope.org.
#include "stored.h"
/* Imported functions */
-
+extern bool parse_sd_config(CONFIG *config, const char *configfile, int exit_code);
/* Forward referenced functions */
void terminate_stored(int sig);
static bool foreground = 0;
static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
static workq_t dird_workq; /* queue for processing connections */
+static CONFIG *config;
static void usage()
configfile = bstrdup(CONFIG_FILE);
}
- parse_config(configfile);
+ config = new_config_parser();
+ parse_sd_config(config, configfile, M_ERROR_TERM);
if (init_crypto() != 0) {
Jmsg((JCR *)NULL, M_ERROR_TERM, 0, _("Cryptography library initialization failed.\n"));
static void cleanup_old_files()
{
POOLMEM *cleanup = get_pool_memory(PM_MESSAGE);
+ POOLMEM *results = get_pool_memory(PM_MESSAGE);
int len = strlen(me->working_directory);
#if defined(HAVE_WIN32)
pm_strcpy(cleanup, "del /q ");
}
pm_strcat(cleanup, my_name);
pm_strcat(cleanup, "*.spool");
- run_program(cleanup, 0, NULL);
+ run_program(cleanup, 0, results);
free_pool_memory(cleanup);
+ free_pool_memory(results);
}
pthread_detach(pthread_self());
jcr = new_jcr(sizeof(JCR), stored_free_jcr);
- jcr->JobType = JT_SYSTEM;
+ jcr->set_JobType(JT_SYSTEM);
/* Initialize FD start condition variable */
int errstat = pthread_cond_init(&jcr->job_start_wait, NULL);
if (errstat != 0) {
switch (read_dev_volume_label(dcr)) {
case VOL_OK:
memcpy(&dev->VolCatInfo, &dcr->VolCatInfo, sizeof(dev->VolCatInfo));
+ volume_unused(dcr); /* mark volume "released" */
break;
default:
Jmsg1(NULL, M_WARNING, 0, _("Could not mount device %s\n"), dev->print_name());
exit(1);
}
in_here = true;
+ debug_level = 0; /* turn off any debug */
stop_watchdog();
if (sig == SIGTERM) { /* normal shutdown request? */
Dmsg1(200, "In terminate_stored() sig=%d\n", sig);
+ free_volume_list();
+
foreach_res(device, R_DEVICE) {
Dmsg1(10, "Term device %s\n", device->device_name);
if (device->dev) {
free(configfile);
configfile = NULL;
}
- free_config_resources();
+ if (config) {
+ config->free_resources();
+ free(config);
+ config = NULL;
+ }
if (debug_level > 10) {
print_memory_pool_stats();
}
term_msg();
cleanup_crypto();
- free_volume_list();
term_reservations_lock();
close_memory_pool();