Ignore:
Timestamp:
Mar 3, 2024, 2:44:57 AM (3 months ago)
Author:
Bruno Cornec
Message:

manages media_device dynamically

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/3.3/mondo/src/mondorestore/mondo-rstr-tools.c

    r3790 r3822  
    734734if (bkpinfo->disaster_recovery) {
    735735    if (bkpinfo->backup_media_type == cdstream) {
    736         sprintf(bkpinfo->media_device, "/dev/cdrom");
     736        mr_asprintf(bkpinfo->media_device, "%s", "/dev/cdrom");
    737737        bkpinfo->media_size = 650;  /* good guess */
    738738    } else if (bkpinfo->backup_media_type == usb) {
     
    745745            strcpy(value,envtmp1);
    746746        }
    747         sprintf(bkpinfo->media_device, "%s1", value);
     747        mr_asprintf(bkpinfo->media_device, "%s1", value);
    748748        log_msg(2, "Backup medium is USB --- dev=%s", bkpinfo->media_device);
    749749    } else if (bkpinfo->backup_media_type == tape || bkpinfo->backup_media_type == udev) {
     
    751751            fatal_error("Cannot get tape device name from cfg file");
    752752        }
    753         strcpy(bkpinfo->media_device, value);
     753        mr_asprintf(bkpinfo->media_device, "%s", value);
    754754        read_cfg_var(cfg_file, "media-size", value);
    755755        bkpinfo->media_size = atol(value);
    756756        log_msg(2, "Backup medium is TAPE --- dev=%s", bkpinfo->media_device);
    757757    } else {
    758         strcpy(bkpinfo->media_device, "/dev/cdrom");    /* we don't really need this var */
     758        mr_asprintf(bkpinfo->media_device, "%s", "/dev/cdrom"); /* we don't really need this var */
    759759        bkpinfo->media_size = 1999 * 1024;  /* 650, probably, but we don't need this var anyway */
    760760        log_msg(2, "Backup medium is similar to CD-R[W]");
     
    968968                log_msg(1, "Unable to mount isodir. Perhaps this is really a CD backup?");
    969969                bkpinfo->backup_media_type = cdr;
    970                 strcpy(bkpinfo->media_device, "/dev/cdrom");    /* superfluous */
     970                mr_asprintf(bkpinfo->media_device, "%s", "/dev/cdrom"); /* superfluous */
    971971                bkpinfo->isodir[0] = iso_mnt[0] = iso_path[0] = '\0';
    972972                if (mount_media()) {
     
    21602160            run_program_and_log_output("mkdir -p tmp", FALSE);
    21612161
    2162             if (strlen(bkpinfo->media_device) == 0) {
    2163                 strcpy(bkpinfo->media_device, "/dev/st0");
    2164                 log_msg(2, "media_device is blank; assuming %s");
     2162            if (bkpinfo->media_device == NULL) {
     2163                mr_asprintf(bkpinfo->media_device, "%s", "/dev/st0");
     2164                log_msg(2, "media_device is blank; assuming %s", bkpinfo->media_device);
    21652165            }
    21662166            mr_asprintf(tmp, "%s", bkpinfo->media_device);
    2167             if (extract_cfg_file_and_mountlist_from_tape_dev
    2168                 (bkpinfo->media_device)) {
    2169                 strcpy(bkpinfo->media_device, "/dev/st0");
    2170                 if (extract_cfg_file_and_mountlist_from_tape_dev
    2171                     (bkpinfo->media_device)) {
    2172                     strcpy(bkpinfo->media_device, "/dev/osst0");
    2173                     if (extract_cfg_file_and_mountlist_from_tape_dev
    2174                         (bkpinfo->media_device)) {
    2175                         strcpy(bkpinfo->media_device, "/dev/ht0");
    2176                         if (extract_cfg_file_and_mountlist_from_tape_dev
    2177                             (bkpinfo->media_device)) {
    2178                             log_msg(3,
    2179                                     "I tried lots of devices but none worked.");
    2180                             strcpy(bkpinfo->media_device, tmp);
     2167            if (extract_cfg_file_and_mountlist_from_tape_dev(bkpinfo->media_device)) {
     2168                mr_free(bkpinfo->media_device);
     2169                mr_asprintf(bkpinfo->media_device, "%s", "/dev/st0");
     2170                if (extract_cfg_file_and_mountlist_from_tape_dev(bkpinfo->media_device)) {
     2171                    mr_free(bkpinfo->media_device);
     2172                    mr_asprintf(bkpinfo->media_device, "%s", "/dev/osst0");
     2173                    if (extract_cfg_file_and_mountlist_from_tape_dev(bkpinfo->media_device)) {
     2174                        mr_free(bkpinfo->media_device);
     2175                        mr_asprintf(bkpinfo->media_device, "%s", "/dev/ht0");
     2176                        if (extract_cfg_file_and_mountlist_from_tape_dev(bkpinfo->media_device)) {
     2177                            log_msg(3, "I tried lots of devices but none worked.");
     2178                            mr_free(bkpinfo->media_device);
    21812179                        }
    21822180                    }
    21832181                }
    21842182            }
    2185             mr_free(tmp);
     2183            if (bkpinfo->media_device == NULL) {
     2184                bkpinfo->media_device = tmp;
     2185            } else {
     2186                mr_free(tmp);
     2187            }
    21862188
    21872189            if (!does_file_exist("tmp/mondorestore.cfg")) {
Note: See TracChangeset for help on using the changeset viewer.