]> git.sur5r.net Git - bacula/bacula/commitdiff
Cleanup storage keyword scanning
authorKern Sibbald <kern@sibbald.com>
Mon, 7 Apr 2003 10:25:35 +0000 (10:25 +0000)
committerKern Sibbald <kern@sibbald.com>
Mon, 7 Apr 2003 10:25:35 +0000 (10:25 +0000)
git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@425 91ce42f0-d328-0410-95d8-f526ca767f89

bacula/src/dird/protos.h
bacula/src/dird/ua_cmds.c
bacula/src/dird/ua_label.c
bacula/src/dird/ua_select.c
bacula/src/dird/ua_status.c

index c9a11cbc67d743e8fe537f3b5aff87608b11b2e8..5364cc13115e7b0164294e93d3768b264580b07a 100644 (file)
@@ -48,13 +48,13 @@ extern char *level_to_str(int level);
 
 /* fd_cmds.c */
 extern int connect_to_file_daemon(JCR *jcr, int retry_interval,
-                                 int max_retry_time, int verbose);
+                                  int max_retry_time, int verbose);
 extern int send_include_list(JCR *jcr);
 extern int send_exclude_list(JCR *jcr);
 extern int get_attributes_and_put_in_catalog(JCR *jcr);
 extern int get_attributes_and_compare_to_catalog(JCR *jcr, JobId_t JobId);
 extern int put_file_into_catalog(JCR *jcr, long file_index, char *fname, 
-                         char *link, char *attr, int stream);
+                          char *link, char *attr, int stream);
 
 /* job.c */
 extern void set_jcr_defaults(JCR *jcr, JOB *job);
@@ -67,7 +67,7 @@ extern void mount_request(JCR *jcr, BSOCK *bs, char *buf);
 
 /* msgchan.c */
 extern int connect_to_storage_daemon(JCR *jcr, int retry_interval,    
-                             int max_retry_time, int verbose);
+                              int max_retry_time, int verbose);
 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);
@@ -98,27 +98,27 @@ void prtit(void *ctx, char *msg);
 void bsendmsg(void *sock, char *fmt, ...);
 
 /* ua_select.c */
-STORE  *select_storage_resource(UAContext *ua);
-JOB    *select_job_resource(UAContext *ua);
-JOB    *select_restore_job_resource(UAContext *ua);
-CLIENT *select_client_resource(UAContext *ua);
+STORE   *select_storage_resource(UAContext *ua);
+JOB     *select_job_resource(UAContext *ua);
+JOB     *select_restore_job_resource(UAContext *ua);
+CLIENT  *select_client_resource(UAContext *ua);
 FILESET *select_fileset_resource(UAContext *ua);
-int    select_pool_and_media_dbr(UAContext *ua, POOL_DBR *pr, MEDIA_DBR *mr);
-int    select_pool_dbr(UAContext *ua, POOL_DBR *pr);
-int    select_client_dbr(UAContext *ua, CLIENT_DBR *cr);
-
-void   start_prompt(UAContext *ua, char *msg);
-void   add_prompt(UAContext *ua, char *prompt);
-int    do_prompt(UAContext *ua, char *msg, char *prompt, int max_prompt);
-CAT    *get_catalog_resource(UAContext *ua);          
-STORE  *get_storage_resource(UAContext *ua, char *cmd);
-int    get_media_type(UAContext *ua, char *MediaType, int max_media);
-int    get_pool_dbr(UAContext *ua, POOL_DBR *pr);
-int    get_client_dbr(UAContext *ua, CLIENT_DBR *cr);
+int     select_pool_and_media_dbr(UAContext *ua, POOL_DBR *pr, MEDIA_DBR *mr);
+int     select_pool_dbr(UAContext *ua, POOL_DBR *pr);
+int     select_client_dbr(UAContext *ua, CLIENT_DBR *cr);
+
+void    start_prompt(UAContext *ua, char *msg);
+void    add_prompt(UAContext *ua, char *prompt);
+int     do_prompt(UAContext *ua, char *msg, char *prompt, int max_prompt);
+CAT    *get_catalog_resource(UAContext *ua);           
+STORE  *get_storage_resource(UAContext *ua, char *cmd, int use_default);
+int     get_media_type(UAContext *ua, char *MediaType, int max_media);
+int     get_pool_dbr(UAContext *ua, POOL_DBR *pr);
+int     get_client_dbr(UAContext *ua, CLIENT_DBR *cr);
 POOL   *get_pool_resource(UAContext *ua);
 POOL   *select_pool_resource(UAContext *ua);
 CLIENT *get_client_resource(UAContext *ua);
-int    get_job_dbr(UAContext *ua, JOB_DBR *jr);
+int     get_job_dbr(UAContext *ua, JOB_DBR *jr);
 
 int find_arg_keyword(UAContext *ua, char **list);
 int do_keyword_prompt(UAContext *ua, char *msg, char **list);
index 3adb44f5993da9d5abc2bc8477e306a66a369c4f..e3ca14c7b5e8eb4dde8707862f445987f4a401d2 100644 (file)
@@ -211,7 +211,7 @@ static int addcmd(UAContext *ua, char *cmd)
    }
 
    /* Get media type */
