Changeset 75 in MondoRescue for trunk/mondo/mondo/common/libmondo-devices.c


Ignore:
Timestamp:
Oct 20, 2005, 2:35:15 PM (19 years ago)
Author:
andree
Message:

Various changes to get archiving to NFS work in interactive mode. It
wasn't really like were were bugs, it appeared more like it was simply
not finished.

Side note: I believe that bkpinfo->isodir and bkpinfo->prefix were the
wrong way round in libmondo-archive.c and I've swapped them.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/mondo/mondo/common/libmondo-devices.c

    r59 r75  
    260260extern struct s_bkpinfo *g_bkpinfo_DONTUSETHIS;
    261261extern char *g_erase_tmpdir_and_scratchdir;
     262extern char *g_selfmounted_isodir;
    262263
    263264static char g_cdrw_drive_is_here[MAX_STR_LEN / 4] = "";
     
    18201821    char *command;
    18211822    char *comment;
     1823    char *prompt;
    18221824    int i;
    18231825    FILE *fin;
     
    18271829    malloc_string(command);
    18281830    malloc_string(comment);
     1831    malloc_string(prompt);
    18291832    assert(bkpinfo != NULL);
    18301833    sz_size[0] = '\0';
     
    20992102                }
    21002103            }
    2101             sprintf(command, "mount | grep %s | cut -d' ' -f3",
    2102                     bkpinfo->nfs_mount);
     2104            // check whether already mounted - we better remove
     2105                        // surrounding spaces and trailing '/' for this
     2106            strip_spaces (bkpinfo->nfs_mount);
     2107            if (bkpinfo->nfs_mount[strlen(bkpinfo->nfs_mount) - 1] == '/')
     2108              bkpinfo->nfs_mount[strlen(bkpinfo->nfs_mount) - 1] = '\0';
     2109            sprintf(command, "mount | grep \"%s \" | cut -d' ' -f3",
     2110                   bkpinfo->nfs_mount);
    21032111            strcpy(bkpinfo->isodir,
    21042112                   call_program_and_get_last_line_of_output(command));
     
    21142122        }
    21152123        if (!is_this_device_mounted(bkpinfo->nfs_mount)) {
    2116             sprintf(bkpinfo->isodir, "/tmp/isodir");
    2117             run_program_and_log_output("mkdir -p /tmp/isodir", 5);
    2118             sprintf(tmp, "mount %s -t nfs -o nolock /tmp/isodir",
    2119                     bkpinfo->nfs_mount);
    2120             run_program_and_log_output(tmp, 5);
     2124          sprintf(bkpinfo->isodir, "/tmp/isodir.mondo.%d", (int)(random()%32768));
     2125          sprintf(command, "mkdir -p %s", bkpinfo->isodir);
     2126          run_program_and_log_output(command, 5);
     2127          sprintf(tmp, "mount %s -t nfs %s", bkpinfo->nfs_mount, bkpinfo->isodir);
     2128          run_program_and_log_output(tmp, 5);
     2129          malloc_string(g_selfmounted_isodir);
     2130          strcpy(g_selfmounted_isodir, bkpinfo->isodir);
    21212131        }
    21222132        if (!is_this_device_mounted(bkpinfo->nfs_mount)) {
     
    21332143        }
    21342144        strcpy(bkpinfo->nfs_remote_dir, tmp);
     2145        // check whether writable - we better remove surrounding spaces for this
     2146        strip_spaces (bkpinfo->nfs_remote_dir);
     2147        sprintf (command, "echo hi > %s/%s/.dummy.txt", bkpinfo->isodir,
     2148                      bkpinfo->nfs_remote_dir);
     2149        while (run_program_and_log_output (command, FALSE)) {
     2150          strcpy(tmp, bkpinfo->nfs_remote_dir);
     2151          asprintf (&prompt,
     2152                "Directory '%s' under mountpoint '%s' does not exist or is not writable. You can fix this or change the directory and retry or cancel the backup.",
     2153                bkpinfo->nfs_remote_dir, bkpinfo->isodir);
     2154          if(!popup_and_get_string ("Directory", prompt, tmp, MAX_STR_LEN)) {
     2155            log_to_screen("User has chosen not to backup the PC");
     2156            finish(1);
     2157          }
     2158          strcpy(bkpinfo->nfs_remote_dir, tmp);
     2159          // check whether writable - we better remove surrounding spaces for this */
     2160          strip_spaces (bkpinfo->nfs_remote_dir);
     2161          asprintf (&command, "echo hi > %s/%s/.dummy.txt", bkpinfo->isodir,
     2162                        bkpinfo->nfs_remote_dir);
     2163        }
    21352164        for (i = 0; i <= MAX_NOOF_MEDIA; i++) {
    21362165            bkpinfo->media_size[i] = 650;
     
    23472376    paranoid_free(command);
    23482377    paranoid_free(comment);
     2378    paranoid_free(prompt);
    23492379    return (0);
    23502380}
Note: See TracChangeset for help on using the changeset viewer.