]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/dird/ua_select.c
kes Update copyright date in program files, and for the most part
[bacula/bacula] / bacula / src / dird / ua_select.c
index 41765194a59b1a89e85b3759dc9d6c5c6c5fa2eb..6fbfb84d033025fcb8e4c3d90ea2ea36ed4cad09 100644 (file)
@@ -7,7 +7,7 @@
  *   Version  $Id$
  */
 /*
-   Copyright (C) 2001-2005 Kern Sibbald
+   Copyright (C) 2001-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
@@ -34,6 +34,7 @@ extern struct s_jl joblevels[];
 int confirm_retention(UAContext *ua, utime_t *ret, const char *msg)
 {
    char ed1[100];
+   int val;
 
    for ( ;; ) {
        bsendmsg(ua, _("The current %s retention period is: %s\n"),
@@ -51,11 +52,8 @@ int confirm_retention(UAContext *ua, utime_t *ret, const char *msg)
           }
           continue;
        }
-       if (strcasecmp(ua->cmd, _("yes")) == 0) {
-          return 1;
-       }
-       if (strcasecmp(ua->cmd, _("no")) == 0) {
-          return 0;
+       if (is_yesno(ua->cmd, &val)) {
+          return val;           /* is 1 for yes, 0 for no */
        }
     }
     return 1;
