Changeset 900 in MondoRescue for trunk/mondo/src/mondoarchive/mondo-cli.c


Ignore:
Timestamp:
Oct 24, 2006, 8:49:18 AM (17 years ago)
Author:
Bruno Cornec
Message:

Huge patch to introduce low level functions that will bw used everywhere (mr_free, mr_asprintf, ...)
Nearly linking now due to that.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/mondo/src/mondoarchive/mondo-cli.c

    r815 r900  
    1414#include <pthread.h>
    1515#endif
     16#include "mr_mem.h"
    1617
    1718extern int g_loglevel;
     
    8283    for (i = 0; i < 128; i++) {
    8384        if (flag_set[i]) {
    84             asprintf(&tmp, "-%c %s", i, flag_val[i]);
     85            mr_asprintf(&tmp, "-%c %s", i, flag_val[i]);
    8586            log_msg(3, tmp);
    86             paranoid_free(tmp);
     87            mr_free(tmp);
    8788        }
    8889    }
    8990//    }
    90     asprintf(&tmp, "rm -Rf %s/mondo.tmp.*", bkpinfo->tmpdir);
     91    mr_asprintf(&tmp, "rm -Rf %s/mondo.tmp.*", bkpinfo->tmpdir);
    9192    paranoid_system(tmp);
    92     paranoid_free(tmp);
    93 
    94     asprintf(&tmp, "rm -Rf %s/mondo.scratch.*", bkpinfo->scratchdir);
     93    mr_free(tmp);
     94
     95    mr_asprintf(&tmp, "rm -Rf %s/mondo.scratch.*", bkpinfo->scratchdir);
    9596    paranoid_system(tmp);
    96     paranoid_free(tmp);
     97    mr_free(tmp);
    9798
    9899    /* BERLIOS : Useless ???
     
    103104    */
    104105
    105     asprintf(&tmp, "mkdir -p %s/tmpfs", bkpinfo->tmpdir);
     106    mr_asprintf(&tmp, "mkdir -p %s/tmpfs", bkpinfo->tmpdir);
    106107    paranoid_system(tmp);
    107     paranoid_free(tmp);
    108 
    109     asprintf(&tmp, "mkdir -p %s", bkpinfo->scratchdir);
     108    mr_free(tmp);
     109
     110    mr_asprintf(&tmp, "mkdir -p %s", bkpinfo->scratchdir);
    110111    paranoid_system(tmp);
    111     paranoid_free(tmp);
     112    mr_free(tmp);
    112113
    113114    if (bkpinfo->nfs_mount != NULL) {
     
    139140    for (j = 1, p = value; j < MAX_NOOF_MEDIA && strchr(p, ',');
    140141         j++, p = strchr(p, ',') + 1) {
    141         asprintf(&tmp, p);
     142        mr_asprintf(&tmp, p);
    142143        q = strchr(tmp, ',');
    143144        if (q != NULL) {
     
    145146        }
    146147        bkpinfo->media_size[j] = friendly_sizestr_to_sizelong(tmp);
    147         paranoid_free(tmp);
    148 
    149         asprintf(&comment, "media_size[%d] = %ld", j,
     148        mr_free(tmp);
     149
     150        mr_asprintf(&comment, "media_size[%d] = %ld", j,
    150151                bkpinfo->media_size[j]);
    151152        log_msg(3, comment);
    152         paranoid_free(comment);
     153        mr_free(comment);
    153154    }
    154155    for (; j <= MAX_NOOF_MEDIA; j++) {
     
    245246        }
    246247    }
    247     paranoid_free(tmp);
     248    mr_free(tmp);
    248249
    249250    if (flag_set['R']) {
     
    257258        }
    258259    }
    259     paranoid_free(tmp1);
     260    mr_free(tmp1);
    260261
    261262    if (flag_set['W']) {
     
    276277            bkpinfo->include_paths = NULL;
    277278        }
    278         asprintf(&tmp1, flag_val['I']);
     279        mr_asprintf(&tmp1, flag_val['I']);
    279280        p = tmp1;
    280281        q = tmp1;
     
    298299            }
    299300        }
    300         paranoid_free(tmp1);
     301        mr_free(tmp1);
    301302
    302303        if (bkpinfo->include_paths == NULL) {
    303             asprintf(&tmp1, "%s", flag_val['I']);
     304            mr_asprintf(&tmp1, "%s", flag_val['I']);
    304305        } else {
    305             asprintf(&tmp1, "%s %s", bkpinfo->include_paths, flag_val['I']);
    306         }
    307         paranoid_alloc(bkpinfo->include_paths,tmp1);
    308         paranoid_free(tmp1);
     306            mr_asprintf(&tmp1, "%s %s", bkpinfo->include_paths, flag_val['I']);
     307        }
     308        mr_allocstr(bkpinfo->include_paths,tmp1);
     309        mr_free(tmp1);
    309310
    310311        log_msg(1, "include_paths is now '%s'", bkpinfo->include_paths);
     
    328329        }
    329330        bkpinfo->make_filelist = FALSE;
    330         paranoid_alloc(bkpinfo->include_paths, flag_val['J']);
     331        mr_allocstr(bkpinfo->include_paths, flag_val['J']);
    331332    }
    332333
     
    384385        }
    385386        flag_set['d'] = TRUE;
    386         paranoid_free(tmp); // allocation from find_tape_device_and_size
    387 
    388         asprintf(&tmp,
     387        mr_free(tmp); // allocation from find_tape_device_and_size
     388
     389        mr_asprintf(&tmp,
    389390                _("You didn't specify a tape streamer device. I'm assuming %s"),
    390391                flag_val['d']);
    391392        log_to_screen(tmp);
    392         paranoid_free(tmp);
     393        mr_free(tmp);
    393394        percent = 0;
    394395    }
     
    412413        }
    413414        if (!flag_set['s']) {
    414             asprintf(&flag_val['s'], "%dm", DEFAULT_DVD_DISK_SIZE); // 4.7 salesman's GB = 4.482 real GB = 4582 MB
     415            mr_asprintf(&flag_val['s'], "%dm", DEFAULT_DVD_DISK_SIZE);  // 4.7 salesman's GB = 4.482 real GB = 4582 MB
    415416            log_to_screen
    416417                (_("You did not specify a size (-s) for DVD. I'm guessing %s."),
     
    454455    }
    455456    if (flag_set['n']) {
    456         paranoid_alloc(bkpinfo->nfs_mount,flag_val['n']);
     457        mr_allocstr(bkpinfo->nfs_mount,flag_val['n']);
    457458        if (!flag_set['d']) {
    458             paranoid_alloc(bkpinfo->nfs_remote_dir,"/");
    459         }
    460         asprintf(&tmp, "mount | grep -x \"%s .*\" | cut -d' ' -f3",
     459            mr_allocstr(bkpinfo->nfs_remote_dir,"/");
     460        }
     461        mr_asprintf(&tmp, "mount | grep -x \"%s .*\" | cut -d' ' -f3",
    461462                bkpinfo->nfs_mount);
    462         paranoid_free(bkpinfo->isodir);
     463        mr_free(bkpinfo->isodir);
    463464        bkpinfo->isodir = call_program_and_get_last_line_of_output(tmp);
    464         paranoid_free(tmp);
     465        mr_free(tmp);
    465466
    466467        if (strlen(bkpinfo->isodir) < 3) {
     
    503504
    504505    if (flag_set['E']) {
    505         asprintf(&tmp1, flag_val['E']);
     506        mr_asprintf(&tmp1, flag_val['E']);
    506507        p = tmp1;
    507508        q = tmp1;
     
    531532            }
    532533        }
    533         paranoid_free(tmp1);
     534        mr_free(tmp1);
    534535
    535536        if (bkpinfo->exclude_paths == NULL) {
    536             asprintf(&tmp1, "%s", flag_val['E']);
     537            mr_asprintf(&tmp1, "%s", flag_val['E']);
    537538        } else {
    538             asprintf(&tmp1, "%s %s", bkpinfo->exclude_paths, flag_val['E']);
    539         }
    540         paranoid_alloc(bkpinfo->exclude_paths,tmp1);
    541         paranoid_free(tmp1);
     539            mr_asprintf(&tmp1, "%s %s", bkpinfo->exclude_paths, flag_val['E']);
     540        }
     541        mr_allocstr(bkpinfo->exclude_paths,tmp1);
     542        mr_free(tmp1);
    542543    }
    543544
     
    550551        psz = list_of_NFS_mounts_only();
    551552        if (bkpinfo->exclude_paths != NULL) {
    552             asprintf(&tmp1, "%s %s", bkpinfo->exclude_paths, psz);
     553            mr_asprintf(&tmp1, "%s %s", bkpinfo->exclude_paths, psz);
    553554        } else {
    554             asprintf(&tmp1, "%s", psz);
    555         }
    556         paranoid_free(psz);
    557         paranoid_alloc(bkpinfo->exclude_paths, tmp1);
    558         paranoid_free(tmp1);
     555            mr_asprintf(&tmp1, "%s", psz);
     556        }
     557        mr_free(psz);
     558        mr_allocstr(bkpinfo->exclude_paths, tmp1);
     559        mr_free(tmp1);
    559560
    560561        log_msg(3, "-N means we're now excluding %s",
     
    563564
    564565    if (flag_set['b']) {
    565         asprintf(&psz, flag_val['b']);
     566        mr_asprintf(&psz, flag_val['b']);
    566567        log_msg(1, "psz = '%s'", psz);
    567568        if (psz[strlen(psz) - 1] == 'k') {
     
    571572            itbs = atol(psz);
    572573        }
    573         paranoid_free(psz);
     574        mr_free(psz);
    574575
    575576        log_msg(1, "'%s' --> %ld", flag_val['b'], itbs);
     
    592593
    593594    if (flag_set['x']) {
    594         paranoid_alloc(bkpinfo->image_devs,flag_val['x']);
     595        mr_allocstr(bkpinfo->image_devs,flag_val['x']);
    595596        if (run_program_and_log_output("which ntfsclone", 2)) {
    596597            fatal_error("Please install ntfsprogs package/tarball.");
     
    604605    if (flag_set['k']) {
    605606        if (strcasecmp(flag_val['k'], "FAILSAFE")) {
    606             paranoid_alloc(bkpinfo->kernel_path,"FAILSAFE");
     607            mr_allocstr(bkpinfo->kernel_path,"FAILSAFE");
    607608
    608609            if (!does_file_exist(bkpinfo->kernel_path)) {
    609610                retval++;
    610                 asprintf(&tmp,
     611                mr_asprintf(&tmp,
    611612                    _("You specified kernel '%s', which does not exist\n"),
    612613                    bkpinfo->kernel_path);
    613614                log_to_screen(tmp);
    614                 paranoid_free(tmp);
     615                mr_free(tmp);
    615616            }
    616617        } else {
    617             paranoid_alloc(bkpinfo->kernel_path,flag_val['k']);
     618            mr_allocstr(bkpinfo->kernel_path,flag_val['k']);
    618619        }
    619620    }
    620621
    621622    if (flag_set['p']) {
    622         paranoid_alloc(bkpinfo->prefix,flag_val['p']);
     623        mr_allocstr(bkpinfo->prefix,flag_val['p']);
    623624    }
    624625
    625626    if (flag_set['d']) {        /* backup directory (if ISO/NFS) */
    626627        if (flag_set['i']) {
    627             paranoid_alloc(bkpinfo->isodir,flag_val['d']);
    628             asprintf(&tmp, "ls -l %s", bkpinfo->isodir);
     628            mr_allocstr(bkpinfo->isodir,flag_val['d']);
     629            mr_asprintf(&tmp, "ls -l %s", bkpinfo->isodir);
    629630            if (run_program_and_log_output(tmp, FALSE)) {
    630631                fatal_error
    631632                    ("output folder does not exist - please create it");
    632633            }
    633             paranoid_free(tmp);
     634            mr_free(tmp);
    634635        } else if (flag_set['n']) {
    635             paranoid_alloc(bkpinfo->nfs_remote_dir,flag_val['d']);
     636            mr_allocstr(bkpinfo->nfs_remote_dir,flag_val['d']);
    636637        } else {                /* backup device (if tape/CD-R/CD-RW) */
    637638
    638             paranoid_alloc(bkpinfo->media_device, flag_val['d']);
     639            mr_allocstr(bkpinfo->media_device, flag_val['d']);
    639640        }
    640641    }
    641642
    642643    if (flag_set['n']) {
    643         asprintf(&tmp, "echo hi > %s/%s/.dummy.txt", bkpinfo->isodir,
     644        mr_asprintf(&tmp, "echo hi > %s/%s/.dummy.txt", bkpinfo->isodir,
    644645                bkpinfo->nfs_remote_dir);
    645646        if (run_program_and_log_output(tmp, FALSE)) {
    646647            retval++;
    647             paranoid_free(tmp);
    648             asprintf(&tmp,
     648            mr_free(tmp);
     649            mr_asprintf(&tmp,
    649650                    _("Are you sure directory '%s' exists in remote dir '%s'?\nIf so, do you have rights to write to it?\n"),
    650651                    bkpinfo->nfs_remote_dir, bkpinfo->nfs_mount);
    651652            log_to_screen(tmp);
    652653        }
    653         paranoid_free(tmp);
     654        mr_free(tmp);
    654655    }
    655656
     
    664665            }
    665666        } else if ((tmp = find_cdrw_device()) ==  NULL) {
    666             paranoid_alloc(bkpinfo->media_device, tmp);
    667             paranoid_free(tmp);
     667            mr_allocstr(bkpinfo->media_device, tmp);
     668            mr_free(tmp);
    668669            retval++;
    669670            log_to_screen
     
    671672        } else {
    672673            flag_set['d'] = TRUE;
    673             asprintf(&flag_val['d'], bkpinfo->media_device);
     674            mr_asprintf(&flag_val['d'], bkpinfo->media_device);
    674675        }
    675676    }
     
    689690    j = (int) random() % 32768;
    690691    if (flag_set['S']) {
    691         asprintf(&tmp, "%s/mondo.scratch.%d", flag_val['S'], j);
    692         paranoid_free(bkpinfo->scratchdir);
     692        mr_asprintf(&tmp, "%s/mondo.scratch.%d", flag_val['S'], j);
     693        mr_free(bkpinfo->scratchdir);
    693694        bkpinfo->scratchdir = tmp;
    694695    }
    695696    if (flag_set['T']) {
    696         asprintf(&tmp, "%s/mondo.tmp.%d", flag_val['T'], j);
    697         paranoid_free(bkpinfo->tmpdir);
     697        mr_asprintf(&tmp, "%s/mondo.tmp.%d", flag_val['T'], j);
     698        mr_free(bkpinfo->tmpdir);
    698699        bkpinfo->tmpdir = tmp;
    699         asprintf(&tmp, "touch %s/.foo.dat", flag_val['T']);
     700        mr_asprintf(&tmp, "touch %s/.foo.dat", flag_val['T']);
    700701        if (run_program_and_log_output(tmp, 1)) {
    701702            retval++;
     
    704705            fatal_error("I cannot write to the tempdir you specified.");
    705706        }
    706         paranoid_free(tmp);
    707 
    708         asprintf(&tmp, "ln -sf %s/.foo.dat %s/.bar.dat", flag_val['T'],
     707        mr_free(tmp);
     708
     709        mr_asprintf(&tmp, "ln -sf %s/.foo.dat %s/.bar.dat", flag_val['T'],
    709710                flag_val['T']);
    710711        if (run_program_and_log_output(tmp, 1)) {
     
    714715            fatal_error("I cannot write to the tempdir you specified.");
    715716        }
    716         paranoid_free(tmp);
     717        mr_free(tmp);
    717718    }
    718719
    719720    if (flag_set['A']) {
    720         paranoid_alloc(bkpinfo->call_after_iso,flag_val['A']);
     721        mr_allocstr(bkpinfo->call_after_iso,flag_val['A']);
    721722    }
    722723    if (flag_set['B']) {
    723         paranoid_alloc(bkpinfo->call_before_iso,flag_val['B']);
     724        mr_allocstr(bkpinfo->call_before_iso,flag_val['B']);
    724725    }
    725726    if (flag_set['F']) {
     
    753754    if (flag_set['f']) {
    754755        tmp = resolve_softlinks_to_get_to_actual_device_file(flag_val['f']);
    755         paranoid_alloc(bkpinfo->boot_device,tmp);
     756        mr_allocstr(bkpinfo->boot_device,tmp);
    756757    }
    757758    if (flag_set['Q']) {
     
    763764        log_msg(3, "boot loader is %c, residing at %s", i, tmp);
    764765        printf(_("boot loader is %c, residing at %s\n"), i, tmp);
    765         paranoid_free(tmp);
     766        mr_free(tmp);
    766767        finish(0);
    767768    }
    768     paranoid_free(tmp);
     769    mr_free(tmp);
    769770
    770771    if (flag_set['P']) {
    771         paranoid_alloc(bkpinfo->postnuke_tarball,flag_val['P']);
     772        mr_allocstr(bkpinfo->postnuke_tarball,flag_val['P']);
    772773    }
    773774
     
    883884            if (flag_set[optopt]) {
    884885                bad_switches = TRUE;
    885                 asprintf(&tmp, _("Switch -%c previously defined as %s\n"), opt,
     886                mr_asprintf(&tmp, _("Switch -%c previously defined as %s\n"), opt,
    886887                        flag_val[i]);
    887888                log_to_screen(tmp);
    888                 paranoid_free(tmp);
     889                mr_free(tmp);
    889890            } else {
    890891                flag_set[opt] = TRUE;
     
    900901                        if (strchr(flag_val[opt], '/')
    901902                            && flag_val[opt][0] != '/') {
    902                             asprintf(&tmp,
     903                            mr_asprintf(&tmp,
    903904                                    _("-%c flag --- must be absolute path --- '%s' isn't absolute"),
    904905                                    opt, flag_val[opt]);
    905906                            log_to_screen(tmp);
    906                             paranoid_free(tmp);
     907                            mr_free(tmp);
    907908                            bad_switches = TRUE;
    908909                        }
    909910                    }
    910                     asprintf(&flag_val[opt], optarg);
     911                    mr_asprintf(&flag_val[opt], optarg);
    911912                }
    912913            }
     
    915916    for (i = optind; i < argc; i++) {
    916917        bad_switches = TRUE;
    917         asprintf(&tmp, _("Invalid arg -- %s\n"), argv[i]);
     918        mr_asprintf(&tmp, _("Invalid arg -- %s\n"), argv[i]);
    918919        log_to_screen(tmp);
    919         paranoid_free(tmp);
     920        mr_free(tmp);
    920921    }
    921922    return (bad_switches);
     
    946947    switch (sig) {
    947948    case SIGINT:
    948         asprintf(&tmp, _("SIGINT signal received from OS"));
    949         asprintf(&tmp2, _("You interrupted me :-)"));
     949        mr_asprintf(&tmp, _("SIGINT signal received from OS"));
     950        mr_asprintf(&tmp2, _("You interrupted me :-)"));
    950951        break;
    951952    case SIGKILL:
    952         asprintf(&tmp, _("SIGKILL signal received from OS"));
    953         asprintf(&tmp2,
     953        mr_asprintf(&tmp, _("SIGKILL signal received from OS"));
     954        mr_asprintf(&tmp2,
    954955               _("I seriously have no clue how this signal even got to me. Something's wrong with your system."));
    955956        break;
    956957    case SIGTERM:
    957         asprintf(&tmp, _("SIGTERM signal received from OS"));
    958         asprintf(&tmp2, _("Got terminate signal"));
     958        mr_asprintf(&tmp, _("SIGTERM signal received from OS"));
     959        mr_asprintf(&tmp2, _("Got terminate signal"));
    959960        break;
    960961    case SIGHUP:
    961         asprintf(&tmp, _("SIGHUP signal received from OS"));
    962         asprintf(&tmp2, _("Hangup on line"));
     962        mr_asprintf(&tmp, _("SIGHUP signal received from OS"));
     963        mr_asprintf(&tmp2, _("Hangup on line"));
    963964        break;
    964965    case SIGSEGV:
    965         asprintf(&tmp, _("SIGSEGV signal received from OS"));
    966         asprintf(&tmp2,
     966        mr_asprintf(&tmp, _("SIGSEGV signal received from OS"));
     967        mr_asprintf(&tmp2,
    967968               _("Internal programming error. Please send a backtrace as well as your log."));
    968969        break;
    969970    case SIGPIPE:
    970         asprintf(&tmp, _("SIGPIPE signal received from OS"));
    971         asprintf(&tmp2, _("Pipe was broken"));
     971        mr_asprintf(&tmp, _("SIGPIPE signal received from OS"));
     972        mr_asprintf(&tmp2, _("Pipe was broken"));
    972973        break;
    973974    case SIGABRT:
    974         asprintf(&tmp, _("SIGABRT signal received from OS"));
    975         asprintf(&tmp2,
     975        mr_asprintf(&tmp, _("SIGABRT signal received from OS"));
     976        mr_asprintf(&tmp2,
    976977                _("Abort - probably failed assertion. I'm sleeping for a few seconds so you can read the message."));
    977978        break;
    978979    default:
    979         asprintf(&tmp, _("(Unknown)"));
    980         asprintf(&tmp2, _("(Unknown)"));
     980        mr_asprintf(&tmp, _("(Unknown)"));
     981        mr_asprintf(&tmp2, _("(Unknown)"));
    981982    }
    982983
    983984    log_to_screen(tmp);
    984985    log_to_screen(tmp2);
    985     paranoid_free(tmp);
    986     paranoid_free(tmp2);
     986    mr_free(tmp);
     987    mr_free(tmp2);
    987988    if (sig == SIGABRT) {
    988989        sleep(10);
Note: See TracChangeset for help on using the changeset viewer.