- Figure out how to use ssh or stunnel to protect Bacula communications.
For 1.32:
+- Enhance autochanger interface to include a "scan" feature
+ scan 1; scan 1-5; scan 1,2,4 ... to update the catalog
+ when the magazine is changed.
+- Make things like list where a file is saved case independent for
+ Windows.
- Edit the Client/Storage name into authentication failure messages.
- Implement job in VerifyToCatalog
- Implement migrate
{
B_DB *mdb;
+ if (!db_user) {
+ Jmsg(jcr, M_FATAL, 0, _("A user name for MySQL must be supplied.\n"));
+ return NULL;
+ }
P(mutex); /* lock DB queue */
/* Look to see if DB already open */
for (mdb=NULL; (mdb=(B_DB *)qnext(&db_list, &mdb->bq)); ) {
memset(mdb, 0, sizeof(B_DB));
mdb->db_name = bstrdup(db_name);
mdb->db_user = bstrdup(db_user);
- mdb->db_password = bstrdup(db_password);
+ if (db_password) {
+ mdb->db_password = bstrdup(db_password);
+ }
if (db_address) {
mdb->db_address = bstrdup(db_address);
}
while ((ch = getopt(argc, argv, "c:d:fg:r:stu:v?")) != -1) {
switch (ch) {
case 'c': /* specify config file */
- if (configfile != NULL) {
- free(configfile);
- }
- configfile = bstrdup(optarg);
- break;
+ if (configfile != NULL) {
+ free(configfile);
+ }
+ configfile = bstrdup(optarg);
+ break;
- case 'd': /* set debug level */
- debug_level = atoi(optarg);
- if (debug_level <= 0) {
- debug_level = 1;
- }
- Dmsg1(0, "Debug level = %d\n", debug_level);
- break;
+ case 'd': /* set debug level */
+ debug_level = atoi(optarg);
+ if (debug_level <= 0) {
+ debug_level = 1;
+ }
+ Dmsg1(0, "Debug level = %d\n", debug_level);
+ break;
- case 'f': /* run in foreground */
- background = FALSE;
- break;
+ case 'f': /* run in foreground */
+ background = FALSE;
+ break;
- case 'g': /* set group id */
- gid = optarg;
- break;
+ case 'g': /* set group id */
+ gid = optarg;
+ break;
- case 'r': /* run job */
- if (runjob != NULL) {
- free(runjob);
- }
- if (optarg) {
- runjob = bstrdup(optarg);
- }
- break;
+ case 'r': /* run job */
+ if (runjob != NULL) {
+ free(runjob);
+ }
+ if (optarg) {
+ runjob = bstrdup(optarg);
+ }
+ break;
- case 's': /* turn off signals */
- no_signals = TRUE;
- break;
+ case 's': /* turn off signals */
+ no_signals = TRUE;
+ break;
- case 't': /* test config */
- test_config = TRUE;
- break;
+ case 't': /* test config */
+ test_config = TRUE;
+ break;
- case 'u': /* set uid */
- uid = optarg;
- break;
+ case 'u': /* set uid */
+ uid = optarg;
+ break;
- case 'v': /* verbose */
- verbose++;
- break;
+ case 'v': /* verbose */
+ verbose++;
+ break;
- case '?':
- default:
- usage();
+ case '?':
+ default:
+ usage();
}
}
db = db_init_database(NULL, catalog->db_name, catalog->db_user,
catalog->db_password, catalog->db_address,
catalog->db_port, catalog->db_socket);
- if (!db_open_database(NULL, db)) {
- Jmsg(NULL, M_FATAL, 0, _("Could not open %s database \"%s\".\n"),
- catalog_db, catalog->db_name);
+ if (!db || !db_open_database(NULL, db)) {
+ Jmsg(NULL, M_FATAL, 0, _("Could not open database \"%s\".\n"),
+ catalog->db_name);
+ if (db) {
+ Jmsg(NULL, M_FATAL, 0, _("%s"), db_strerror(db));
+ }
OK = FALSE;
} else {
/* If a pool is defined for this job, create the pool DB
jcr->db=db_init_database(jcr, jcr->catalog->db_name, jcr->catalog->db_user,
jcr->catalog->db_password, jcr->catalog->db_address,
jcr->catalog->db_port, jcr->catalog->db_socket);
- if (!db_open_database(jcr, jcr->db)) {
- Jmsg(jcr, M_FATAL, 0, "%s", db_strerror(jcr->db));
+ if (!jcr->db || !db_open_database(jcr, jcr->db)) {
+ Jmsg(jcr, M_FATAL, 0, _("Could not open database \"%s\".\n"),
+ jcr->catalog->db_name);
+ if (jcr->db) {
+ Jmsg(jcr, M_FATAL, 0, "%s", db_strerror(jcr->db));
+ }
set_jcr_job_status(jcr, JS_ErrorTerminated);
free_jcr(jcr);
return;
ua->db = db_init_database(ua->jcr, ua->catalog->db_name, ua->catalog->db_user,
ua->catalog->db_password, ua->catalog->db_address,
ua->catalog->db_port, ua->catalog->db_socket);
- if (!db_open_database(ua->jcr, ua->db)) {
- bsendmsg(ua, _("Could not open DB %s: ERR=%s"),
- ua->catalog->db_name, db_strerror(ua->db));
+ if (!ua->db || !db_open_database(ua->jcr, ua->db)) {
+ bsendmsg(ua, _("Could not open database \"%s\".\n"),
+ ua->catalog->db_name);
+ if (ua->db) {
+ bsendmsg(ua, "%s", db_strerror(ua->db));
+ }
close_db(ua);
return 0;
}
/*
* Concatenate a string (str) onto a pool memory buffer pm
*/
-in pm_strcat(POOLMEM **pm, char *str)
+int pm_strcat(POOLMEM **pm, char *str)
{
int pmlen = strlen(*pm);
int len = strlen(str) + 1;