@@ -71,7 +69,7 @@ int find_arg_keyword(UAContext *ua, const char **list)
 {
    for (int i=1; i<ua->argc; i++) {
       for(int j=0; list[j]; j++) {
-         if (strcasecmp(_(list[j]), ua->argk[i]) == 0) {
+         if (strcasecmp(list[j], ua->argk[i]) == 0) {
             return j;
          }
       }
@@ -190,7 +188,7 @@ CAT *get_catalog_resource(UAContext *ua)
    int i;
 
    for (i=1; i<ua->argc; i++) {
-      if (strcasecmp(ua->argk[i], _("catalog")) == 0 && ua->argv[i]) {
+      if (strcasecmp(ua->argk[i], NT_("catalog")) == 0 && ua->argv[i]) {
          if (acl_access_ok(ua, Catalog_ACL, ua->argv[i])) {
             catalog = (CAT *)GetResWithName(R_CATALOG, ua->argv[i]);
             break;
@@ -297,8 +295,8 @@ CLIENT *get_client_resource(UAContext *ua)
    int i;
 
    for (i=1; i<ua->argc; i++) {
-      if ((strcasecmp(ua->argk[i], N_("client")) == 0 ||
-           strcasecmp(ua->argk[i], N_("fd")) == 0) && ua->argv[i]) {
+      if ((strcasecmp(ua->argk[i], NT_("client")) == 0 ||
+           strcasecmp(ua->argk[i], NT_("fd")) == 0) && ua->argv[i]) {
          if (!acl_access_ok(ua, Client_ACL, ua->argv[i])) {
             break;
          }
@@ -334,8 +332,8 @@ int get_client_dbr(UAContext *ua, CLIENT_DBR *cr)
       bsendmsg(ua, _("Could not find Client %s: ERR=%s"), cr->Name, db_strerror(ua->db));
    }
    for (i=1; i<ua->argc; i++) {
-      if ((strcasecmp(ua->argk[i], _("client")) == 0 ||
-           strcasecmp(ua->argk[i], _("fd")) == 0) && ua->argv[i]) {
+      if ((strcasecmp(ua->argk[i], NT_("client")) == 0 ||
+           strcasecmp(ua->argk[i], NT_("fd")) == 0) && ua->argv[i]) {
          if (!acl_access_ok(ua, Client_ACL, ua->argv[i])) {
             break;
          }
@@ -440,7 +438,7 @@ bool select_pool_dbr(UAContext *ua, POOL_DBR *pr)
    uint32_t *ids;
 
    for (i=1; i<ua->argc; i++) {
-      if (strcasecmp(ua->argk[i], N_("pool")) == 0 && ua->argv[i] &&
+      if (strcasecmp(ua->argk[i], NT_("pool")) == 0 && ua->argv[i] &&
           acl_access_ok(ua, Pool_ACL, ua->argv[i])) {
          bstrncpy(pr->Name, ua->argv[i], sizeof(pr->Name));
          if (!db_get_pool_record(ua->jcr, ua->db, pr)) {
@@ -626,11 +624,12 @@ int get_job_dbr(UAContext *ua, JOB_DBR *jr)
    int i;
 
    for (i=1; i<ua->argc; i++) {
-      if (strcasecmp(ua->argk[i], N_("job")) == 0 && ua->argv[i]) {
+      if (strcasecmp(ua->argk[i], NT_("ujobid")) == 0 && ua->argv[i]) {
          jr->JobId = 0;
          bstrncpy(jr->Job, ua->argv[i], sizeof(jr->Job));
-      } else if (strcasecmp(ua->argk[i], N_("jobid")) == 0 && ua->argv[i]) {
+      } else if (strcasecmp(ua->argk[i], NT_("jobid")) == 0 && ua->argv[i]) {
          jr->JobId = str_to_int64(ua->argv[i]);
+         jr->Job[0] = 0;
       } else {
          continue;
       }
@@ -643,6 +642,17 @@ int get_job_dbr(UAContext *ua, JOB_DBR *jr)
       return jr->JobId;
    }
 
+   jr->JobId = 0;
+   jr->Job[0] = 0;
+
+   for (i=1; i<ua->argc; i++) {
+      if ((strcasecmp(ua->argk[i], NT_("jobname")) == 0 ||
+           strcasecmp(ua->argk[i], NT_("job")) == 0) && ua->argv[i]) {
+         jr->JobId = 0;
+         bstrncpy(jr->Name, ua->argv[i], sizeof(jr->Name));
+         break;
+      }
+   }
    if (!select_job_dbr(ua, jr)) {  /* try once more */
       return 0;
    }
@@ -711,10 +721,12 @@ int do_prompt(UAContext *ua, const char *automsg, const char *msg, char *prompt,
       item = -1;
       goto done;
    }
+// bnet_sig(ua->UA_sock, BNET_START_SELECT);
    bsendmsg(ua, ua->prompt[0]);
    for (i=1; i < ua->num_prompts; i++) {
       bsendmsg(ua, "%6d: %s\n", i, ua->prompt[i]);
    }
+// bnet_sig(ua->UA_sock, BNET_END_SELECT);
 
    for ( ;; ) {
       /* First item is the prompt string, not the items */
@@ -799,12 +811,12 @@ STORE *get_storage_resource(UAContext *ua, bool use_default)
             break;
          }
       } else {
-         if (strcasecmp(ua->argk[i], N_("storage")) == 0 ||
-             strcasecmp(ua->argk[i], N_("sd")) == 0) {
+         if (strcasecmp(ua->argk[i], NT_("storage")) == 0 ||
+             strcasecmp(ua->argk[i], NT_("sd")) == 0) {
             store_name = ua->argv[i];
             break;
 
-         } else if (strcasecmp(ua->argk[i], N_("jobid")) == 0) {
+         } else if (strcasecmp(ua->argk[i], NT_("jobid")) == 0) {
             jobid = str_to_int64(ua->argv[i]);
             if (jobid <= 0) {
                bsendmsg(ua, _("Expecting jobid=nn command, got: %s\n"), ua->argk[i]);
@@ -814,11 +826,12 @@ STORE *get_storage_resource(UAContext *ua, bool use_default)
                bsendmsg(ua, _("JobId %s is not running.\n"), edit_int64(jobid, ed1));
                return NULL;
             }
-            store = jcr->store;
+            store = jcr->wstore;
             free_jcr(jcr);
             break;
 
-         } else if (strcasecmp(ua->argk[i], N_("job")) == 0) {
+         } else if (strcasecmp(ua->argk[i], NT_("job")) == 0 ||
+                    strcasecmp(ua->argk[i], NT_("jobname")) == 0) {
             if (!ua->argv[i]) {
                bsendmsg(ua, _("Expecting job=xxx, got: %s.\n"), ua->argk[i]);
                return NULL;
@@ -827,7 +840,19 @@ STORE *get_storage_resource(UAContext *ua, bool use_default)
                bsendmsg(ua, _("Job \"%s\" is not running.\n"), ua->argv[i]);
                return NULL;
             }
-            store = jcr->store;
+            store = jcr->wstore;
+            free_jcr(jcr);
+            break;
+         } else if (strcasecmp(ua->argk[i], NT_("ujobid")) == 0) {
+            if (!ua->argv[i]) {
+               bsendmsg(ua, _("Expecting ujobid=xxx, got: %s.\n"), ua->argk[i]);
+               return NULL;
+            }
+            if (!(jcr=get_jcr_by_full_name(ua->argv[i]))) {
+               bsendmsg(ua, _("Job \"%s\" is not running.\n"), ua->argv[i]);
+               return NULL;
+            }
+            store = jcr->wstore;
             free_jcr(jcr);
             break;
         }