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-cli.c

    r2324 r2325  
    114114        }
    115115    }
    116     mr_asprintf(tmp, "rm -Rf %s/tmp.mondo.*", bkpinfo->tmpdir);
    117     paranoid_system(tmp);
    118     mr_free(tmp);
    119 
    120     mr_asprintf(tmp, "rm -Rf %s/mondo.scratch.*", bkpinfo->scratchdir);
    121     paranoid_system(tmp);
    122     mr_free(tmp);
    123 
    124     mr_strcat(bkpinfo->scratchdir, "/mondo.scratch.%ld", random() % 32767);
    125 
    126116    mr_asprintf(tmp, "mkdir -p %s/tmpfs", bkpinfo->tmpdir);
    127117    paranoid_system(tmp);
     
    889879    if ((flag_set['t'] && !flag_set['d']) && (! bkpinfo->restore_data)) {
    890880        log_it("Hmm! No tape drive specified. Let's see what we can do.");
    891         p = mr_find_tape_device();
    892         if (!p) {
     881        if ((tmp1 = find_tape_device_and_size(NULL)) == NULL) {
    893882            fatal_error("Tape device not specified. I couldn't find it either.");
    894883        }
     884        strcpy(flag_val['d'], tmp1);
     885        mr_free(tmp1);
    895886        flag_set['d'] = TRUE;
    896887        strcpy(flag_val['d'], p);
     
    917908        }
    918909        if (!flag_set['d']) {
    919             if (!find_dvd_device(flag_val['d'], FALSE)) {
     910            if ((tmp = find_dvd_device(flag_val['d'])) != NULL) {
     911                strcpy(flag_val['d'],tmp);
     912                mr_free(tmp);
    920913                flag_set['d'] = TRUE;
    921914                log_to_screen("I guess DVD drive is at %s", flag_val['d']);
     
    923916        }
    924917        if (strchr(flag_val['d'], ',')) {
    925             fatal_error
    926                 ("Please don't give a SCSI node. Give a _device_, preferably a /dev entry, for the parameter of the -d flag.");
     918            fatal_error("Please don't give a SCSI node. Give a _device_, preferably a /dev entry, for the parameter of the -d flag.");
    927919        }
    928920        if (! bkpinfo->restore_data) {
    929921            if (!find_home_of_exe("growisofs")) {
    930                 fatal_error
    931                     ("Please install growisofs (probably part of dvd+rw-tools). If you want DVD support, you need it.");
     922                fatal_error("Please install growisofs (probably part of dvd+rw-tools). If you want DVD support, you need it.");
    932923            }
    933924            if (!find_home_of_exe("dvd+rw-format")) {
    934                 fatal_error
    935                     ("Please install dvd+rw-format (probably part of dvd+rw-tools). If you want DVD support, you need it.");
     925                fatal_error("Please install dvd+rw-format (probably part of dvd+rw-tools). If you want DVD support, you need it.");
    936926            }
    937927            if (!flag_set['s']) {
    938928                sprintf(flag_val['s'], "%d", DEFAULT_DVD_DISK_SIZE);    // 4.7 salesman's GB = 4.482 real GB = 4582 MB
    939929                strcat(flag_val['s'], "m");
    940                 log_to_screen
    941                     ("You did not specify a size (-s) for DVD. I'm guessing %s.",
    942                     flag_val['s']);
     930                log_to_screen("You did not specify a size (-s) for DVD. I'm guessing %s.", flag_val['s']);
    943931                flag_set['s'] = 1;
    944932            }
     
    948936    if (flag_set['t'] || flag_set['u']) {   /* tape size */
    949937        if (strchr(flag_val['d'], ',')) {
    950             fatal_error
    951                 ("Please don't give a SCSI node. Give a _device_, preferably a /dev entry, for the parameter of the -d flag.");
     938            fatal_error("Please don't give a SCSI node. Give a _device_, preferably a /dev entry, for the parameter of the -d flag.");
    952939        }
    953940        if ((flag_set['O']) && (! bkpinfo->restore_data)) {
     
    981968
    982969    if (flag_set['n']) {
    983         strncpy(bkpinfo->nfs_mount, flag_val['n'], MAX_STR_LEN);
     970        mr_free(bkpinfo->nfs_mount);
     971        mr_asprintf(bkpinfo->nfs_mount, "%s", flag_val['n']);
    984972        if (!flag_set['d']) {
    985             strncpy(bkpinfo->nfs_remote_dir, "/", MAX_STR_LEN);
     973            mr_free(bkpinfo->nfs_remote_dir);
     974            mr_asprintf(bkpinfo->nfs_remote_dir, "/");
    986975        }
    987976        /* test if we specified a user for the NFS dialog */
     
    989978        if (p != NULL) {
    990979            /* User found. Store the 2 values */
     980            bkpinfo->nfs_user = bkpinfo->nfs_mount;
    991981            p++;
    992982            /* new NFS mount */
    993             strcpy(tmp,p);
     983            bkpinfo->nfs_mount = p;
    994984            p--;
    995985            *p = '\0';
    996             mr_asprintf(bkpinfo->nfs_user,"%s",p);
    997             strcpy(bkpinfo->nfs_mount,tmp);
    998986        }
    999987        mr_asprintf(tmp1, "mount | grep -E \"^%s[/]* .*\" | cut -d' ' -f3", bkpinfo->nfs_mount);
     
    12211209            mr_free(tmp1);
    12221210        } else if (flag_set['n']) {
    1223             strncpy(bkpinfo->nfs_remote_dir, flag_val['d'], MAX_STR_LEN);
     1211            mr_free(bkpinfo->nfs_remote_dir);
     1212            mr_asprintf(bkpinfo->nfs_remote_dir, "%s", flag_val['d']);
    12241213        } else {                /* backup device (if tape/CD-R/CD-RW) */
    1225             strncpy(bkpinfo->media_device, flag_val['d'], MAX_STR_LEN / 4);
     1214            mr_free(bkpinfo->media_device);
     1215            mr_asprintf(bkpinfo->media_device, "%s", flag_val['d']);
    12261216        }
    12271217    }
     
    12451235    }
    12461236
    1247     if (!flag_set['d']
    1248         && (flag_set['c'] || flag_set['w'] || flag_set['C'])) {
     1237    if (!flag_set['d'] && (flag_set['c'] || flag_set['w'] || flag_set['C'])) {
    12491238        if (g_kernel_version >= 2.6) {
    12501239            tmp2 = popup_and_get_string("Device", "Please specify the device", bkpinfo->media_device);
    12511240            if (tmp2 == NULL) {
     1241                fatal_error("User opted to cancel.");
     1242            }
     1243            bkpinfo->media_device = tmp2;
     1244        } else {
     1245            bkpinfo->media_device = find_cdrw_device();
     1246            if (bkpinfo->media_device == NULL) {
    12521247                retval++;
    1253                 log_to_screen("User opted to cancel.");
    1254             }
    1255             mr_free(tmp2);
    1256         } else if (find_cdrw_device(bkpinfo->media_device)) {
    1257             retval++;
    1258             log_to_screen
    1259                 ("Tried and failed to find CD-R[W] drive automatically.\n");
    1260         } else {
    1261             flag_set['d'] = TRUE;
    1262             strncpy(flag_val['d'], bkpinfo->media_device, MAX_STR_LEN / 4);
     1248                log_to_screen("Tried and failed to find CD-R[W] drive automatically.\n");
     1249            } else {
     1250                flag_set['d'] = TRUE;
     1251                strncpy(flag_val['d'], bkpinfo->media_device, MAX_STR_LEN / 4);
     1252            }
    12631253        }
    12641254    }
     
    12881278
    12891279        if (i) {
    1290             retval++;
    12911280            log_to_screen("Please specify a tempdir which I can write to. :)");
    12921281            fatal_error("I cannot write to the tempdir you specified.");
     
    14671456    /*@ ints ** */
    14681457    int opt = 0;
    1469     char *tmp = NULL;
    14701458    int i = 0;
    14711459    int len;
Note: See TracChangeset for help on using the changeset viewer.