]> git.sur5r.net Git - bacula/bacula/commitdiff
Add verbose, Uname info, better Device error msg
authorKern Sibbald <kern@sibbald.com>
Mon, 31 Mar 2003 18:49:56 +0000 (18:49 +0000)
committerKern Sibbald <kern@sibbald.com>
Mon, 31 Mar 2003 18:49:56 +0000 (18:49 +0000)
git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@406 91ce42f0-d328-0410-95d8-f526ca767f89

27 files changed:
bacula/platforms/redhat/.cvsignore
bacula/scripts/bacula.png
bacula/src/cats/protos.h
bacula/src/cats/sql.c
bacula/src/cats/sql_update.c
bacula/src/console/console.c
bacula/src/dird/backup.c
bacula/src/dird/dird.c
bacula/src/dird/fd_cmds.c
bacula/src/dird/getmsg.c
bacula/src/dird/job.c
bacula/src/dird/msgchan.c
bacula/src/dird/protos.h
bacula/src/dird/restore.c
bacula/src/dird/verify.c
bacula/src/filed/filed.c
bacula/src/filed/job.c
bacula/src/lib/message.c
bacula/src/lib/message.h
bacula/src/stored/bcopy.c
bacula/src/stored/bls.c
bacula/src/stored/bscan.c
bacula/src/stored/btape.c
bacula/src/stored/job.c
bacula/src/stored/read_record.c
bacula/src/stored/stored.c
bacula/src/tools/dbcheck.c

index d79558d1ed71f3cd74b4154f3189a7d9893ab082..adc959fa0f5c5f8d51626bca536f6e6cf68c027a 100644 (file)
@@ -6,3 +6,8 @@ bacula.spec
 bacula.sqlite.rh8.spec
 bacula.client.rh8.spec
 bacula.mysql.rh8.spec
