- for ( ;; ) {
- if (!get_cmd(ua, _("Enter filename: "))) {
- return 0;
- }
- len = strlen(ua->cmd);
- if (len == 0) {
- break;
- }
- insert_one_file(ua, rx, date);
- }
- /* Check MediaType and select storage that corresponds */
- if (rx->name_list.num_ids) {
- get_storage_from_mediatype(ua, &rx->name_list, rx);
- }
- return 2;
-
-
- case 8: /* Cancel or quit */
- return 0;
+ for ( ;; ) {
+ if (!get_cmd(ua, _("Enter full filename: "))) {
+ return 0;
+ }
+ len = strlen(ua->cmd);
+ if (len == 0) {
+ break;
+ }
+ insert_one_file_or_dir(ua, rx, date, false);
+ }
+ return 2;
+
+ case 8: /* Find JobIds for current backup */
+ if (!have_date) {
+ bstrutime(date, sizeof(date), now);
+ }
+ if (!select_backups_before_date(ua, rx, date)) {
+ return 0;
+ }
+ done = false;
+ break;
+
+ case 9: /* Find JobIds for give date */
+ if (!have_date) {
+ if (!get_date(ua, date, sizeof(date))) {
+ return 0;
+ }
+ }
+ if (!select_backups_before_date(ua, rx, date)) {
+ return 0;
+ }
+ done = false;
+ break;
+
+ case 10: /* Enter directories */
+ if (*rx->JobIds != 0) {
+ ua->send_msg(_("You have already selected the following JobIds: %s\n"),
+ rx->JobIds);
+ } else if (get_cmd(ua, _("Enter JobId(s), comma separated, to restore: "))) {
+ if (*rx->JobIds != 0 && *ua->cmd) {
+ pm_strcat(rx->JobIds, ",");
+ }
+ pm_strcat(rx->JobIds, ua->cmd);
+ }
+ if (*rx->JobIds == 0 || *rx->JobIds == '.') {
+ return 0; /* nothing entered, return */
+ }
+ if (!have_date) {
+ bstrutime(date, sizeof(date), now);
+ }
+ if (!get_client_name(ua, rx)) {
+ return 0;
+ }
+ ua->send_msg(_("Enter full directory names or start the name\n"
+ "with a < to indicate it is a filename containing a list\n"
+ "of directories and terminate them with a blank line.\n"));
+ for ( ;; ) {
+ if (!get_cmd(ua, _("Enter directory name: "))) {
+ return 0;
+ }
+ len = strlen(ua->cmd);
+ if (len == 0) {
+ break;
+ }
+ /* Add trailing slash to end of directory names */
+ if (ua->cmd[0] != '<' && !IsPathSeparator(ua->cmd[len-1])) {
+ strcat(ua->cmd, "/");
+ }
+ insert_one_file_or_dir(ua, rx, date, true);
+ }
+ return 2;
+
+ case 11: /* Cancel or quit */
+ return 0;