Changeset 3870 in MondoRescue for branches/3.3/mondo/src/common/libmondo-cli.c


Ignore:
Timestamp:
Mar 7, 2024, 6:05:50 PM (2 months ago)
Author:
Bruno Cornec
Message:

Rewrite find_tape_device ans start for other find_*dev functions

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/3.3/mondo/src/common/libmondo-cli.c

    r3866 r3870  
    1616#include "mondostructures.h"
    1717#include "libmondo-cli-EXT.h"
     18#include "libmondo-newt-specific-EXT.h"
    1819#include "libmondo.h"
    1920
     
    4546extern pid_t g_main_pid;
    4647extern char *resolve_softlinks_to_get_to_actual_device_file(char *);
    47 extern char *mr_popup_and_get_string(const char *, const char *, const char *);
    4848extern char *call_program_and_get_last_line_of_output(const char *);
    4949
     
    294294
    295295    if ((flag_set['c'] || flag_set['w'] || flag_set['C'] || flag_set['r']) && (! bkpinfo->restore_data)) {
    296         if (!flag_set['r'] && g_kernel_version <= 2.5 && strstr(flag_val['d'], "/dev/")) {
    297             fatal_error("Please don't give a /dev entry. Give a SCSI node for the parameter of the -d flag.");
    298         }
    299         if (flag_set['r'] && g_kernel_version <= 2.5 && !strstr(flag_val['d'], "/dev/")) {
    300             fatal_error("Please give a /dev entry, not a SCSI node, as the parameter of the -d flag.");
    301         }
    302         if (g_kernel_version >= 2.6 && !strstr(flag_val['d'], "/dev/")) {
    303             log_to_screen("Linus says 2.6 has a broken ide-scsi module. Proceed at your own risk...");
    304         }
    305 
    306296        if (system("which cdrecord > /dev/null 2> /dev/null") && system("which dvdrecord > /dev/null 2> /dev/null")) {
    307297            fatal_error("Please install dvdrecord/cdrecord and try again.");
     
    336326    if ((flag_set['t'] && !flag_set['d']) && (! bkpinfo->restore_data)) {
    337327        log_it("Hmm! No tape drive specified. Let's see what we can do.");
    338         if (find_tape_device(flag_val['d'])) {
    339             fatal_error("Tape device not specified. I couldn't find it either.");
     328        if ((bkpinfo->media_device = find_tape_device()) == NULL) {
     329            fatal_error("Tape device not specified and I couldn't find it either. Please use option -d");
    340330        }
    341331        flag_set['d'] = TRUE;
    342         log_to_screen("You didn't specify a tape streamer device. I'm assuming %s", flag_val['d']);
     332        log_to_screen("You didn't specify a tape streamer device. I'm assuming %s", bkpinfo->media_device);
    343333    }
    344334
     
    359349        }
    360350        if (!flag_set['d']) {
    361             if (!find_dvd_device(flag_val['d'])) {
     351            if ((bkpinfo->media_device = find_dvd_device()) != NULL) {
    362352                flag_set['d'] = TRUE;
    363                 log_to_screen("I guess DVD drive is at %s", flag_val['d']);
    364             }
    365         }
    366         if (strchr(flag_val['d'], ',')) {
     353                log_to_screen("I guess DVD drive is at %s", bkpinfo->media_device);
     354            }
     355        }
     356        if (strchr(bkpinfo->media_device, ',')) {
    367357            fatal_error("Please don't give a SCSI node. Give a _device_, preferably a /dev entry, for the parameter of the -d flag.");
    368358        }
     
    686676    if (flag_set['d']) {        /* backup directory (if ISO/NETFS) */
    687677        if (flag_set['i']) {
     678            // what is flag_val['d'] is NULL/undefined
    688679            mr_asprintf(bkpinfo->isodir, "%s", flag_val['d']);
    689680            mr_asprintf(tmp1, "ls -l %s", bkpinfo->isodir);
     
    695686        } else if (flag_set['n']) {
    696687            mr_free(bkpinfo->netfs_remote_dir);
     688            // what is flag_val['d'] is NULL/undefined
    697689            mr_asprintf(bkpinfo->netfs_remote_dir, "%s", flag_val['d']);
    698690        } else {                /* backup device (if tape/CD-R/CD-RW) */
    699             mr_asprintf(bkpinfo->media_device, "%s", flag_val['d']);
     691            /* bkpinfo-> media_device already setup upper */
    700692        }
    701693    }
     
    720712
    721713    if (!flag_set['d'] && (flag_set['c'] || flag_set['w'] || flag_set['C'])) {
    722         if (g_kernel_version >= 2.6) {
    723714            tmp1 = mr_popup_and_get_string("Device", "Please specify the device", bkpinfo->media_device);
    724715            if (tmp1 == NULL) {
     
    729720                bkpinfo->media_device = tmp1;
    730721            }
    731         } else if (find_cdrw_device(bkpinfo->media_device)) {
    732             retval++;
    733             log_to_screen("Tried and failed to find CD-R[W] drive automatically.\n");
    734722        } else {
    735             flag_set['d'] = TRUE;
    736             strncpy(flag_val['d'], bkpinfo->media_device, MAX_STR_LEN / 4);
    737         }
    738723    }
    739724
Note: See TracChangeset for help on using the changeset viewer.