]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/dird/ua_select.c
First cut of restore
[bacula/bacula] / bacula / src / dird / ua_select.c
index db1477e802009c256257cb4cd9ad655a19142a68..7948f143b3a9f31f4089ffa3348cb18417063416 100644 (file)
@@ -327,8 +327,10 @@ int select_pool_dbr(UAContext *ua, POOL_DBR *pr)
  */
 int select_pool_and_media_dbr(UAContext *ua, POOL_DBR *pr, MEDIA_DBR *mr)
 {
-   int found = FALSE;
    int i;
+   static char *kw[] = {
+      N_("volume"),
+      NULL};
 
    memset(pr, 0, sizeof(POOL_DBR));
    memset(mr, 0, sizeof(MEDIA_DBR));
@@ -339,23 +341,22 @@ int select_pool_and_media_dbr(UAContext *ua, POOL_DBR *pr, MEDIA_DBR *mr)
    }
    mr->PoolId = pr->PoolId;
 
-   /* See if a volume name is specified as an argument */
-   for (i=1; i<ua->argc; i++) {
-      if (strcasecmp(ua->argk[i], _("volume")) == 0 && ua->argv[i]) {
-        found = TRUE;
-        break;
-      }
-   }
-   if (found) {
+   i = find_arg_keyword(ua, kw);
+   if (i == 0 && ua->argv[i]) {
       strcpy(mr->VolumeName, ua->argv[i]);
-   } else {
+   }
+   if (mr->VolumeName[0] == 0) {
       db_list_media_records(ua->db, mr, prtit, ua);
-      if (!get_cmd(ua, _("Enter the Volume name: "))) {
-        return 01;
+      if (!get_cmd(ua, _("Enter MediaId or Volume name to update: "))) {
+        return 0;
+      }
+      if (is_a_number(ua->cmd)) {
+        mr->MediaId = atoi(ua->cmd);
+      } else {
+        strcpy(mr->VolumeName, ua->cmd);
       }
-      strcpy(mr->VolumeName, ua->cmd);
    }
-   mr->MediaId = 0;
+
    if (!db_get_media_record(ua->db, mr)) {
       bsendmsg(ua, "%s", db_strerror(ua->db));
       return 0;