Changeset 3190 in MondoRescue for branches/3.1/mondo/src/common/libmondo-cli.c


Ignore:
Timestamp:
Sep 25, 2013, 8:55:43 AM (11 years ago)
Author:
Bruno Cornec
Message:
  • Modification to 3.1 branch to make it extremely similar to 3.0. What remains are function rewrite with allocation in the function and desallocation outside of the function. Will be next step
File:
1 edited

Legend:

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

    r3161 r3190  
    3939
    4040extern void setup_tmpdir(char *path);
     41extern void setup_scratchdir(char *path);
    4142void mr_make_devlist_from_pathlist(char *pathlist, char mode);
    4243extern double g_kernel_version;
     
    8586        flag_set[i] = FALSE;
    8687    }
    87     for (j = 1; j <= MAX_NOOF_MEDIA; j++) {
    88         bkpinfo->media_size[j] = 650;
    89     }                           /* default */
     88    bkpinfo->media_size = 650; /* default */
    9089    res = retrieve_switches_from_command_line(argc, argv, flag_val, flag_set);
    9190    retval += res;
     
    9493        retval += res;
    9594    }
     95
    9696    log_msg(3, "Switches:-");
    9797    for (i = 0; i < 128; i++) {
     
    100100        }
    101101    }
    102     mr_asprintf(tmp, "mkdir -p %s/tmpfs", bkpinfo->tmpdir);
    103     paranoid_system(tmp);
    104     mr_free(tmp);
    105 
    106     /*  Before erasing dirs go into a safe place */
    107     if (chdir("/tmp")) {
    108         // FIXME
    109     }
    110     mr_asprintf(tmp, "rm -Rf %s/tmp.mondo.*", bkpinfo->tmpdir);
    111     paranoid_system(tmp);
    112     mr_free(tmp);
    113 
    114     mr_asprintf(tmp, "mkdir -p %s", bkpinfo->scratchdir);
    115     paranoid_system(tmp);
    116     mr_free(tmp);
     102
    117103    return (retval);
    118104}
    119 
    120 
    121105
    122106
     
    130114int process_the_s_switch(char *value)
    131115{
    132     int j;
    133     char tmp[MAX_STR_LEN], *p;
    134 
    135116    assert(bkpinfo != NULL);
    136117    assert(value != NULL);
    137118
    138     bkpinfo->media_size[0] = -1;    /* dummy value */
    139     for (j = 1, p = value; j < MAX_NOOF_MEDIA && strchr(p, ',');
    140          j++, p = strchr(p, ',') + 1) {
    141         strncpy(tmp, p, MAX_STR_LEN);
    142         *(strchr(tmp, ',')) = '\0';
    143         bkpinfo->media_size[j] = friendly_sizestr_to_sizelong(tmp);
    144         log_msg(3, "media_size[%d] = %ld", j, bkpinfo->media_size[j]);
    145     }
    146     for (; j <= MAX_NOOF_MEDIA; j++) {
    147         bkpinfo->media_size[j] = friendly_sizestr_to_sizelong(p);
    148     }
    149     for (j = 1; j <= MAX_NOOF_MEDIA; j++) {
    150         if (bkpinfo->media_size[j] <= 0) {
    151             log_msg(1, "You gave media #%d an invalid size\n", j);
    152             return (-1);
    153         }
     119    bkpinfo->media_size = -1;   /* dummy value */
     120    bkpinfo->media_size = friendly_sizestr_to_sizelong(value);
     121    log_msg(3, "media_size = %ld", bkpinfo->media_size);
     122    if (bkpinfo->media_size <= 0) {
     123        log_msg(1, "You gave media an invalid size %s\n", value);
     124        return (-1);
    154125    }
    155126    return (0);
     
    269240            retval++;
    270241            log_to_screen("Please supply a sensible value with '-I'\n");
     242        }
     243        if (!strcmp(bkpinfo->include_paths, "/")) {
     244            log_msg(2, "'/' is pleonastic.");
     245            bkpinfo->include_paths[0] = '\0';
     246        }
     247        if (bkpinfo->include_paths[0]) {
     248            strcat(bkpinfo->include_paths, "|");
    271249        }
    272250
     
    361339        mr_free(tmp1);
    362340        flag_set['d'] = TRUE;
    363         strcpy(flag_val['d'], p);
    364         mr_free(p);
    365341        log_to_screen("You didn't specify a tape streamer device. I'm assuming %s", flag_val['d']);
    366342    }
     
    429405                }
    430406            } else if (flag_set['u'] || flag_set['t']) {
    431                 for (i = 0; i <= MAX_NOOF_MEDIA; i++) {
    432                     bkpinfo->media_size[i] = 0;
    433                 }
     407                bkpinfo->media_size = 0;
    434408            } else {
    435409                retval++;
     
    483457        /* p points on to the string server:/path */
    484458        /* Store the 2 values */
     459        /*  using memmove instead of strcpy as per #584 */
     460        /* memmove(bkpinfo->netfs_mount, p, MAX_STR_LEN); */
    485461        bkpinfo->netfs_mount = p;
    486462
     
    492468            p++;
    493469            /* new netfs mount */
    494             bkpinfo->netfs_mount = p;
     470            mr_asprintf(bkpinfo->netfs_mount, "%s", p);
     471            /* now that user is computed, create the right value by removing end of string */
    495472            p--;
    496473            *p = '\0';
     
    506483                if (strstr(bkpinfo->netfs_proto, "sshfs")) {
    507484                    mr_asprintf(tmp1, "sshfs %s@%s", bkpinfo->netfs_user, bkpinfo->netfs_mount);
    508                 } else if (strstr(bkpinfo->netfs_proto, "smbfs")) {
    509                     mr_asprintf(tmp1, "mount -t cifs %s -o user=%s", bkpinfo->netfs_mount, bkpinfo->netfs_user);
    510485                } else if (strstr(bkpinfo->netfs_proto, "smbfs")) {
    511486                    mr_asprintf(tmp1, "mount -t cifs %s -o user=%s", bkpinfo->netfs_mount, bkpinfo->netfs_user);
     
    521496                } else if (strstr(bkpinfo->netfs_proto, "smbfs")) {
    522497                    mr_asprintf(tmp1, "mount -t cifs %s", bkpinfo->netfs_mount);
    523                 } else if (strstr(bkpinfo->netfs_proto, "smbfs")) {
    524                     mr_asprintf(tmp1, "mount -t cifs %s", bkpinfo->netfs_mount);
    525498                } else if (strstr(bkpinfo->netfs_proto, "nfs")) {
    526499                    mr_asprintf(tmp1, "mount %s", bkpinfo->netfs_mount);
     
    611584
    612585    if (flag_set['E']) {
    613         if (bkpinfo->exclude_paths && bkpinfo->exclude_paths[0] == '-') {
     586        if (bkpinfo->exclude_paths && (bkpinfo->exclude_paths[0] == '-')) {
    614587            retval++;
    615588            log_to_screen("Please supply a sensible value with '-E'\n");
     
    758731        if (i) {
    759732            retval++;
    760             log_to_screen(tmp2, "Are you sure directory '%s' exists in remote dir '%s'?\nIf so, do you have rights to write to it?\n", bkpinfo->netfs_remote_dir, bkpinfo->netfs_mount);
     733            log_to_screen("Are you sure directory '%s' exists in remote dir '%s'?\nIf so, do you have rights to write to it?\n", bkpinfo->netfs_remote_dir, bkpinfo->netfs_mount);
    761734        }
    762735        unlink(tmp1);
     
    805778            mr_free(tmp1);
    806779        }
    807         mr_asprintf(bkpinfo->scratchdir, "%s/mondo.scratch.%ld", flag_val['S'], random() % 32768);
     780
     781        mr_asprintf(tmp1, "ln -sf %s/.foo.dat %s/.bar.dat", bkpinfo->scratchdir, bkpinfo->scratchdir);
     782        if (run_program_and_log_output(tmp1, 1)) {
     783            retval++;
     784            mr_free(tmp1);
     785            log_to_screen("Please don't specify a SAMBA or VFAT or NFS scratchdir.");
     786            fatal_error("I cannot write to the scratchdir you specified.");
     787        }
     788        mr_free(tmp1);
    808789    }
    809790
     
    815796
    816797        if (i) {
     798            retval++;
    817799            log_to_screen("Please specify a tempdir which I can write to. :)");
    818800            fatal_error("I cannot write to the tempdir you specified.");
Note: See TracChangeset for help on using the changeset viewer.