Ignore:
Timestamp:
Aug 18, 2009, 3:19:15 PM (15 years ago)
Author:
Bruno Cornec
Message:

r3336@localhost: bruno | 2009-08-11 16:32:36 +0200

  • bkpinfo->media_device, bkpinfo->nfs_remote_dir, and bkpinfo->nfs_mount are now dynamically allocated
  • new interfaces for find_cdrom_device(), find_tape_device_and_size(), find_dvd_device(), find_cdrw_device(), set_dev_to_this_if_rx_OK() and read_cfg_var() which allocate the string now returned
  • Better differentiation between ISO and NFS iso file names construction
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2.2.10/mondo/src/common/libmondo-archive.c

    r2324 r2325  
    561561    if (IS_THIS_A_STREAMING_BACKUP(bkpinfo->backup_media_type)) {
    562562        mr_asprintf(tape_size_sz, "%ld", bkpinfo->media_size[1]);
    563         ntapedev = get_non_rewind_dev(bkpinfo->media_device);
     563        if (bkpinfo->media_device) {
     564            ntapedev = get_non_rewind_dev(bkpinfo->media_device);
     565        }
    564566        if ((bkpinfo->use_obdr) && (ntapedev != NULL)) {
    565             strncpy(bkpinfo->media_device,ntapedev,(size_t)(MAX_STR_LEN / 4));
     567            mr_free(bkpinfo->media_device);
     568            mr_asprintf(bkpinfo->media_device,"%s",ntapedev);
    566569        } else {
    567570            if (ntapedev == NULL) {
     
    569572            }
    570573        }
    571         paranoid_free(ntapedev);
    572         mr_asprintf(tape_device, "%s", bkpinfo->media_device);
     574        mr_free(ntapedev);
     575        if (bkpinfo->media_device) {
     576            mr_asprintf(tape_device, "%s", bkpinfo->media_device);
     577        } else {
     578            mr_asprintf(tape_device, "");
     579        }
    573580    } else {
    574581        mr_asprintf(tape_size_sz, "%ld", 0L);;
     
    759766        fatal_error("Unknown backup_media_type");
    760767    }
    761     if (bkpinfo->backup_media_type == usb) {
     768    if ((bkpinfo->backup_media_type == usb) && (bkpinfo->media_device)) {
    762769        mr_asprintf(tmp2, "--usb %s", bkpinfo->media_device);
    763770    } else {
     
    11971204    mr_free(data_disks_file);
    11981205
    1199     mr_asprintf(command, "rm -f %s/%s/%s-[1-9]*.iso", bkpinfo->isodir, bkpinfo->nfs_remote_dir, bkpinfo->prefix);
    1200     paranoid_system(command);
    1201     mr_free(command);
     1206    if ((bkpinfo->isodir != NULL) && (bkpinfo->prefix != NULL)) {
     1207        if (bkpinfo->nfs_remote_dir) {
     1208            // NFS
     1209            mr_asprintf(command, "rm -f %s/%s/%s-[1-9]*.iso", bkpinfo->isodir, bkpinfo->nfs_remote_dir, bkpinfo->prefix);
     1210        } else {
     1211            // ISO
     1212            mr_asprintf(command, "rm -f %s/%s-[1-9]*.iso", bkpinfo->isodir, bkpinfo->prefix);
     1213        }
     1214        paranoid_system(command);
     1215        mr_free(command);
     1216    }
    12021217
    12031218    wipe_archives(bkpinfo->scratchdir);
     
    15161531    log_msg(1, message_to_screen);
    15171532
    1518     mr_asprintf(tmp1, "%s1", bkpinfo->media_device);
     1533    if (bkpinfo->media_device) {
     1534        mr_asprintf(tmp1, "%s1", bkpinfo->media_device);
     1535    } else {
     1536        mr_asprintf(tmp1, "");
     1537    }
    15191538    if (is_this_device_mounted(tmp1)) {
    15201539        log_msg(1, "USB device mounted. Remounting it at the right place");
     
    17001719                }
    17011720                pause_for_N_seconds(5, "Letting DVD drive settle");
    1702                 mr_asprintf(sz_blank_disk, "dvd+rw-format -force %s", bkpinfo->media_device);
     1721                if (bkpinfo->media_device) {
     1722                    mr_asprintf(sz_blank_disk, "dvd+rw-format -force %s", bkpinfo->media_device);
     1723                } else {
     1724                    mr_asprintf(sz_blank_disk, "dvd+rw-format");
     1725                }
    17031726                log_msg(3, "sz_blank_disk = '%s'", sz_blank_disk);
    1704                 res =
    1705                     run_external_binary_with_percentage_indicator_NEW
    1706                     ("Blanking DVD disk", sz_blank_disk);
     1727                res = run_external_binary_with_percentage_indicator_NEW("Blanking DVD disk", sz_blank_disk);
    17071728                if (res) {
    17081729                    log_to_screen
     
    18201841        || bkpinfo->backup_media_type == cdrw) {
    18211842        if (is_this_device_mounted(bkpinfo->media_device)) {
    1822             log_msg(2,
    1823                     "Warning - %s mounted. I'm unmounting it before I burn to it.",
    1824                     bkpinfo->media_device);
     1843            log_msg(2, "Warning - %s mounted. I'm unmounting it before I burn to it.", bkpinfo->media_device);
    18251844            mr_asprintf(tmp, "umount %s", bkpinfo->media_device);
    18261845            run_program_and_log_output(tmp, FALSE);
     
    26042623    /*@ buffers ********************************************* */
    26052624    char *tmp = NULL;
    2606     char *cdrom_dev;
     2625    char *cdrom_dev = NULL;
    26072626    char *cdrw_dev;
    26082627    char *our_serial_str = NULL;
     
    26162635    char *mds = NULL;
    26172636
    2618     malloc_string(cdrom_dev);
    26192637    malloc_string(cdrw_dev);
    26202638    malloc_string(szcdno);
     
    26342652  gotos_make_me_puke:
    26352653    ok_go_ahead_burn_it = TRUE;
    2636     if (!find_cdrom_device(cdrom_dev, FALSE)) {
    2637 /* When enabled, it made CD eject-and-retract when wrong CD inserted.. Weird
    2638       log_msg(2, "paafcd: Retracting CD-ROM drive if possible" );
    2639       retract_CD_tray_and_defeat_autorun();
    2640 */
     2654    if ((cdrom_dev = find_cdrom_device(FALSE)) != NULL) {
     2655        /* When enabled, it made CD eject-and-retract when wrong CD inserted.. Weird
     2656        log_msg(2, "paafcd: Retracting CD-ROM drive if possible" );
     2657        retract_CD_tray_and_defeat_autorun();
     2658        */
    26412659        mr_asprintf(tmp, "umount %s", cdrom_dev);
    26422660        run_program_and_log_output(tmp, 1);
     
    27182736        popup_and_OK(tmp);
    27192737        mr_free(tmp);
     2738        mr_free(cdrom_dev);
    27202739        goto gotos_make_me_puke;
    27212740    } else {
    27222741        log_msg(2, "paafcd: OK, going ahead and burning it.");
    27232742    }
     2743    mr_free(cdrom_dev);
    27242744
    27252745    mds = media_descriptor_string(g_backup_media_type);
     
    27302750    mr_free(mds);
    27312751
    2732     paranoid_free(cdrom_dev);
    27332752    paranoid_free(cdrw_dev);
    27342753    paranoid_free(mtpt);
     
    31873206
    31883207    /*@ buffers ***************************************************** */
    3189     char *tmp;
    3190     char *tmp1;
     3208    char *tmp = NULL;
     3209    char *tmp1 = NULL;
    31913210    char *cdno_fname = NULL;
    31923211    char *lastcd_fname = NULL;
     
    32003219    /*@ int *********************************************************** */
    32013220    int res = 0;
    3202 
    3203     malloc_string(tmp);
    32043221
    32053222    assert(bkpinfo != NULL);
     
    32463263        log_to_screen("Warning! CD is too big. It occupies %ld KB, which is more than the %ld KB allowed.", (long) space_occupied_by_cd(bkpinfo->scratchdir), (long) bkpinfo->media_size[g_current_media_number]);
    32473264    }
    3248     mr_asprintf(isofile, "%s/%s/%s-%d.iso", bkpinfo->isodir, bkpinfo->nfs_remote_dir, bkpinfo->prefix, g_current_media_number);
     3265    if (((bkpinfo->isodir == NULL) && (bkpinfo->nfs_remote_dir == NULL)) || (bkpinfo->prefix == NULL)) {
     3266        fatal_error("Something wrong in your environement. Report to dev team");
     3267    }
     3268    if (bkpinfo->nfs_remote_dir) {
     3269        // NFS
     3270        mr_asprintf(isofile, "%s/%s/%s-%d.iso", bkpinfo->isodir, bkpinfo->nfs_remote_dir, bkpinfo->prefix, g_current_media_number);
     3271    } else {
     3272        // ISO
     3273        mr_asprintf(isofile, "%s/%s-%d.iso", bkpinfo->isodir, bkpinfo->prefix, g_current_media_number);
     3274    }
    32493275    for (that_one_was_ok = FALSE; !that_one_was_ok;) {
    32503276        if (bkpinfo->backup_media_type != usb) {
     
    32563282            && (bkpinfo->backup_media_type == cdr
    32573283                || bkpinfo->backup_media_type == cdrw)) {
    3258             if (find_cdrom_device(tmp, FALSE))  // make sure find_cdrom_device() finds, records CD-R's loc
    3259             {
     3284            if ((tmp = find_cdrom_device(FALSE)) == NULL) {
     3285                // make sure find_cdrom_device() finds, records CD-R's loc
    32603286                log_msg(3, "*Sigh* Mike, I hate your computer.");
     3287                // if it can't be found then force pausing
    32613288                bkpinfo->manual_cd_tray = TRUE;
    3262             }                   // if it can't be found then force pausing
    3263             else {
     3289            } else {
    32643290                log_msg(3, "Great. Found Mike's CD-ROM drive.");
    32653291            }
     3292            mr_free(tmp);
    32663293        }
    32673294        if (bkpinfo->verify_data && !res) {
    32683295            mds = media_descriptor_string(g_backup_media_type);
    3269             log_to_screen
    3270                 ("Please reboot from the 1st %s in Compare Mode, as a precaution.", mds);
     3296            log_to_screen("Please reboot from the 1st %s in Compare Mode, as a precaution.", mds);
    32713297            mr_free(mds);
    32723298            chdir("/");
     
    33203346
    33213347    bkpinfo->verify_data = orig_vfy_flag_val;
    3322     mr_free(tmp);
    33233348    return (0);
    33243349}
     
    33533378                            "Verifying archives against live filesystem");
    33543379        if (bkpinfo->backup_media_type == cdstream) {
    3355             strcpy(bkpinfo->media_device, "/dev/cdrom");
     3380            mr_free(bkpinfo->media_device);
     3381            mr_asprintf(bkpinfo->media_device, "/dev/cdrom");
    33563382        }
    33573383        verify_tape_backups();
     
    33683394        g_current_media_number = cdno;
    33693395        if (bkpinfo->backup_media_type != iso) {
    3370             find_cdrom_device(bkpinfo->media_device, FALSE);    // replace 0,0,0 with /dev/cdrom
     3396            mr_free(bkpinfo->media_device);
     3397            bkpinfo->media_device = find_cdrom_device(FALSE);   // replace 0,0,0 with /dev/cdrom
    33713398        }
    33723399        chdir("/");
Note: See TracChangeset for help on using the changeset viewer.