Ignore:
Timestamp:
Aug 18, 2009, 2:37:55 PM (15 years ago)
Author:
Bruno Cornec
Message:

r3332@localhost: bruno | 2009-08-07 23:59:34 +0200

  • bkpinfo->tmpchdir is now dynamically allocated
  • reorganize how tmpdir and scratchdir are initialized and the startup of the main sections
  • change of interface for maintain_collection_of_recent_archives, mondo_makefilelist, chop_filelist
  • sensibly_set_tmpdir_and_scratchdir => sensibly_set_scratchdir
  • reset_bkpinfo => init_bkpinfo
  • add function mr_free_bkpinfo
  • Fix a bug in mr_strtok
  • mondoarchive seems to globally work. Newt stuff needs more testing
File:
1 edited

Legend:

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

    r2320 r2321  
    3636
    3737
    38 int mondo_makefilelist(char *logfile, char *tmpdir, char *scratchdir,
    39                        char *include_paths, char *excp, int differential,
    40                        char *userdef_filelist);
     38int mondo_makefilelist(char *logfile, char *include_paths, char *excp, int differential, char *userdef_filelist);
    4139
    4240
     
    106104    }
    107105
    108     noof_sets = chop_filelist(filelist, bkpinfo->tmpdir, bkpinfo->optimal_set_size);
     106    noof_sets = chop_filelist(filelist, bkpinfo->optimal_set_size);
    109107    mr_free(filelist);
    110108    estimate_noof_media_required(noof_sets);    // for cosmetic purposes
     
    194192 *
    195193 * @param filelist The big filelist (filelist.full) to chop up.
    196  * @param outdir The directory to place the files (filelist.N where N is
    197  * an integer, biggielist.txt, and LAST-FILELIST-NUMBER) created
    198194 * @param maxsetsizeK Optimal size of a fileset (X above).
    199195 * @return number of errors encountered (0 for success).
    200196 */
    201 int chop_filelist(char *filelist, char *outdir, long maxsetsizeK)
     197int chop_filelist(char *filelist, long maxsetsizeK)
    202198{
    203199/*@ long ****************************************/
     
    228224
    229225    assert_string_is_neither_NULL_nor_zerolength(filelist);
    230     assert_string_is_neither_NULL_nor_zerolength(outdir);
    231226    assert(maxsetsizeK > 0);
    232227
     
    245240    curr_set_no = 0;
    246241    curr_set_size = 0;
    247     mr_asprintf(&outfname, "%s/filelist.%ld", outdir, curr_set_no);
    248     mr_asprintf(&biggie_fname, "%s/biggielist.txt", outdir);
     242    mr_asprintf(&outfname, "%s/filelist.%ld", bkpinfo->tmpdir, curr_set_no);
     243    mr_asprintf(&biggie_fname, "%s/biggielist.txt", bkpinfo->tmpdir);
    249244    log_it("outfname=%s; biggie_fname=%s", outfname, biggie_fname);
    250245    if (!(fbig = fopen(biggie_fname, "w"))) {
     
    298293                curr_set_size = 0;
    299294
    300                 mr_asprintf(&outfname, "%s/filelist.%ld", outdir, curr_set_no);
     295                mr_asprintf(&outfname, "%s/filelist.%ld", bkpinfo->tmpdir, curr_set_no);
    301296                if (!(fout = fopen(outfname, "w"))) {
    302297                    log_OS_error("Unable to openout outfname");
     
    328323    mr_free(biggie_fname);
    329324
    330     mr_asprintf(&outfname, "%s/LAST-FILELIST-NUMBER", outdir);
     325    mr_asprintf(&outfname, "%s/LAST-FILELIST-NUMBER", bkpinfo->tmpdir);
    331326    mr_asprintf(&tmp, "%ld", curr_set_no);
    332327    if (write_one_liner_data_file(outfname, tmp)) {
     
    13071302    if (bkpinfo->make_filelist) {
    13081303        res =
    1309             mondo_makefilelist(MONDO_LOGFILE, bkpinfo->tmpdir, bkpinfo->scratchdir, bkpinfo->include_paths, bkpinfo->exclude_paths, bkpinfo->differential, NULL);
     1304            mondo_makefilelist(MONDO_LOGFILE, bkpinfo->include_paths, bkpinfo->exclude_paths, bkpinfo->differential, NULL);
    13101305    } else {
    13111306        res =
    1312             mondo_makefilelist(MONDO_LOGFILE, bkpinfo->tmpdir, bkpinfo->scratchdir, NULL, bkpinfo->exclude_paths, bkpinfo->differential, bkpinfo->include_paths);
     1307            mondo_makefilelist(MONDO_LOGFILE, NULL, bkpinfo->exclude_paths, bkpinfo->differential, bkpinfo->include_paths);
    13131308    }
    13141309
     
    13771372            while((token = mr_strtok(sth, delims, &lastpos))) {
    13781373                mr_strcat(find_excludes," -path %s -prune -o", token);
     1374                mr_free(token);
    13791375            }
    13801376        }
     
    15421538 * Create the filelist for the backup. It will be stored in [scratchdir]/archives/filelist.full.
    15431539 * @param logfile Unused.
    1544  * @param tmpdir The tmpdir of the backup.
    1545  * @param scratchdir The scratchdir of the backup.
    15461540 * @param include_paths The paths to back up, or NULL if you're using a user-defined filelist.
    15471541 * @param excp The paths to NOT back up.
     
    15521546 * @bug Return value is meaningless.
    15531547 */
    1554 int mondo_makefilelist(char *logfile, char *tmpdir, char *scratchdir,
    1555                        char *include_paths, char *excp, int differential,
    1556                        char *userdef_filelist)
     1548int mondo_makefilelist(char *logfile, char *include_paths, char *excp, int differential, char *userdef_filelist)
    15571549{
    15581550    char *p, *q;
     
    15771569    }
    15781570    // make hole for filelist
    1579     mr_asprintf(&command, "mkdir -p %s/archives", scratchdir);
     1571    mr_asprintf(&command, "mkdir -p %s/archives", bkpinfo->scratchdir);
    15801572    paranoid_system(command);
    15811573    mr_free(command);
    15821574
    1583     mr_asprintf(&sz_filelist, "%s/tmpfs/filelist.full", tmpdir);
     1575    mr_asprintf(&sz_filelist, "%s/tmpfs/filelist.full", bkpinfo->tmpdir);
    15841576    make_hole_for_file(sz_filelist);
    15851577
     
    16401632        mr_free(tmp1);
    16411633
    1642         mr_asprintf(&exclude_paths, " %s %s %s %s %s . ..  " MNT_CDROM " " MNT_FLOPPY " /media /tmp  /proc /sys " MINDI_CACHE, MONDO_CACHE, (excp == NULL) ? "" : excp, tmp2, (tmpdir[0] == '/' && tmpdir[1] == '/') ? (tmpdir + 1) : tmpdir, (scratchdir[0] == '/' && scratchdir[1] == '/') ? (scratchdir + 1) : scratchdir);
     1634        mr_asprintf(&exclude_paths, " %s %s %s %s %s . ..  " MNT_CDROM " " MNT_FLOPPY " /media /tmp  /proc /sys " MINDI_CACHE, MONDO_CACHE, (excp == NULL) ? "" : excp, tmp2, (bkpinfo->tmpdir[0] == '/' && bkpinfo->tmpdir[1] == '/') ? (bkpinfo->tmpdir + 1) : bkpinfo->tmpdir, (bkpinfo->scratchdir[0] == '/' && bkpinfo->scratchdir[1] == '/') ? (bkpinfo->scratchdir + 1) : bkpinfo->scratchdir);
    16431635        mr_free(tmp2);
    16441636
    16451637        log_msg(2, "Excluding paths = '%s'", exclude_paths);
    16461638        log_msg(2, "Generating skeleton filelist so that we can track our progress");
    1647         sprintf(g_skeleton_filelist, "%s/tmpfs/skeleton.txt", tmpdir);
     1639        sprintf(g_skeleton_filelist, "%s/tmpfs/skeleton.txt", bkpinfo->tmpdir);
    16481640        make_hole_for_file(g_skeleton_filelist);
    16491641        log_msg(4, "g_skeleton_entries = %ld", g_skeleton_entries);
     
    16751667    }
    16761668    log_msg(2, "Copying new filelist to scratchdir");
    1677     mr_asprintf(&command, "mkdir -p %s/archives", scratchdir);
     1669    mr_asprintf(&command, "mkdir -p %s/archives", bkpinfo->scratchdir);
    16781670    paranoid_system(command);
    16791671    mr_free(command);
    16801672
    1681     mr_asprintf(&command, "cp -f %s %s/archives/", sz_filelist, scratchdir);
     1673    mr_asprintf(&command, "cp -f %s %s/archives/", sz_filelist, bkpinfo->scratchdir);
    16821674    paranoid_system(command);
    16831675    mr_free(command);
    16841676
    1685     mr_asprintf(&command, "mv -f %s %s", sz_filelist, tmpdir);
     1677    mr_asprintf(&command, "mv -f %s %s", sz_filelist, bkpinfo->tmpdir);
    16861678    paranoid_system(command);
    16871679    mr_free(command);
Note: See TracChangeset for help on using the changeset viewer.