+bacula.sqlite.rh7.spec
+bacula.client.rh7.spec
+bacula.mysql.rh7.spec
+
+
index a71fd2232b8f5759c08a0fc1343cef2df853c8b8..bb6d67c7980a139e14fa9f4f70f56787811e5b10 100644 (file)
Binary files a/bacula/scripts/bacula.png and b/bacula/scripts/bacula.png differ
index 4a5080a78bc86e047698b53e4436d797e2344c81..d0cc24cb15559ba4b32d4d84358bd6a8cfeade6e 100644 (file)
@@ -93,6 +93,7 @@ void db_list_client_records(void *jcr, B_DB *mdb, DB_LIST_HANDLER *sendit, void
 /* update.c */
 int  db_update_job_start_record(void *jcr, B_DB *db, JOB_DBR *jr);
 int  db_update_job_end_record(void *jcr, B_DB *db, JOB_DBR *jr);
+int  db_update_client_record(void *jcr, B_DB *mdb, CLIENT_DBR *cr);
 int  db_update_pool_record(void *jcr, B_DB *db, POOL_DBR *pr);
 int  db_update_media_record(void *jcr, B_DB *db, MEDIA_DBR *mr);
 int  db_add_SIG_to_file_record(void *jcr, B_DB *mdb, FileId_t FileId, char *SIG, int type);  
index 408a3f6900a64dafae7ff1a55a895dbea969c13e..e40b3c2114d1cabcdc3e96fa12073b2c5e72bf44 100644 (file)
@@ -88,6 +88,9 @@ QueryDB(char *file, int line, void *jcr, B_DB *mdb, char *cmd)
    if (sql_query(mdb, cmd)) {
       m_msg(file, line, &mdb->errmsg, _("query %s failed:\n%s\n"), cmd, sql_strerror(mdb));
       j_msg(file, line, jcr, M_FATAL, 0, "%s", mdb->errmsg);
+      if (verbose) {
+         j_msg(file, line, jcr, M_INFO, 0, "%s\n", cmd);
+      }
       return 0;
    }
    mdb->result = sql_store_result(mdb);
@@ -106,6 +109,9 @@ InsertDB(char *file, int line, void *jcr, B_DB *mdb, char *cmd)
    if (sql_query(mdb, cmd)) {
       m_msg(file, line, &mdb->errmsg,  _("insert %s failed:\n%s\n"), cmd, sql_strerror(mdb));
       j_msg(file, line, jcr, M_FATAL, 0, "%s", mdb->errmsg);
+      if (verbose) {
+         j_msg(file, line, jcr, M_INFO, 0, "%s\n", cmd);
+      }
       return 0;
    }
    if (mdb->have_insert_id) {
@@ -115,7 +121,7 @@ InsertDB(char *file, int line, void *jcr, B_DB *mdb, char *cmd)
    }
    if (mdb->num_rows != 1) {
       char ed1[30];
-      m_msg(file, line, &mdb->errmsg, _("Insertion problem: affect_rows=%s\n"), 
+      m_msg(file, line, &mdb->errmsg, _("Insertion problem: affected_rows=%s\n"), 
         edit_uint64(mdb->num_rows, ed1));
       return 0;
    }
@@ -134,7 +140,9 @@ UpdateDB(char *file, int line, void *jcr, B_DB *mdb, char *cmd)
    if (sql_query(mdb, cmd)) {
       m_msg(file, line, &mdb->errmsg, _("update %s failed:\n%s\n"), cmd, sql_strerror(mdb));
       j_msg(file, line, jcr, M_ERROR, 0, "%s", mdb->errmsg);
-      j_msg(file, line, jcr, M_ERROR, 0, "%s\n", cmd);
+      if (verbose) {
+         j_msg(file, line, jcr, M_INFO, 0, "%s\n", cmd);
+      }
       return 0;
    }
    mdb->num_rows = sql_affected_rows(mdb);
@@ -160,6 +168,9 @@ DeleteDB(char *file, int line, void *jcr, B_DB *mdb, char *cmd)
    if (sql_query(mdb, cmd)) {
       m_msg(file, line, &mdb->errmsg, _("delete %s failed:\n%s\n"), cmd, sql_strerror(mdb));
       j_msg(file, line, jcr, M_ERROR, 0, "%s", mdb->errmsg);
+      if (verbose) {
+         j_msg(file, line, jcr, M_INFO, 0, "%s\n", cmd);
+      }
       return -1;
    }
    mdb->changes++;
index ff31234a5aed45c3cbf3d08f4ad385c00ef0cd64..eea89901ccc18608c5d7e819e6e00f4af148a90b 100644 (file)
@@ -150,6 +150,32 @@ VolSessionTime=%u, PoolId=%u, FileSetId=%u, JobTDate=%s WHERE JobId=%u",
 }
 
 
+int
+db_update_client_record(void *jcr, B_DB *mdb, CLIENT_DBR *cr)
+{
+   int stat;
+   char ed1[50], ed2[50];
+
+   db_lock(mdb);
+   if (!db_create_client_record(jcr, mdb, cr)) {
+      db_unlock(mdb);
+      return 0;
+   }
+
+   Mmsg(&mdb->cmd,
+"UPDATE Client SET AutoPrune=%d,FileRetention=%s,JobRetention=%s," 
+"Uname='%s' WHERE Name='%s'",
+      cr->AutoPrune,
+      edit_uint64(cr->FileRetention, ed1),
+      edit_uint64(cr->JobRetention, ed2),
+      cr->Uname, cr->Name);
+
+   stat = UPDATE_DB(jcr, mdb, mdb->cmd);
+   db_unlock(mdb);
+   return stat;
+}
+
+
 int
 db_update_pool_record(void *jcr, B_DB *mdb, POOL_DBR *pr)
 {
index c3341f71b834d2ae63d774b7257f408846835e3f..1c6cf1d9563b5a08f8d1e45c9aa8174ff15bbd40 100644 (file)
@@ -136,12 +136,12 @@ static void read_and_process_input(FILE *input, BSOCK *UA_sock)
       while ((stat = bnet_recv(UA_sock)) >= 0) {
         if (at_prompt) {
            if (!stop) {
-               fprintf(output, "\n");
+               putc('\n', output);
            }
            at_prompt = FALSE;
         }
         if (!stop) {
-            fprintf(output, "%s", UA_sock->msg);
+           fputs(UA_sock->msg, output);
         }
       }
       if (!stop) {
@@ -179,15 +179,17 @@ int main(int argc, char *argv[])
    while ((ch = getopt(argc, argv, "bc:d:r:st?")) != -1) {
       switch (ch) {
          case 'c':                    /* configuration file */
-           if (configfile != NULL)
+           if (configfile != NULL) {
               free(configfile);
+           }
            configfile = bstrdup(optarg);
            break;
 
          case 'd':
            debug_level = atoi(optarg);
-           if (debug_level <= 0)
+           if (debug_level <= 0) {
               debug_level = 1;
+           }
            break;
 
          case 's':                    /* turn off signals */
@@ -233,7 +235,7 @@ int main(int argc, char *argv[])
    }
    UnlockRes();
    if (ndir == 0) {
-      Emsg1(M_ABORT, 0, "No Director resource defined in %s\n\
+      Emsg1(M_ERROR_TERM, 0, "No Director resource defined in %s\n\
 Without that I don't how to speak to the Director :-(\n", configfile);
    }
 
@@ -286,7 +288,7 @@ try_again:
    }
    jcr.dir_bsock = UA_sock;
    if (!authenticate_director(&jcr, dir)) {
-      fprintf(stderr, "ERR%s", UA_sock->msg);
+      fprintf(stderr, "ERR=%s", UA_sock->msg);
       terminate_console(0);
       return 1;
    }
@@ -310,8 +312,9 @@ static void terminate_console(int sig)
 {
    static int already_here = FALSE;
 
-   if (already_here)                 /* avoid recursive temination problems */
+   if (already_here) {               /* avoid recursive temination problems */
       exit(1);
+   }
    already_here = TRUE;
    exit(0);
 }
@@ -387,7 +390,7 @@ get_cmd(FILE *input, char *prompt, BSOCK *sock, int sec)
 {
    int len;  
    if (!stop) {
-      fprintf(output, prompt);
+      puts(prompt, output);
       fflush(output);
    }
 again:
index 937efbe6a74429f99e89195b4cd383657bbab6dd..b854ecd51175fe217e58db831eacb90c15e9d6c3 100644 (file)
@@ -210,7 +210,7 @@ int do_backup(JCR *jcr)
       jcr->store->SDDport = jcr->store->SDport;
    }
    bnet_fsend(fd, storaddr, jcr->store->address, jcr->store->SDDport);
-   if (!response(fd, OKstore, "Storage")) {
+   if (!response(fd, OKstore, "Storage", 1)) {
       goto bail_out;
    }
 
@@ -234,13 +234,13 @@ int do_backup(JCR *jcr)
         goto bail_out;
    }
    Dmsg1(120, ">filed: %s", fd->msg);
-   if (!response(fd, OKlevel, "Level")) {
+   if (!response(fd, OKlevel, "Level", 1)) {
       goto bail_out;
    }
 
    /* Send backup command */
    bnet_fsend(fd, backupcmd);
-   if (!response(fd, OKbackup, "backup")) {
+   if (!response(fd, OKbackup, "backup", 1)) {
       goto bail_out;
    }
 
index 0bb4db06f3feaf91444f9a10539ac144b4fb2a71..a8ced2eae95cb0c9f9da9b59449fc24d08f44785 100644 (file)
@@ -71,6 +71,7 @@ static void usage()
 "       -s          no signals\n"
 "       -t          test - read configuration and exit\n"
 "       -u          userid\n"
+"       -v          verbose user messages\n"
 "       -?          print this message.\n"  
 "\n"));
 
@@ -98,7 +99,7 @@ int main (int argc, char *argv[])
    daemon_start_time = time(NULL);
    memset(&last_job, 0, sizeof(last_job));
 
-   while ((ch = getopt(argc, argv, "c:d:fg:r:stu:?")) != -1) {
+   while ((ch = getopt(argc, argv, "c:d:fg:r:stu:v?")) != -1) {
       switch (ch) {
          case 'c':                    /* specify config file */
            if (configfile != NULL) {
@@ -144,6 +145,10 @@ int main (int argc, char *argv[])
            uid = optarg;
            break;
 
+         case 'v':                    /* verbose */
+           verbose++;
+           break;
+
          case '?':
         default:
            usage();
index f565c1360eaa13af6329dbe5453a85dd87a635cc..fed2e5ae562ef87b552a40f0ac03938e02b3fe82 100644 (file)
@@ -100,10 +100,20 @@ int connect_to_file_daemon(JCR *jcr, int retry_interval, int max_retry_time,
          set_jcr_job_status(jcr, JS_ErrorTerminated);
          return 0;
        } else {
-         /***** ***FIXME***** update Client Uname */
+         CLIENT_DBR cr;
+         memset(&cr, 0, sizeof(cr));
+         bstrncpy(cr.Name, jcr->client->hdr.name, sizeof(cr.Name));
+         cr.AutoPrune = jcr->client->AutoPrune;
+         cr.FileRetention = jcr->client->FileRetention;
+         cr.JobRetention = jcr->client->JobRetention;
+         bstrncpy(cr.Uname, fd->msg+strlen(OKjob)+1, sizeof(cr.Uname));
+         if (!db_update_client_record(jcr, jcr->db, &cr)) {
+             Jmsg(jcr, M_WARNING, 0, _("Error updating Client record. ERR=%s\n"),
+               db_strerror(jcr->db));
+         }
        }
    } else {
-      Jmsg(jcr, M_FATAL, 0, _("<filed: bad response to JobId command: %s\n"),
+      Jmsg(jcr, M_FATAL, 0, _("FD gave bad response to JobId command: %s\n"),
         bnet_strerror(fd));
       set_jcr_job_status(jcr, JS_ErrorTerminated);
       return 0;
@@ -113,7 +123,7 @@ int connect_to_file_daemon(JCR *jcr, int retry_interval, int max_retry_time,
 
 
 /*
- * Send either an Included or an Excluded list
+ * Send either an Included or an Excluded list to FD
  */
 static int send_list(JCR *jcr, int list)
 {
@@ -145,7 +155,7 @@ static int send_list(JCR *jcr, int list)
       }
       for (int j=0; j<ie->num_names; j++) {
         p = ie->name_list[j];
-        switch (*p++) {
+        switch (*p) {
          case '|':
             fd->msg = edit_job_codes(jcr, fd->msg, p, "");
             bpipe = open_bpipe(fd->msg, 0, "r");
@@ -199,6 +209,9 @@ static int send_list(JCR *jcr, int list)
            }
            fclose(ffd);
            break;
+         case '\\':
+            p++;                      /* skip over \ */
+           /* Note, fall through wanted */
         default:
            if (ie->num_opts) {
               pm_strcpy(&fd->msg, ie->opts_list[0]->opts);
@@ -206,7 +219,7 @@ static int send_list(JCR *jcr, int list)
            } else {
                pm_strcpy(&fd->msg, "0 ");
            }
-           pm_strcat(&fd->msg, ie->name_list[j]);
+           pm_strcat(&fd->msg, p);
             Dmsg1(100, "Inc/Exc name=%s\n", fd->msg);
            fd->msglen = strlen(fd->msg);
            if (!bnet_send(fd)) {
@@ -219,10 +232,10 @@ static int send_list(JCR *jcr, int list)
    }
    bnet_sig(fd, BNET_EOD);           /* end of data */
    if (list == INC_LIST) {
-      if (!response(fd, OKinc, "Include")) {
+      if (!response(fd, OKinc, "Include", 1)) {
         goto bail_out;
       }
-   } else if (!response(fd, OKexc, "Exclude")) {
+   } else if (!response(fd, OKexc, "Exclude", 1)) {
        goto bail_out;
    }
    return 1;
index 68b6a4a3dffa302cb19ff78af50c01c95338c1bc..0676e1d092380a1d6243acfdf6773f8090fc7b27 100644 (file)
@@ -207,7 +207,7 @@ static char *find_msg_start(char *msg)
  *  Returns: 0 on failure
  *          1 on success
  */
-int response(BSOCK *fd, char *resp, char *cmd)
+int response(BSOCK *fd, char *resp, char *cmd, int prtmsg)
 {
    int n;
 
@@ -219,11 +219,13 @@ int response(BSOCK *fd, char *resp, char *cmd)
       if (strcmp(fd->msg, resp) == 0) {
         return 1;
       }
-      Emsg3(M_FATAL, 0, _("<filed: bad response to %s command: wanted %s got: %s\n"),
-        cmd, resp, fd->msg);
+      if (prtmsg) {
+         Emsg3(M_FATAL, 0, _("FD gave bad response to %s command: wanted %s got: %s\n"),
+           cmd, resp, fd->msg);
+      }
       return 0;
    } 
-   Emsg2(M_FATAL, 0, _("<filed: Socket error from Filed on %s command: ERR=%s\n"),
+   Emsg2(M_FATAL, 0, _("Socket error from Filed on %s command: ERR=%s\n"),
         cmd, bnet_strerror(fd));
    return 0;
 }
index 2618aec553e49ebf30d5c6a647cb58793ebdc05d..451e6502589c8d5d0caf316b316af40e4b166105 100644 (file)
@@ -385,7 +385,7 @@ int get_or_create_client_record(JCR *jcr)
    CLIENT_DBR cr;
 
    memset(&cr, 0, sizeof(cr));
-   strcpy(cr.Name, jcr->client->hdr.name);
+   bstrncpy(cr.Name, jcr->client->hdr.name, sizeof(cr.Name));
    cr.AutoPrune = jcr->client->AutoPrune;
    cr.FileRetention = jcr->client->FileRetention;
    cr.JobRetention = jcr->client->JobRetention;
@@ -395,7 +395,7 @@ int get_or_create_client_record(JCR *jcr)
    jcr->client_name = get_memory(strlen(jcr->client->hdr.name) + 1);
    strcpy(jcr->client_name, jcr->client->hdr.name);
    if (!db_create_client_record(jcr, jcr->db, &cr)) {
-      Jmsg(jcr, M_FATAL, 0, _("Could not create Client record. ERR=%s"), 
+      Jmsg(jcr, M_FATAL, 0, _("Could not create Client record. ERR=%s\n"), 
         db_strerror(jcr->db));
       return 0;
    }
@@ -514,6 +514,9 @@ void dird_free_jcr(JCR *jcr)
    if (jcr->RestoreBootstrap) {
       free(jcr->RestoreBootstrap);
    }
+   if (jcr->client_uname) {
+      free_pool_memory(jcr->client_uname);
+   }
    Dmsg0(200, "End dird free_jcr\n");
 }
 
index 4b3c8f012da846b1fe8ec1b129925077abe139e9..cdaad12cffee935d8098403e430baad4b379eb0c 100644 (file)
@@ -156,8 +156,14 @@ int start_storage_daemon_job(JCR *jcr)
       device_name_len + media_type_len + pool_type_len + pool_name_len);
    bnet_fsend(sd, use_device, device_name, media_type, pool_name, pool_type);
    Dmsg1(110, ">stored: %s", sd->msg);
-   status = response(sd, OK_device, "Use Device");
-
+   status = response(sd, OK_device, "Use Device", 0);
+   if (!status) {
+      pm_strcpy(&pool_type, sd->msg); /* save message */
+      Jmsg(jcr, M_FATAL, 0, _("\n"
+         "     Storage daemon didn't accept Device \"%s\" because:\n     %s"),
+        device_name, pool_type/* sd->msg */);
+   }
+         
    free_memory(device_name);
    free_memory(media_type);
    free_memory(pool_name);
index ef70fcbe181b940fa1bcc0efba589a9ae30e0b89..d4178c1cf855ade3879aab26c2320a4e896815ab 100644 (file)
@@ -71,7 +71,7 @@ extern int connect_to_storage_daemon(JCR *jcr, int retry_interval,
 extern int start_storage_daemon_job(JCR *jcr);
 extern int start_storage_daemon_message_thread(JCR *jcr);
 extern int32_t bget_msg(BSOCK *bs, int type);
-extern int response(BSOCK *fd, char *resp, char *cmd);
+extern int response(BSOCK *fd, char *resp, char *cmd, int prtmsg);
 extern void wait_for_storage_daemon_termination(JCR *jcr);
 
 /* newvol.c */
index a3a9dd686cc68c00e1b0416ad3c89953fc3b2f4e..5ec84e2c1ea58c455928e9b2bf8134e73f07a8a1 100644 (file)
@@ -192,7 +192,7 @@ int do_restore(JCR *jcr)
    }
    bnet_fsend(fd, storaddr, jcr->store->address, jcr->store->SDDport);
    Dmsg1(6, "dird>filed: %s\n", fd->msg);
-   if (!response(fd, OKstore, "Storage")) {
+   if (!response(fd, OKstore, "Storage", 1)) {
       restore_cleanup(jcr, JS_ErrorTerminated);
       return 0;
    }
@@ -219,7 +219,7 @@ int do_restore(JCR *jcr)
                rjr.VolSessionId, rjr.VolSessionTime, 
                rjr.StartFile, rjr.EndFile, rjr.StartBlock, 
                rjr.EndBlock);
-      if (!response(fd, OKsession, "Session")) {
+      if (!response(fd, OKsession, "Session", 1)) {
         restore_cleanup(jcr, JS_ErrorTerminated);
         return 0;
       }
@@ -246,7 +246,7 @@ int do_restore(JCR *jcr)
    bnet_fsend(fd, restorecmd, replace, where);
    unbash_spaces(where);
 
-   if (!response(fd, OKrestore, "Restore")) {
+   if (!response(fd, OKrestore, "Restore", 1)) {
       restore_cleanup(jcr, JS_ErrorTerminated);
       return 0;
    }
@@ -379,7 +379,7 @@ static int send_bootstrap_file(JCR *jcr)
    }
    bnet_sig(fd, BNET_EOD);
    fclose(bs);
-   if (!response(fd, OKbootstrap, "Bootstrap")) {
+   if (!response(fd, OKbootstrap, "Bootstrap", 1)) {
       set_jcr_job_status(jcr, JS_ErrorTerminated);
       return 0;
    }
index f365a2796de98e7b6e36f5a6ef9dbad2012f7042..d42d91bfc9770ceefc94436071251b3646bbdf15 100644 (file)
@@ -214,7 +214,7 @@ int do_verify(JCR *jcr)
            jcr->store->SDDport = jcr->store->SDport;
         }
         bnet_fsend(fd, storaddr, jcr->store->address, jcr->store->SDDport);
-         if (!response(fd, OKstore, "Storage")) {
+         if (!response(fd, OKstore, "Storage", 1)) {
            goto bail_out;
         }
         /*
@@ -226,7 +226,7 @@ int do_verify(JCR *jcr)
                   jr.VolSessionId, jr.VolSessionTime, 
                   jr.StartFile, jr.EndFile, jr.StartBlock, 
                   jr.EndBlock);
-         if (!response(fd, OKsession, "Session")) {
+         if (!response(fd, OKsession, "Session", 1)) {
            goto bail_out;
         }
          level = "volume";
@@ -243,7 +243,7 @@ int do_verify(JCR *jcr)
     * Send verify command/level to File daemon
     */
    bnet_fsend(fd, verifycmd, level);
-   if (!response(fd, OKverify, "Verify")) {
+   if (!response(fd, OKverify, "Verify", 1)) {
       goto bail_out;
    }
 
index df711307405cb078a3f760d7e6c2c2b82ef307fb..7091cf40cb54ef4c35129a6ae9ebcc6eb9057006 100644 (file)
@@ -67,6 +67,7 @@ static void usage()
 "        -s          no signals (for debugging)\n"
 "        -t          test configuration file and exit\n"
 "        -u          userid\n"
+"        -v          verbose user messages\n"
 "        -?          print this message.\n"
 "\n"));         
    exit(1);
@@ -97,7 +98,7 @@ int main (int argc, char *argv[])
 
    memset(&last_job, 0, sizeof(last_job));
 
-   while ((ch = getopt(argc, argv, "c:d:fg:istu:?")) != -1) {
+   while ((ch = getopt(argc, argv, "c:d:fg:istu:v?")) != -1) {
       switch (ch) {
          case 'c':                    /* configuration file */
            if (configfile != NULL) {
@@ -136,6 +137,10 @@ int main (int argc, char *argv[])
            uid = optarg;
            break;
 
+         case 'v':                    /* verbose */
+           verbose++;
+           break;
+
          case '?':
         default:
            usage();
index a451120d3066210f4301d335bb6dbd2e9172d2d8..99947a7f0027a413de6bda138e6a01c2487c88b9 100644 (file)
@@ -293,6 +293,25 @@ static int job_cmd(JCR *jcr)
    return bnet_fsend(dir, OKjob);
 }
 
+#define INC_LIST 0
+#define EXC_LIST 1
+
+static void add_fname_to_list(JCR *jcr, char *fname, int list)
+{
+   char *p;  
+   if (list == INC_LIST) {
+      add_fname_to_include_list((FF_PKT *)jcr->ff, 1, fname);
+   } else {
+      /* Skip leading options -- currently ignored */
+      for (p=fname; *p && *p != ' '; p++)
+        { }
+      /* Skip spaces */
+      for ( ; *p && *p == ' '; p++)
+        { }
+      add_fname_to_exclude_list((FF_PKT *)jcr->ff, p);
+   }
+}
+
 /* 
  * 
  * Get list of files/directories to include from Director
@@ -303,10 +322,10 @@ static int include_cmd(JCR *jcr)
    BSOCK *dir = jcr->dir_bsock;
 
    while (bnet_recv(dir) >= 0) {
-       dir->msg[dir->msglen] = 0;
-       strip_trailing_junk(dir->msg);
-       Dmsg1(010, "include file: %s\n", dir->msg);
-       add_fname_to_include_list((FF_PKT *)jcr->ff, 1, dir->msg);
+      dir->msg[dir->msglen] = 0;
+      strip_trailing_junk(dir->msg);
+      Dmsg1(010, "include file: %s\n", dir->msg);
+      add_fname_to_list(jcr, dir->msg, INC_LIST);
    }
 
    return bnet_fsend(dir, OKinc);
@@ -319,19 +338,12 @@ static int include_cmd(JCR *jcr)
 static int exclude_cmd(JCR *jcr)
 {
    BSOCK *dir = jcr->dir_bsock;
-   char *p;  
 
    while (bnet_recv(dir) >= 0) {
-       dir->msg[dir->msglen] = 0;
-       strip_trailing_junk(dir->msg);
-       /* Skip leading options -- currently ignored */
-       for (p=dir->msg; *p && *p != ' '; p++)
-         { }
-       /* Skip spaces */
-       for ( ; *p && *p == ' '; p++)
-         { }
-       add_fname_to_exclude_list((FF_PKT *)jcr->ff, p);
-       Dmsg1(110, "<dird: exclude file %s\n", dir->msg);
+      dir->msg[dir->msglen] = 0;
+      strip_trailing_junk(dir->msg);
+      add_fname_to_list(jcr, dir->msg, EXC_LIST);
+      Dmsg1(110, "<dird: exclude file %s\n", dir->msg);
    }
 
    return bnet_fsend(dir, OKexc);
index d4caf14e03aaaa7cea97bbb9533cdc74d6251f7a..762bdc255dd1ca7051a764ca4242857aa1603584 100755 (executable)
@@ -34,7 +34,8 @@
 #define FULL_LOCATION 1              /* set for file:line in Debug messages */
 
 char *working_directory = NULL;       /* working directory path stored here */
-int debug_level = 5;                 /* debug level */
+int verbose = 0;                     /* increase User messages */
+int debug_level = 0;                 /* debug level */
 time_t daemon_start_time = 0;        /* Daemon start time */
 
 char my_name[20];                    /* daemon name is stored here */
index 4f8200e0b34b0a2932341a13da6c4e0ddec078d8..2d4ae0bef919320adebae4ba92f7e3a03916ced5 100644 (file)
@@ -106,6 +106,7 @@ void e_msg(char *file, int line, int type, int level, char *fmt,...);
 void Jmsg(void *vjcr, int type, int level, char *fmt,...);
 
 extern int debug_level;
+extern int verbose;
 extern char my_name[];
 extern char *working_directory;
 extern time_t daemon_start_time;
index 69dc4ee1f500f9c0f8bfffb8b578658e8609f74c..11b55215323e45df140c5d724807d349bd05577b 100644 (file)
@@ -41,7 +41,6 @@ static JCR *in_jcr;                  /* input jcr */
 static JCR *out_jcr;                  /* output jcr */
 static BSR *bsr = NULL;
 static char *wd = "/tmp";
-static int verbose = 0;
 static int list_records = 0;
 static uint32_t records = 0;
 static uint32_t jobs = 0;
index dfbd6fed5cf9dff4ea666544ef2ea5698b24cfeb..e0c8cfa9293798f22370cc0c5af36519abe505ff 100644 (file)
@@ -39,7 +39,6 @@ static DEVICE *dev;
 static int dump_label = FALSE;
 static int list_blocks = FALSE;
 static int list_jobs = FALSE;
-static int verbose = 0;
 static DEV_RECORD *rec;
 static DEV_BLOCK *block;
 static JCR *jcr;
index c185e03cca5b7d7f7e50b98a017216f710b53142..44b28490e4e71ca9b1e1d9135b172cd15756ea58 100644 (file)
@@ -81,7 +81,6 @@ static char *db_name = "bacula";
 static char *db_user = "bacula";
 static char *db_password = "";
 static char *wd = NULL;
-static int verbose = 0;
 static int update_db = 0;
 static int update_vol_info = 0;
 static int list_records = 0;
index ecb16f2506375385f5dad5fd561fd5214b94d015..bd1b27a04f24ac16180c42de290caa0a44cea548 100644 (file)
@@ -82,7 +82,6 @@ static uint64_t VolBytes;
 static time_t now;
 static double kbs;
 static long file_index;
-static int verbose = 0;
 static int end_of_tape = 0;
 static uint32_t LastBlock = 0;
 static uint32_t eot_block;
index 432238ee7b0b17aaa9193db7acfd71abfb8e0bc6..0481e25866401d05399ea9e630f8bf81df3191c6 100644 (file)
@@ -44,7 +44,7 @@ static char use_device[] = "use device=%s media_type=%s pool_name=%s pool_type=%
 /* Responses sent to Director daemon */
 static char OKjob[]     = "3000 OK Job SDid=%u SDtime=%u Authorization=%s\n";
 static char OK_device[] = "3000 OK use device\n";
-static char NO_device[] = "3914 Device %s does not exist\n";
+static char NO_device[] = "3914 Device \"%s\" not in SD Device resources.\n";
 static char BAD_use[]   = "3913 Bad use command: %s\n";
 static char BAD_job[]   = "3915 Bad Job command: %s\n";
 
@@ -297,10 +297,19 @@ static int use_device_cmd(JCR *jcr)
         }
       }
       UnlockRes();
-      Jmsg(jcr, M_FATAL, 0, _("Requested device %s not found. Cannot continue.\n"),
+      if (verbose) {
+        unbash_spaces(dir->msg);
+         Jmsg(jcr, M_INFO, 0, _("Failed command: %s\n"), dir->msg);
+      }
+      Jmsg(jcr, M_FATAL, 0, _("\n"
+         "     Device \"%s\" requested by Dir not found in SD Device resources.\n"),
           dev_name);
       bnet_fsend(dir, NO_device, dev_name);
    } else {
+      if (verbose) {
+        unbash_spaces(dir->msg);
+         Jmsg(jcr, M_INFO, 0, _("Failed command: %s\n"), dir->msg);
+      }
       Jmsg(jcr, M_FATAL, 0, _("store<dir: Bad Use Device command: %s\n"), dir->msg);
       bnet_fsend(dir, BAD_use, dir->msg);
    }
index 625e6b736eebbbe7e1d13e85a7df20c4a886c41e..7658784174674b3d0b136b815891d5d18a83a590 100644 (file)
@@ -43,7 +43,6 @@ int read_records(JCR *jcr,  DEVICE *dev,
    DEV_BLOCK *block;
    DEV_RECORD *rec;
    uint32_t record, num_files = 0;
-   int verbose = FALSE;
    int ok = TRUE;
    int done = FALSE;
    SESSION_LABEL sessrec;
index 3b253ca93c17eb0c0b7675536016e9f4657547d7..615d941962ee4e7c757932fea967982447e2ab70 100644 (file)
@@ -71,6 +71,7 @@ static void usage()
 "        -s          no signals (for debugging)\n"
 "        -t          test - read config and exit\n"
 "        -u          userid\n"
+"        -v          verbose user messages\n"
 "        -?          print this message.\n"
 "\n"));
    exit(1);
@@ -105,7 +106,7 @@ int main (int argc, char *argv[])
       Emsg1(M_ABORT, 0, "Tape block size (%d) is not a power of 2\n", TAPE_BSIZE);
    }
 
-   while ((ch = getopt(argc, argv, "c:d:fg:stu:?")) != -1) {
+   while ((ch = getopt(argc, argv, "c:d:fg:stu:v?")) != -1) {
       switch (ch) {
          case 'c':                    /* configuration file */
            if (configfile != NULL) {
@@ -141,6 +142,10 @@ int main (int argc, char *argv[])
            uid = optarg;
            break;
 
+         case 'v':                    /* verbose */
+           verbose++;
+           break;
+
          case '?':
         default:
            usage();
index 923bc5a0ccb11f781284a9bbb8835dc53e404f35..35c06a9ad2491f3d2a54e8fe99d4f91b1d1778a4 100644 (file)
@@ -52,7 +52,6 @@ typedef struct s_name_ctx {
 /* Global variables */
 static int fix = FALSE;
 static int batch = FALSE;
-static int verbose = FALSE;
 static B_DB *db;
 static ID_LIST id_list;
 static NAME_LIST name_list;