-   if ((store = get_storage_resource(ua, cmd)) != NULL) {
+   if ((store = get_storage_resource(ua, cmd, 0)) != NULL) {
       strcpy(mr.MediaType, store->media_type);
    } else if (!get_media_type(ua, mr.MediaType, sizeof(mr.MediaType))) {
       return 1;
@@ -1134,7 +1134,7 @@ static int setdebugcmd(UAContext *ua, char *cmd)
               return 1;
            }
         }
-        store = get_storage_resource(ua, cmd);
+        store = get_storage_resource(ua, cmd, 0);
         if (store) {
            do_storage_setdebug(ua, store, level);
            return 1;
@@ -1155,7 +1155,7 @@ static int setdebugcmd(UAContext *ua, char *cmd)
         debug_level = level;
         break;
       case 1:
-        store = get_storage_resource(ua, cmd);
+        store = get_storage_resource(ua, cmd, 0);
         if (store) {
            do_storage_setdebug(ua, store, level);
         }
@@ -1294,7 +1294,7 @@ static void do_mount_cmd(int mount, UAContext *ua, char *cmd)
    }
    Dmsg1(120, "mount: %s\n", ua->UA_sock->msg);
 
-   store = get_storage_resource(ua, cmd);
+   store = get_storage_resource(ua, cmd, 1);
    if (!store) {
       return;
    }
index 06e46198251af1ab7c8a6e4b8dcda720086dcd1d..47dbba13a5eb908d7ed24393922d6d991d064668 100644 (file)
@@ -84,7 +84,7 @@ static int do_label(UAContext *ua, char *cmd, int relabel)
    if (!open_db(ua)) {
       return 1;
    }
-   store = get_storage_resource(ua, cmd);
+   store = get_storage_resource(ua, cmd, 1);
    if (!store) {
       return 1;
    }
index 2835bef76bb6a0ab8de77878e44360b192f7e918..5c99a18e25651e55640ea6ac6d8890ef995f5558 100644 (file)
@@ -660,41 +660,44 @@ int do_prompt(UAContext *ua, char *msg, char *prompt, int max_prompt)
 
 /*
  * We scan what the user has entered looking for
- *    device=<device-name>     ???? does this work ????
  *    storage=<storage-resource>
  *    job=<job_name>
  *    jobid=<jobid>
  *    ?             (prompt him with storage list)
  *    <some-error>   (prompt him with storage list)
+ *
+ * If use_default is set, we assume that any keyword without a value
+ *   is the name of the Storage resource wanted.
  */
-STORE *get_storage_resource(UAContext *ua, char *cmd)
+STORE *get_storage_resource(UAContext *ua, char *cmd, int use_default)
 {
-   char *store_name, *device_name;
-   STORE *store;
+   char *store_name = NULL;
+   STORE *store = NULL;
    int jobid;
    JCR *jcr;
    int i;
       
-   device_name = NULL;
-   store_name = NULL;
 
    for (i=1; i<ua->argc; i++) {
-      if (!ua->argv[i]) {
+      if (use_default && !ua->argv[i]) {
         /* Default argument is storage */
         if (store_name) {
             bsendmsg(ua, _("Storage name given twice.\n"));
            return NULL;
         }
+        /* Ignore barcode(s) keywords */
+         if (strncasecmp("barcode", ua->argk[i], 7) == 0) {
+           continue;
+        }
         store_name = ua->argk[i];
          if (*store_name == '?') {
-           return select_storage_resource(ua);
+           *store_name = 0;
+           break;
         }
       } else {
-         if (strcasecmp(ua->argk[i], _("device")) == 0) {
-           device_name = ua->argv[i];
-
-         } else if (strcasecmp(ua->argk[i], _("storage")) == 0) {
+         if (strcasecmp(ua->argk[i], _("storage")) == 0) {
            store_name = ua->argv[i];
+           break;
 
          } else if (strcasecmp(ua->argk[i], _("jobid")) == 0) {
            jobid = atoi(ua->argv[i]);
@@ -708,7 +711,7 @@ STORE *get_storage_resource(UAContext *ua, char *cmd)
            }
            store = jcr->store;
            free_jcr(jcr);
-           return store;
+           break;
 
          } else if (strcasecmp(ua->argk[i], _("job")) == 0) {
            if (!(jcr=get_jcr_by_partial_name(ua->argv[i]))) {
@@ -717,20 +720,18 @@ STORE *get_storage_resource(UAContext *ua, char *cmd)
            }
            store = jcr->store;
            free_jcr(jcr);
-           return store;
+           break;
        }
       }
    }
 
-   if (!store_name) {
-     bsendmsg(ua, _("A storage device name must be given.\n"));
-     store = NULL;
-   } else {
+   if (!store && store_name) {
       store = (STORE *)GetResWithName(R_STORAGE, store_name);
       if (!store) {
          bsendmsg(ua, "Storage resource %s: not found\n", store_name);
       }
    }
+   /* No keywords found, so present a selection list */
    if (!store) {
       store = select_storage_resource(ua);
    }
index e4ff79763a6abc38951dc486faae56cea57858ef..75baaa34db12b7119e045419e95b12aa89c7fcfa 100644 (file)
@@ -69,7 +69,7 @@ int statuscmd(UAContext *ua, char *cmd)
         }
         return 1;
       } else {
-        store = get_storage_resource(ua, cmd);
+        store = get_storage_resource(ua, cmd, 0);
         if (store) {
            do_storage_status(ua, store);
         }