Changeset 45 in MondoRescue for trunk/mondo/mondo/common/libmondo-archive.c


Ignore:
Timestamp:
Oct 5, 2005, 12:51:47 AM (19 years ago)
Author:
bcornec
Message:

asprint and getline now added

File:
1 edited

Legend:

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

    r41 r45  
    1 /* libmondo-archive.c
    2    $Id$
     1/* $Id$
    32
    43subroutines to handle the archiving of files
    54
    6 
    7 
    8 07/14
    9 - moved all ACL, xattr stuff here from libmondo-filelist.c
    10 
    11 07/12
    12 - when trying to find boot loader, look for /boot's /dev, not just /'s dev
    13 
    14 07/10
    15 - better detection of changed files
    16 - added ACL, xattr support for afio
    17 
    18 06/17
    19 - backup with partimagehack if NTFS device; dd, if non-NTFS device
    20 
    21 06/14
    22 - use mondorescue.iso instead of mindi.iso
    23 
    24 04/28
    25 - cleaned up if/then architecture-specific stuff re: CD-R(W)s
    26 
    27 04/03
    28 - added star support
    29 
    30 03/12
    31 - modified offer_to_write_floppies() to support dual-disk boot/root thing
    32 
    33 01/20/2004
    34 - reformat dvd twice if necessary
    35 
    36 12/01/2003
    37 - added pause_for_N_seconds(5, "Letting DVD drive settle");
    38 
    39 11/23
    40 - added #define DVDRWFORMAT
    41 
    42 11/20
    43 - use --no-emul-boot -b isolinux.bin instead of -b mindi-boot.2880.img
    44 
    45 10/23
    46 - wipe DVD at start, whether or not disk is DVD-RW; this is
    47   just a test, to see why dvd+rw-format followed by growiosfs
    48   locks up the drive
    49 - use the singlethreaded make_afioballs_and_images_OLD()
    50   instead of the multithreaded make_afioballs_and_images()
    51   if backing up to tape
    52 
    53 10/21
    54 - if backing up to dvd, look for relevant tools;
    55   abort if missing
    56 
    57 10/15
    58 - UI tweaks
    59 
    60 10/10
    61 - eject/inject DVD after wiping it
    62 
    63 09/27
    64 - pause_and_ask_for_cdr() will now blank DVD if necessary
    65 
    66 09/26
    67 - proper reporting of media type in displayed strings
    68   (i.e. DVD if DVD, CD if CD, etc.)
    69  
    70 09/25
    71 - add DVD support
    72 
    73 09/23
    74 - malloc/free global strings in new subroutines - malloc_libmondo_global_strings()
    75   and free_libmondo_global_strings() - which are in libmondo-tools.c
    76 
    77 09/15
    78 - changed a bunch of char[MAX_STR_LEN]'s to char*; malloc; free;
    79 
    80 09/14
    81 - cosmetic bug re: call to 'which dvdrecord'
    82 
    83 09/09
    84 - copy `locate isolinux.bin | tail -n1` to CD before calling mkisfso
    85   if file is missing (in which case, bug in Mindi.pl!)
    86 - reduced noof_threads from 3 to 2
    87 - fixed cosmetic bug in make_slices_and_images()
    88 
    89 09/02
    90 - fixed cosmetic bug in verify_data()
    91 
    92 05/01 - 08/31
    93 - added partimagehack hooks
    94 - make twice as many archives at once as before
    95 - fixed syntax error re: system(xxx,FALSE)
    96 - unmount CD-ROM before burning (necessary for RH8/9)
    97 - only ask for new media if sensible
    98 - fixed mondoarchive -Vi multi-CD verify bug (Tom Mortell)
    99 - use single-threaded make_afioballs_and_images() if FreeBSD
    100 - fixed bug on line 476 (Joshua Oreman)
    101 - re-enabled the pause, for people w/ weird CD-ROM drives
    102 - added Joshua Oreman's FreeBSD patches
    103 - don't listen to please_dont_eject_when_restoring
    104   ...after all, we're not restoring :)
    105 
    106 04/01 - 04/30
    107 - cleaned up archive_this_fileset()
    108 - decreased ARCH_THREADS from 3 to 2
    109 - pause_and_ask_for_cd() --- calls retract_CD_tray_and_defeat_autorun()
    110 - call assert() and log_OS_error() in various places
    111 - cleaned up code a bit
    112 - increased ARCH_THREADS from 2 to 3
    113 - misc clean-up (Tom Mortell)
    114 
    115 03/15/2003
    116 - fixed problem w/ multi-ISO verify cycle (Tom Mortell)
    117 
    118 11/01 - 12/31/2002
    119 - removed references to make_afioballs_and_images_OLD()
    120 - added some error-checking to make_afioballs_in_background
    121 - make_iso_and_go_on() now copies Mondo's autorun file to CD
    122 - set scratchdir dir to 1744 when burning CD
    123 - cleaned up code a bit
    124 - in call_mindi_...(), gracefully handle the user's input
    125   if they specify the boot loader but not the boot device
    126 - offer to abort if GRUB is boot loader and /dev/md* is
    127   the boot device (bug in grub-install)
    128 - if boot loader is R then write RAW as bootloader.name
    129 - multithreaded make_afioballs_and_images()
    130 - fixed slice_up_file_etc() for 0-compression users
    131 - line 1198: added call to is_this_file_compressed() to stop
    132   slice_up_file_etc() from compressing files which are
    133   already compressed
    134 - other hackery related to the above enhancement
    135 - afio no longer forcibly compresses all files (i.e. I dropped
    136   the -U following suggestions from users); let's see if
    137   it works :)
    138 
    139 10/01 - 10/31
    140 - mondoarchive (with no parameters) wasn't working
    141   if user said yes when asked if BurnProof drive; FIXED
    142 - if manual CD tray and writing to ISO's then prompt
    143   for each & every new CD
    144 - moved a lot of subroutines here
    145   from mondo-archive.c and mondo-floppies.c
    146 
    147 09/01 - 09/30
    148 - if CD not burned OK then don't try to verify
    149 - change 64k to TAPE_BLOCK_SIZE
    150 - run_program_and_log_output() now takes boolean operator to specify
    151   whether it will log its activities in the event of _success_
    152 - orig_vfy_flag_val added to write_iso_and_go_on, to restore bkpinfo->verify_data's
    153   value if altered by verify_cd_image()
    154 
    155 08/01 - 08/31
    156 - use data structure to store the fname, checksum, mods & perms of each bigfile
    157   ... biggiestruct :)
    158 - bigger tmp[]'s in a few places
    159 - cleaned up the (user-friendly) counting of biggiefiles a bit
    160 - if media_size[N]<=0 then catch it & abort, unless it's tape,
    161   in which case, allow it
    162 - cleaned up a lot of log_it() calls
    163 - fixed NULL filename-related bug in can_we_fit_these_files_on_media()
    164 - deleted can_we_fit.....() subroutine because it was causing problems
    165   --- moved its code into the one subroutine which called it
    166 - created [08/01/2002]
    1675*/
    1686
     
    352190int
    353191archive_this_fileset_with_star(struct s_bkpinfo *bkpinfo, char *filelist,
    354                            char *fname, int setno)
     192                               char *fname, int setno)
    355193{
    356194    int retval = 0;
     
    396234        asprintf(&tmp, "%s", last_line_of_file(MONDO_LOGFILE));
    397235        log_msg(1, "res=%d; tmp='%s'", res, tmp);
    398         paranoid_free(tmp);
    399236        if (bkpinfo->use_star && (res == 254 || res == 65024)
    400237            && strstr(tmp, "star: Processed all possible files")
     
    403240            res = 0;
    404241        }
     242        paranoid_free(tmp);
    405243        if (res) {
    406244            log_OS_error(command);
     
    417255        }
    418256    }
     257    paranoid_free(command);
     258
    419259    retval += res;
    420260    if (retval) {
     
    425265    }
    426266
    427     paranoid_free(command);
    428     paranoid_free(tmp);
    429267    return (retval);
    430268}
     
    475313    if (!does_file_exist(filelist)) {
    476314        asprintf(&tmp,
    477             "(archive_this_fileset) - filelist %s does not exist",
    478             filelist);
     315                "(archive_this_fileset) - filelist %s does not exist",
     316                filelist);
    479317        log_to_screen(tmp);
    480318        paranoid_free(tmp)
    481         return (1);
     319            return (1);
    482320    }
    483321    asprintf(&tmp, "echo hi > %s 2> /dev/null", fname);
     
    488326
    489327
    490     if (bkpinfo->compression_level > 0) {
     328        if (bkpinfo->compression_level > 0) {
    491329        asprintf(&tmp, "%s/do-not-compress-these", g_mondo_home);
    492330        //       -b %ld, TAPE_BLOCK_SIZE
     
    496334            asprintf(&tmp1, "%s -E %s", zipparams, tmp);
    497335            paranoid_free(zipparams)
    498             zipparams = tmp1;
     336                zipparams = tmp1;
    499337        } else {
     338            asprintf(&zipparams, "%s", "");
    500339            log_msg(3, "%s not found. Cannot exclude zipfiles, etc.", tmp);
    501340        }
     
    541380        }
    542381    }
     382    paranoid_free(command);
     383
    543384    retval += res;
    544385    if (retval) {
     
    564405        }
    565406    }
    566     paranoid_free(command);
    567407    return (retval);
    568408}
    569 
    570 
    571 
    572 
    573409
    574410
     
    617453        { fatal_error("Failed to count filelist.full"); }
    618454*/
    619     asprintf(&tmp, "gzip -9 %s/archives/filelist.full", bkpinfo->scratchdir);
     455    asprintf(&tmp, "gzip -9 %s/archives/filelist.full",
     456             bkpinfo->scratchdir);
    620457    if (run_program_and_log_output(tmp, 2)) {
    621458        fatal_error("Failed to gzip filelist.full");
     
    623460    paranoid_free(tmp);
    624461    asprintf(&tmp, "cp -f %s/archives/*list*.gz %s", bkpinfo->scratchdir,
    625             bkpinfo->tmpdir);
     462             bkpinfo->tmpdir);
    626463    if (run_program_and_log_output(tmp, 2)) {
    627464        fatal_error("Failed to copy to tmpdir");
     
    659496    return (retval);
    660497}
    661 
    662 
    663498
    664499
     
    724559
    725560    asprintf(&tmp,
    726             "echo \"%s\" | tr -s ' ' '\n' | grep -x \"/dev/.*\" | tr -s '\n' ' ' | awk '{print $0\"\\n\";}'",
    727             bkpinfo->exclude_paths);
    728     asprintf(&devs_to_exclude, call_program_and_get_last_line_of_output(tmp));
     561             "echo \"%s\" | tr -s ' ' '\n' | grep -x \"/dev/.*\" | tr -s '\n' ' ' | awk '{print $0\"\\n\";}'",
     562             bkpinfo->exclude_paths);
     563    asprintf(&devs_to_exclude,
     564             call_program_and_get_last_line_of_output(tmp));
    729565    paranoid_free(tmp);
    730566    asprintf(&tmp, "devs_to_exclude = '%s'", devs_to_exclude);
     
    732568    paranoid_free(tmp);
    733569    mvaddstr_and_log_it(g_currentY, 0,
    734                 "Calling MINDI to create boot+data disks");
     570                        "Calling MINDI to create boot+data disks");
    735571    asprintf(&tmp, "%s/filelist.full", bkpinfo->tmpdir);
    736572    if (!does_file_exist(tmp)) {
     
    777613        asprintf(&cd_recovery_sz, "no");
    778614    }
    779     /* BCO: shared between LILO/ELILO */
     615    /* Field shared between LILO/ELILO */
    780616    if (bkpinfo->make_cd_use_lilo) {
    781617        asprintf(&use_lilo_sz, "yes");
     
    790626#ifdef __FreeBSD__
    791627        asprintf(&bootdev, call_program_and_get_last_line_of_output
    792               ("mount | grep ' /boot ' | head -1 | cut -d' ' -f1 | sed 's/\\([0-9]\\).*/\\1/'"));
     628                ("mount | grep ' /boot ' | head -1 | cut -d' ' -f1 | sed 's/\\([0-9]\\).*/\\1/'"));
    793629        if (!bootdev[0]) {
    794630            paranoid_free(bootdev);
    795631            asprintf(&bootdev, call_program_and_get_last_line_of_output
    796                   ("mount | grep ' / ' | head -1 | cut -d' ' -f1 | sed 's/\\([0-9]\\).*/\\1/'"));
     632                    ("mount | grep ' / ' | head -1 | cut -d' ' -f1 | sed 's/\\([0-9]\\).*/\\1/'"));
    797633        }
    798634#else
    799635        asprintf(&bootdev, call_program_and_get_last_line_of_output
    800               ("mount | grep ' /boot ' | head -1 | cut -d' ' -f1 | sed 's/[0-9].*//'"));
     636                ("mount | grep ' /boot ' | head -1 | cut -d' ' -f1 | sed 's/[0-9].*//'"));
    801637        if (strstr(bootdev, "/dev/cciss/")) {
    802638            paranoid_free(bootdev);
    803639            asprintf(&bootdev, call_program_and_get_last_line_of_output
    804                   ("mount | grep ' /boot ' | head -1 | cut -d' ' -f1 | cut -dp -f1"));
     640                    ("mount | grep ' /boot ' | head -1 | cut -d' ' -f1 | cut -dp -f1"));
    805641        }
    806642        if (!bootdev[0]) {
    807643            paranoid_free(bootdev);
    808644            asprintf(&bootdev, call_program_and_get_last_line_of_output
    809                   ("mount | grep ' / ' | head -1 | cut -d' ' -f1 | sed 's/[0-9].*//'"));
     645                    ("mount | grep ' / ' | head -1 | cut -d' ' -f1 | sed 's/[0-9].*//'"));
    810646            if (strstr(bootdev, "/dev/cciss/")) {
    811647                paranoid_free(bootdev);
    812648                asprintf(&bootdev, call_program_and_get_last_line_of_output
    813                       ("mount | grep ' / ' | head -1 | cut -d' ' -f1 | cut -dp -f1"));
     649                        ("mount | grep ' / ' | head -1 | cut -d' ' -f1 | cut -dp -f1"));
    814650            }
    815651        }
     
    821657        if (bkpinfo->boot_loader != '\0') {
    822658            asprintf(&tmp, "User specified boot loader. It is '%c'.",
    823                     bkpinfo->boot_loader);
     659                     bkpinfo->boot_loader);
    824660            log_msg(2, tmp);
    825661            paranoid_free(tmp);
     
    829665        if (bkpinfo->boot_device[0] != '\0') {
    830666            asprintf(&tmp, "User specified boot device. It is '%s'.",
    831                     bkpinfo->boot_device);
     667                     bkpinfo->boot_device);
    832668            log_msg(2, tmp);
    833669            paranoid_free(tmp);
     
    849685    {
    850686        fatal_error
    851             ("Please specify your boot loader and device, e.g. -l GRUB -f /dev/hda. Type 'man mondoarchive' to read the manual.");
     687            ("Please specify your boot loader and device, e.g. -l GRUB -f /dev/hda.\nType 'man mondoarchive' to read the manual.");
    852688    }
    853689    if (bkpinfo->boot_loader == 'L') {
     
    855691        if (!does_file_exist("/etc/lilo.conf")) {
    856692            fatal_error
    857                 ("The de facto standard location for your boot loader's config file is /etc/lilo.conf but I cannot find it there. What is wrong with your Linux distribution?");
     693                ("The de facto standard location for your boot loader's config file is /etc/lilo.conf.\nBut I cannot find it there. What is wrong with your Linux distribution?");
    858694        }
    859695    } else if (bkpinfo->boot_loader == 'G') {
     
    872708        if (!does_file_exist("/etc/grub.conf")) {
    873709            fatal_error
    874                 ("The de facto standard location for your boot loader's config file is /etc/grub.conf but I cannot find it there. What is wrong with your Linux distribution? Try 'ln -s /boot/grub/menu.lst /etc/grub.conf'...");
     710                ("The de facto standard location for your boot loader's config file is /etc/grub.conf.\nBut I cannot find it there. What is wrong with your Linux distribution?\nTry 'ln -s /boot/grub/menu.lst /etc/grub.conf'...");
    875711        }
    876712    } else if (bkpinfo->boot_loader == 'E') {
    877713        asprintf(&bootldr_str, "ELILO");
    878         /* BCO: fix it for SuSE, Debian, Mandrake, ... */
     714        /* BERLIOS: fix it for SuSE, Debian, Mandrake, ... */
    879715        if (!does_file_exist("/etc/elilo.conf")
    880716            && does_file_exist("/boot/efi/efi/redhat/elilo.conf")) {
     
    885721        if (!does_file_exist("/etc/elilo.conf")) {
    886722            fatal_error
    887                 ("The de facto mondo standard location for your boot loader's config file is /etc/elilo.conf but I cannot find it there. What is wrong with your Linux distribution? Try finding it under /boot/efi and do 'ln -s /boot/efi/..../elilo.conf /etc/elilo.conf'");
     723                ("The de facto mondo standard location for your boot loader's config file is /etc/elilo.conf\nBut I cannot find it there. What is wrong with your Linux distribution?\nTry finding it under /boot/efi and do 'ln -s /boot/efi/..../elilo.conf /etc/elilo.conf'");
    888724        }
    889725    } else if (bkpinfo->boot_loader == 'R') {
     
    903739    }
    904740    asprintf(&tmp, "Your boot loader is %s and it boots from %s",
    905             bootldr_str, bkpinfo->boot_device);
     741             bootldr_str, bkpinfo->boot_device);
    906742    log_to_screen(tmp);
    907743    paranoid_free(tmp);
     
    982818
    983819    asprintf(&tmp, "BTW, I'm telling Mindi your kernel is '%s'",
    984             bkpinfo->kernel_path);
     820             bkpinfo->kernel_path);
    985821    log_to_screen(tmp);
    986822    paranoid_free(tmp);
    987823
    988824    log_msg(1, "lines_in_filelist = %ld", lines_in_filelist);
    989    
     825
    990826    // Watch it! This next line adds a parameter...
    991827    if (bkpinfo->nonbootable_backup) {
     
    9998356=\"%s\" 7=%ld 8=\"%s\" 9=\"%s\" 10=\"%s\" \
    100083611=\"%s\" 12=%s 13=%ld 14=\"%s\" 15=\"%s\" 16=\"%s\" 17=\"%s\" 18=%ld 19=%d",*/
    1001             "mindi --custom %s %s/images \"%s\" \"%s\" \
     837             "mindi --custom %s %s/images \"%s\" \"%s\" \
    1002838\"%s\" %ld \"%s\" \"%s\" \"%s\" \
    1003 \"%s\" %s %ld \"%s\" \"%s\" \"%s\" \"%s\" %ld %d %s",
    1004             bkpinfo->tmpdir,    // parameter #2
    1005             bkpinfo->scratchdir,    // parameter #3
    1006             bkpinfo->kernel_path,   // parameter #4
    1007             tape_device,        // parameter #5
    1008             tape_size_sz,       // parameter #6
    1009             lines_in_filelist,  // parameter #7 (INT)
    1010             use_lzo_sz,         // parameter #8
    1011             cd_recovery_sz,     // parameter #9
    1012             bkpinfo->image_devs,    // parameter #10
    1013             broken_bios_sz,     // parameter #11
    1014             last_filelist_number,   // parameter #12 (STRING)
    1015             estimated_total_noof_slices,    // parameter #13 (INT)
    1016             devs_to_exclude,    // parameter #14
    1017             use_comp_sz,        // parameter #15
    1018             use_lilo_sz,        // parameter #16
    1019             use_star_sz,        // parameter #17
    1020             bkpinfo->internal_tape_block_size,  // parameter #18 (LONG)
    1021             bkpinfo->differential,  // parameter #19 (INT)
    1022             tmp);   
     839\"%s\" %s %ld \"%s\" \"%s\" \"%s\" \"%s\" %ld %d %s", bkpinfo->tmpdir,  // parameter #2
     840             bkpinfo->scratchdir,   // parameter #3
     841             bkpinfo->kernel_path,  // parameter #4
     842             tape_device,       // parameter #5
     843             tape_size_sz,      // parameter #6
     844             lines_in_filelist, // parameter #7 (INT)
     845             use_lzo_sz,        // parameter #8
     846             cd_recovery_sz,    // parameter #9
     847             bkpinfo->image_devs,   // parameter #10
     848             broken_bios_sz,    // parameter #11
     849             last_filelist_number,  // parameter #12 (STRING)
     850             estimated_total_noof_slices,   // parameter #13 (INT)
     851             devs_to_exclude,   // parameter #14
     852             use_comp_sz,       // parameter #15
     853             use_lilo_sz,       // parameter #16
     854             use_star_sz,       // parameter #17
     855             bkpinfo->internal_tape_block_size, // parameter #18 (LONG)
     856             bkpinfo->differential, // parameter #19 (INT)
     857             tmp);
    1023858    paranoid_free(tmp);
    1024859    paranoid_free(tape_size_sz);
     
    1038873
    1039874    res = run_program_and_log_to_screen(command,
    1040                       "Generating boot+data disks");
     875                                        "Generating boot+data disks");
    1041876    paranoid_free(command);
    1042877
     
    1052887
    1053888        asprintf(&command,
    1054             "cp -f %s/images/mindi.iso /root/images/mindi/mondorescue.iso",
    1055                 bkpinfo->scratchdir);
     889                 "cp -f %s/images/mindi.iso /root/images/mindi/mondorescue.iso",
     890                 bkpinfo->scratchdir);
    1056891        log_msg(2, command);
    1057892        run_program_and_log_output(command, FALSE);
     
    1060895        if (bkpinfo->nonbootable_backup) {
    1061896            asprintf(&command, "cp -f %s/all.tar.gz %s/images",
    1062                     bkpinfo->tmpdir, bkpinfo->scratchdir);
     897                     bkpinfo->tmpdir, bkpinfo->scratchdir);
    1063898            if (system(command)) {
    1064899                fatal_error("Unable to create temporary duff tarball");
    1065             paranoid_free(command);
     900                paranoid_free(command);
    1066901            }
    1067902        }
    1068903        asprintf(&command, "cp -f %s/mindi-*oot*.img %s/images",
    1069                 bkpinfo->tmpdir, bkpinfo->scratchdir);
     904                 bkpinfo->tmpdir, bkpinfo->scratchdir);
    1070905        log_msg(2, command);
    1071906        run_program_and_log_output(command, FALSE);
    1072907        paranoid_free(command);
    1073908
    1074         asprintf(&tmp, "cp -f %s/images/all.tar.gz %s", 
    1075                 bkpinfo->scratchdir, bkpinfo->tmpdir);
     909        asprintf(&tmp, "cp -f %s/images/all.tar.gz %s",
     910                 bkpinfo->scratchdir, bkpinfo->tmpdir);
    1076911        if (system(tmp)) {
    1077912            fatal_error("Cannot find all.tar.gz in tmpdir");
     
    1087922        log_to_screen("Mindi failed to create your boot+data disks.");
    1088923        asprintf(&command, "cat %s | grep \"Fatal error\"",
    1089                 "/var/log/mindi.log");
     924                 "/var/log/mindi.log");
    1090925        asprintf(&tmp, call_program_and_get_last_line_of_output(command));
    1091926        paranoid_free(command);
     
    1097932    return (res);
    1098933}
    1099 
    1100934
    1101935
     
    1160994
    1161995    asprintf(&archiving_filelist_fname, FILELIST_FNAME_RAW_SZ,
    1162             bkpinfo->tmpdir, 0L);
     996             bkpinfo->tmpdir, 0L);
    1163997    archiving_set_no = 0;
    1164998    while (does_file_exist(archiving_filelist_fname)) {
     
    11851019        /* backup this set of files */
    11861020        asprintf(&archiving_afioball_fname, AFIOBALL_FNAME_RAW_SZ,
    1187                 bkpinfo->tmpdir, archiving_set_no, bkpinfo->zip_suffix);
     1021                 bkpinfo->tmpdir, archiving_set_no, bkpinfo->zip_suffix);
    11881022        asprintf(&archiving_filelist_fname, FILELIST_FNAME_RAW_SZ,
    1189                 bkpinfo->tmpdir, archiving_set_no);
     1023                 bkpinfo->tmpdir, archiving_set_no);
    11901024        if (!does_file_exist(archiving_filelist_fname)) {
    11911025            log_msg(3,
    1192                 "%s[%d:%d] - well, I would archive %d, except that it doesn't exist. I'll stop now.",
    1193                 FORTY_SPACES, getpid(), this_thread_no,
    1194                 archiving_set_no);
     1026                    "%s[%d:%d] - well, I would archive %d, except that it doesn't exist. I'll stop now.",
     1027                    FORTY_SPACES, getpid(), this_thread_no,
     1028                    archiving_set_no);
    11951029            paranoid_free(archiving_filelist_fname);
    11961030            paranoid_free(archiving_afioball_fname);
     
    11991033
    12001034        asprintf(&tmp, AFIOBALL_FNAME_RAW_SZ, bkpinfo->tmpdir,
    1201                 archiving_set_no - ARCH_BUFFER_NUM, bkpinfo->zip_suffix);
     1035                 archiving_set_no - ARCH_BUFFER_NUM, bkpinfo->zip_suffix);
    12021036        if (does_file_exist(tmp)) {
    1203             log_msg(4, "%s[%d:%d] - waiting for storer", 
     1037            log_msg(4, "%s[%d:%d] - waiting for storer",
    12041038                    FORTY_SPACES, getpid(), this_thread_no);
    12051039            while (does_file_exist(tmp)) {
     
    12131047                this_thread_no, archiving_set_no);
    12141048        asprintf(&curr_xattr_list_fname, XATTR_LIST_FNAME_RAW_SZ,
    1215                 bkpinfo->tmpdir, archiving_set_no);
     1049                 bkpinfo->tmpdir, archiving_set_no);
    12161050        asprintf(&curr_acl_list_fname, ACL_LIST_FNAME_RAW_SZ,
    1217                 bkpinfo->tmpdir, archiving_set_no);
     1051                 bkpinfo->tmpdir, archiving_set_no);
    12181052        get_fattr_list(archiving_filelist_fname, curr_xattr_list_fname);
    12191053        paranoid_free(curr_xattr_list_fname);
     
    12241058                this_thread_no, archiving_set_no);
    12251059        res = archive_this_fileset(bkpinfo, archiving_filelist_fname,
    1226                         archiving_afioball_fname,
    1227                         archiving_set_no);
     1060                                  archiving_afioball_fname,
     1061                                  archiving_set_no);
    12281062        paranoid_free(archiving_afioball_fname);
    12291063        paranoid_free(archiving_filelist_fname);
     
    12321066        if (res) {
    12331067            asprintf(&tmp,
    1234                     "Errors occurred while archiving set %ld. Please review logs.",
    1235                     archiving_set_no);
     1068                     "Errors occurred while archiving set %ld. Please review logs.",
     1069                     archiving_set_no);
    12361070            log_to_screen(tmp);
    12371071            paranoid_free(tmp);
     
    12681102    pthread_exit(NULL);
    12691103}
    1270 
    1271 
    1272 
    12731104
    12741105
     
    12961127
    12971128    log_msg(1, "Closing tape/CD ... ");
    1298     if (IS_THIS_A_STREAMING_BACKUP(bkpinfo->backup_media_type))
     1129    if (IS_THIS_A_STREAMING_BACKUP(bkpinfo->backup_media_type)) {
    12991130        /* write tape/cdstream */
    1300     {
    13011131        closeout_tape(bkpinfo);
    1302     } else
     1132    } else {
    13031133        /* write final ISO */
    1304     {
    13051134        res = write_final_iso_if_necessary(bkpinfo);
    13061135        retval += res;
     
    13591188hexdump | tr -s ' ' '0' | head -n1"));
    13601189    strip_spaces(g_serial_string);
    1361     asprintf(&tmp, "%s...word.",g_serial_string);
     1190    asprintf(&tmp, "%s...word.", g_serial_string);
    13621191    paranoid_free(g_serial_string);
    13631192    g_serial_string = tmp;
     
    13891218
    13901219    asprintf(&command, "rm -f %s/%s-[1-9]*.iso", bkpinfo->prefix,
    1391             bkpinfo->isodir);
     1220             bkpinfo->isodir);
    13921221    paranoid_system(command);
    13931222    paranoid_free(command);
     
    13961225    if (IS_THIS_A_STREAMING_BACKUP(bkpinfo->backup_media_type)) {
    13971226        write_header_block_to_stream(0, "start-of-tape",
    1398                         BLK_START_OF_TAPE);
     1227                                    BLK_START_OF_TAPE);
    13991228        write_header_block_to_stream(0, "start-of-backup",
    1400                         BLK_START_OF_BACKUP);
     1229                                    BLK_START_OF_BACKUP);
    14011230    }
    14021231    return (retval);
     
    14341263    assert_string_is_neither_NULL_nor_zerolength(title);
    14351264
    1436     malloc_string(command);
    14371265#ifdef __FreeBSD__
    14381266/* Ugh. FreeBSD fdformat prints out this pretty progress indicator that's
     
    14501278    }
    14511279/* if not Debian then go ahead & use fdformat */
    1452     asprintf(&tempfile,"%s",
    1453           call_program_and_get_last_line_of_output
    1454           ("mktemp -q /tmp/mondo.XXXXXXXX"));
    1455     asprintf(&command, "%s >> %s 2>> %s; rm -f %s", cmd, tempfile, tempfile,
    1456             tempfile);
     1280    asprintf(&tempfile, "%s",
     1281            call_program_and_get_last_line_of_output
     1282            ("mktemp -q /tmp/mondo.XXXXXXXX"));
     1283    asprintf(&command, "%s >> %s 2>> %s; rm -f %s", cmd, tempfile,
     1284             tempfile, tempfile);
    14571285    log_msg(3, command);
    14581286    open_evalcall_form(title);
     
    14661294        maxtracks = 80;
    14671295    }
     1296    paranoid_free(command);
     1297
    14681298    for (sleep(1); does_file_exist(tempfile); sleep(1)) {
    14691299        trackno = get_trackno_from_logfile(tempfile);
     
    14871317    }
    14881318    unlink(tempfile);
    1489     paranoid_free(command);
    14901319    paranoid_free(tempfile);
    14911320    return (res);
    14921321}
     1322
    14931323
    14941324/**
     
    15341364    return (res);
    15351365}
     1366
    15361367
    15371368/**
     
    16321463    log_msg(5, "Go, Shorty. It's your birthday.");
    16331464    open_progress_form("Backing up filesystem",
    1634                "I am backing up your live filesystem now.",
    1635                "Please wait. This may take a couple of hours.",
    1636                "Working...",
    1637                get_last_filelist_number(bkpinfo) + 1);
     1465                       "I am backing up your live filesystem now.",
     1466                       "Please wait. This may take a couple of hours.",
     1467                       "Working...",
     1468                       get_last_filelist_number(bkpinfo) + 1);
    16381469
    16391470    log_msg(5, "We're gonna party like it's your birthday.");
     
    16541485        if ((res =
    16551486             pthread_create(&archival_thread[noof_threads], NULL,
    1656                     create_afio_files_in_background,
    1657                     (void *) transfer_block))) {
     1487                            create_afio_files_in_background,
     1488                            (void *) transfer_block))) {
    16581489            fatal_error("Unable to create an archival thread");
    16591490        }
    16601491    }
     1492    paranoid_free(transfer_block);
    16611493
    16621494    log_msg(8, "About to enter while() loop");
     
    16681500            && *p_last_set_archived == storing_set_no - 1) {
    16691501            log_msg(2,
    1670                 "No archival threads are running. The last stored set was %d and I'm looking for %d. Take off your make-up; the party's over... :-)",
    1671                 *p_last_set_archived, storing_set_no);
     1502                    "No archival threads are running. The last stored set was %d and I'm looking for %d. Take off your make-up; the party's over... :-)",
     1503                    *p_last_set_archived, storing_set_no);
    16721504            done_storing = TRUE;
    1673         } else if (!get_bit_N_of_array(p_list_of_fileset_flags, storing_set_no)) {
     1505        } else
     1506            if (!get_bit_N_of_array
     1507                (p_list_of_fileset_flags, storing_set_no)) {
    16741508            misc_counter_that_is_not_important =
    16751509                (misc_counter_that_is_not_important + 1) % 5;
     
    16771511            /* maybe : */
    16781512            asprintf(&media_usage_comment, "%s",
    1679                   percent_media_full_comment(bkpinfo));
     1513                    percent_media_full_comment(bkpinfo));
    16801514            if (!misc_counter_that_is_not_important) {
    16811515                update_progress_form(media_usage_comment);
     
    16861520            // store set N
    16871521            asprintf(&storing_filelist_fname, FILELIST_FNAME_RAW_SZ,
    1688                     bkpinfo->tmpdir, storing_set_no);
     1522                     bkpinfo->tmpdir, storing_set_no);
    16891523            asprintf(&storing_afioball_fname, AFIOBALL_FNAME_RAW_SZ,
    1690                     bkpinfo->tmpdir, storing_set_no, bkpinfo->zip_suffix);
     1524                     bkpinfo->tmpdir, storing_set_no, bkpinfo->zip_suffix);
    16911525            asprintf(&curr_xattr_list_fname, XATTR_LIST_FNAME_RAW_SZ,
    1692                     bkpinfo->tmpdir, storing_set_no);
     1526                     bkpinfo->tmpdir, storing_set_no);
    16931527            asprintf(&curr_acl_list_fname, ACL_LIST_FNAME_RAW_SZ,
    1694                     bkpinfo->tmpdir, storing_set_no);
     1528                     bkpinfo->tmpdir, storing_set_no);
    16951529
    16961530            log_msg(2, "Storing set %d", storing_set_no);
     
    17031537            }
    17041538            asprintf(&media_usage_comment, "%s",
    1705                   percent_media_full_comment(bkpinfo));
     1539                    percent_media_full_comment(bkpinfo));
    17061540            /* copy to CD (scratchdir) ... and an actual CD-R if necessary */
    17071541            if (IS_THIS_A_STREAMING_BACKUP(bkpinfo->backup_media_type)) {
    17081542                register_in_tape_catalog(fileset, storing_set_no, -1,
    1709                             storing_afioball_fname);
     1543                                        storing_afioball_fname);
    17101544                maintain_collection_of_recent_archives(bkpinfo->tmpdir,
    1711                                        storing_afioball_fname);
     1545                                                       storing_afioball_fname);
    17121546                iamhere("Writing EXAT files");
    1713                 res +=
    1714                     write_EXAT_files_to_tape(bkpinfo,
    1715                                  curr_xattr_list_fname,
    1716                                  curr_acl_list_fname);
     1547                res += write_EXAT_files_to_tape(bkpinfo,
     1548                                                curr_xattr_list_fname,
     1549                                                curr_acl_list_fname);
    17171550                // archives themselves
    17181551                res +=
    17191552                    move_files_to_stream(bkpinfo, storing_afioball_fname,
    1720                                 NULL);
     1553                                        NULL);
    17211554            } else {
    1722                 res =
    1723                     move_files_to_cd(bkpinfo, storing_filelist_fname,
    1724                              curr_xattr_list_fname,
    1725                              curr_acl_list_fname,
    1726                              storing_afioball_fname, NULL);
     1555                res = move_files_to_cd(bkpinfo, storing_filelist_fname,
     1556                                       curr_xattr_list_fname,
     1557                                       curr_acl_list_fname,
     1558                                       storing_afioball_fname, NULL);
    17271559            }
    17281560            paranoid_free(storing_filelist_fname);
     
    17371569            if (res) {
    17381570                asprintf(&tmp,
    1739                         "Failed to add archive %ld's files to CD dir\n",
    1740                         storing_set_no);
     1571                         "Failed to add archive %ld's files to CD dir\n",
     1572                         storing_set_no);
    17411573                log_to_screen(tmp);
    17421574                paranoid_free(tmp);
    1743                 fatal_error("Is your hard disk full? If not, please send the author the logfile.");
     1575                fatal_error
     1576                    ("Is your hard disk full? If not, please send the author the logfile.");
    17441577            }
    17451578            storing_set_no++;
     
    17571590    log_msg(2, "Done.");
    17581591    if (retval) {
    1759         asprintf(&tmp, "Your regular files have been archived (with errors).");
     1592        asprintf(&tmp,
     1593                 "Your regular files have been archived (with errors).");
    17601594    } else {
    1761         asprintf(&tmp, "Your regular files have been archived successfully");
     1595        asprintf(&tmp,
     1596                 "Your regular files have been archived successfully");
    17621597    }
    17631598    log_to_screen(tmp);
    17641599    paranoid_free(tmp);
    1765     paranoid_free(transfer_block);
    17661600    paranoid_free(result_str);
    17671601    return (retval);
     
    17791613    close_evalcall_form();
    17801614}
    1781 
    1782 
    17831615
    17841616
     
    18511683    if (bkpinfo->call_before_iso[0] != '\0') {
    18521684        asprintf(&message_to_screen, "Running pre-ISO call for CD#%d",
    1853                 g_current_media_number);
     1685                 g_current_media_number);
    18541686        res = eval_call_to_make_ISO(bkpinfo, bkpinfo->call_before_iso,
    1855                           destfile, g_current_media_number,
    1856                           MONDO_LOGFILE, message_to_screen);
     1687                                    destfile, g_current_media_number,
     1688                                    MONDO_LOGFILE, message_to_screen);
    18571689        if (res) {
    18581690            log_to_screen("%s...failed", message_to_screen);
     
    18681700        asprintf(&tmp, "%s/archives/NOT-THE-LAST", bkpinfo->scratchdir);
    18691701        asprintf(&message_to_screen, "Making an ISO (%s #%d)",
    1870                 media_descriptor_string(bkpinfo->backup_media_type),
    1871                 g_current_media_number);
     1702                 media_descriptor_string(bkpinfo->backup_media_type),
     1703                 g_current_media_number);
    18721704
    18731705        /* if g_current_media_number >= 2 then pause & ask */
    1874         pause_and_ask_for_cdr(2, &cd_is_mountable); 
     1706        pause_and_ask_for_cdr(2, &cd_is_mountable);
    18751707        if (retval) {
    18761708            log_to_screen
    18771709                ("Serious error(s) occurred already. I shan't try to write to media.");
    18781710        } else {
    1879             res =
    1880                 eval_call_to_make_ISO(bkpinfo, bkpinfo->call_make_iso,
    1881                               bkpinfo->scratchdir,
    1882                               g_current_media_number,
    1883                               MONDO_LOGFILE, message_to_screen);
     1711            res = eval_call_to_make_ISO(bkpinfo, bkpinfo->call_make_iso,
     1712                                        bkpinfo->scratchdir,
     1713                                        g_current_media_number,
     1714                                        MONDO_LOGFILE, message_to_screen);
    18841715            if (res) {
    18851716                log_to_screen("%s...failed to write", message_to_screen);
     
    18961727#ifdef DVDRWFORMAT
    18971728            asprintf(&tmp,
    1898                     "cat %s | tail -n8 | grep \"blank=full.*dvd-compat.*DAO\"",
    1899                     MONDO_LOGFILE);
     1729                     "cat %s | tail -n8 | grep \"blank=full.*dvd-compat.*DAO\"",
     1730                     MONDO_LOGFILE);
    19001731            if (g_backup_media_type == dvd
    19011732                && (res || !run_program_and_log_output(tmp, 1))) {
     
    19131744                }
    19141745                pause_for_N_seconds(5, "Letting DVD drive settle");
    1915                 asprintf(&sz_blank_disk, "dvd+rw-format %s", bkpinfo->media_device);
     1746                asprintf(&sz_blank_disk, "dvd+rw-format %s",
     1747                         bkpinfo->media_device);
    19161748                log_msg(3, "sz_blank_disk = '%s'", sz_blank_disk);
    1917                 res =
    1918                     run_external_binary_with_percentage_indicator_NEW
     1749                res = run_external_binary_with_percentage_indicator_NEW
    19191750                    ("Blanking DVD disk", sz_blank_disk);
    19201751                if (res) {
     
    19231754                    pause_for_N_seconds(5,
    19241755                                        "Letting DVD drive settle... and trying again.");
    1925                     res =
    1926                         run_external_binary_with_percentage_indicator_NEW
     1756                    res = run_external_binary_with_percentage_indicator_NEW
    19271757                        ("Blanking DVD disk", sz_blank_disk);
    19281758                    if (res) {
     
    19681798    } else {
    19691799        asprintf(&message_to_screen, "Running mkisofs to make %s #%d",
    1970                 media_descriptor_string(bkpinfo->backup_media_type),
    1971                 g_current_media_number);
     1800                 media_descriptor_string(bkpinfo->backup_media_type),
     1801                 g_current_media_number);
    19721802        log_msg(1, message_to_screen);
    19731803        asprintf(&result_sz, "Call to mkisofs to make ISO (%s #%d) ",
    1974                 media_descriptor_string(bkpinfo->backup_media_type),
    1975                 g_current_media_number);
     1804                 media_descriptor_string(bkpinfo->backup_media_type),
     1805                 g_current_media_number);
    19761806        if (bkpinfo->nonbootable_backup) {
    19771807            log_msg(1, "Making nonbootable backup");
    19781808// FIXME --- change mkisofs string to MONDO_MKISOFS_NONBOOTABLE and add ' .' at end
    1979             res =
    1980                 eval_call_to_make_ISO(bkpinfo,
    1981                                       "mkisofs -o _ISO_ -r -p MondoRescue -publisher www.mondorescue.org -A Mondo_Rescue_GPL -V _CD#_ .",
    1982                                       destfile, g_current_media_number,
    1983                                       MONDO_LOGFILE, message_to_screen);
     1809            res = eval_call_to_make_ISO(bkpinfo,
     1810                                        "mkisofs -o _ISO_ -r -p MondoRescue -publisher www.mondorescue.org -A Mondo_Rescue_GPL -V _CD#_ .",
     1811                                        destfile, g_current_media_number,
     1812                                        MONDO_LOGFILE, message_to_screen);
    19841813        } else {
    19851814            log_msg(1, "Making bootable backup");
     
    20101839// and add ' .' at end
    20111840                log_msg(1, "Non-ia64 --> lilo");
    2012                 res =
    2013                     eval_call_to_make_ISO(bkpinfo,
    2014                                           "mkisofs -b images/mindi-bootroot.2880.img -c boot.cat -o _ISO_ -J -r -p MondoRescue -publisher www.mondorescue.org -A Mondo_Rescue_GPL -V _CD#_ .",
    2015                                           destfile, g_current_media_number,
    2016                                           MONDO_LOGFILE,
    2017                                           message_to_screen);
     1841                res = eval_call_to_make_ISO(bkpinfo,
     1842                                            "mkisofs -b images/mindi-bootroot.2880.img -c boot.cat -o _ISO_ -J -r -p MondoRescue -publisher www.mondorescue.org -A Mondo_Rescue_GPL -V _CD#_ .",
     1843                                            destfile,
     1844                                            g_current_media_number,
     1845                                            MONDO_LOGFILE,
     1846                                            message_to_screen);
    20181847#endif
    20191848            } else {
     
    20211850                log_msg(1, "Isolinux");
    20221851                res = eval_call_to_make_ISO(bkpinfo,
    2023                                           "mkisofs -no-emul-boot -b isolinux.bin -boot-load-size 4 -boot-info-table -c boot.cat -o _ISO_ -J -r -p MondoRescue -publisher www.mondorescue.org -A Mondo_Rescue_GPL -V _CD#_ .",
    2024                                           destfile, g_current_media_number,
    2025                                           MONDO_LOGFILE,
    2026                                           message_to_screen);
     1852                                            "mkisofs -no-emul-boot -b isolinux.bin -boot-load-size 4 -boot-info-table -c boot.cat -o _ISO_ -J -r -p MondoRescue -publisher www.mondorescue.org -A Mondo_Rescue_GPL -V _CD#_ .",
     1853                                            destfile,
     1854                                            g_current_media_number,
     1855                                            MONDO_LOGFILE,
     1856                                            message_to_screen);
    20271857            }
    20281858        }
     
    20521882        log_msg(2, "bkpinfo->call_burn_iso = %s", bkpinfo->call_burn_iso);
    20531883        asprintf(&message_to_screen, "Burning %s #%d",
    2054                 media_descriptor_string(bkpinfo->backup_media_type),
    2055                 g_current_media_number);
     1884                 media_descriptor_string(bkpinfo->backup_media_type),
     1885                 g_current_media_number);
    20561886        pause_and_ask_for_cdr(2, &cd_is_mountable);
    20571887        res = eval_call_to_make_ISO(bkpinfo, bkpinfo->call_burn_iso,
    2058                                   destfile, g_current_media_number,
    2059                                   MONDO_LOGFILE, message_to_screen);
     1888                                    destfile, g_current_media_number,
     1889                                    MONDO_LOGFILE, message_to_screen);
    20601890        if (res) {
    20611891            log_to_screen("%s...failed", message_to_screen);
     
    20691899    if (bkpinfo->call_after_iso[0] != '\0') {
    20701900        asprintf(&message_to_screen, "Running post-ISO call (%s #%d)",
    2071                 media_descriptor_string(bkpinfo->backup_media_type),
    2072                 g_current_media_number);
     1901                 media_descriptor_string(bkpinfo->backup_media_type),
     1902                 g_current_media_number);
    20731903        res = eval_call_to_make_ISO(bkpinfo, bkpinfo->call_after_iso,
    2074                                   destfile, g_current_media_number,
    2075                                   MONDO_LOGFILE, message_to_screen);
     1904                                    destfile, g_current_media_number,
     1905                                    MONDO_LOGFILE, message_to_screen);
    20761906        if (res) {
    20771907            log_to_screen("%s...failed", message_to_screen);
     
    20971927    char *command;
    20981928    asprintf(&command,
    2099             "dd if=%s bs=512 count=1 2> /dev/null | strings | head -n1",
    2100             bigfile_fname);
     1929             "dd if=%s bs=512 count=1 2> /dev/null | strings | head -n1",
     1930             bigfile_fname);
    21011931    log_msg(1, "command = '%s'", command);
    2102     asprintf(&tmp, "%s", call_program_and_get_last_line_of_output(command));
     1932    asprintf(&tmp, "%s",
     1933             call_program_and_get_last_line_of_output(command));
    21031934    log_msg(1, "--> tmp = '%s'", tmp);
    21041935    paranoid_free(command);
     
    21391970    /*@ buffers ******************************************** */
    21401971    char *tmp;
    2141     char *bigfile_fname;
     1972    char *bigfile_fname = NULL;
    21421973    char *sz_devfile;
    21431974    char *partimagehack_fifo = NULL;
     
    21501981    int retval = 0;
    21511982    int res = 0;
     1983    int n = 0;
    21521984    pid_t pid;
    21531985    FILE *ftmp = NULL;
     
    21601992    assert_string_is_neither_NULL_nor_zerolength(biggielist_fname);
    21611993
    2162     malloc_string(bigfile_fname);
    21631994    estimated_total_noof_slices =
    21641995        size_of_all_biggiefiles_K(bkpinfo) / bkpinfo->optimal_set_size + 1;
     
    21842015        return (1);
    21852016    }
    2186     for (fgets(bigfile_fname, MAX_STR_LEN, fin); !feof(fin);
    2187          fgets(bigfile_fname, MAX_STR_LEN, fin), biggie_file_number++) {
     2017    for (getline(&bigfile_fname, (size_t) & n, fin); !feof(fin);
     2018         getline(&bigfile_fname, (size_t) & n, fin),
     2019         biggie_file_number++) {
    21882020        use_partimagehack = FALSE;
    21892021        if (bigfile_fname[strlen(bigfile_fname) - 1] < 32) {
     
    21972029            paranoid_fclose(ftmp);
    21982030            asprintf(&tmp, "bigfile %s was deleted - creating a dummy",
    2199                     bigfile_fname);
     2031                     bigfile_fname);
    22002032            delete_when_done = TRUE;
    22012033        } else {
     
    22102042                        bigfile_fname);
    22112043                asprintf(&sz_devfile, "/tmp/%d.%d.000",
    2212                         (int) (random() % 32768),
    2213                         (int) (random() % 32768));
     2044                         (int) (random() % 32768),
     2045                         (int) (random() % 32768));
    22142046                mkfifo(sz_devfile, 0x770);
    22152047                partimagehack_fifo = sz_devfile;
     
    22292061                            (long int) (pid));
    22302062
    2231                 paranoid_free(sz_devfile);
     2063                    paranoid_free(sz_devfile);
    22322064                }
    22332065            }
     
    22482080            }
    22492081            res = slice_up_file_etc(bkpinfo, bigfile_fname,
    2250                                   partimagehack_fifo, biggie_file_number,
    2251                                   noof_biggie_files, use_partimagehack);
     2082                                    partimagehack_fifo, biggie_file_number,
     2083                                    noof_biggie_files, use_partimagehack);
    22522084            if (IS_THIS_A_STREAMING_BACKUP(bkpinfo->backup_media_type)) {
    22532085                write_header_block_to_stream(0,
     
    22832115    }
    22842116    paranoid_free(tmp);
     2117    paranoid_free(bigfile_fname);
     2118    paranoid_fclose(fin);
     2119
    22852120    log_msg(1, "Finished backing up bigfiles");
    22862121    log_msg(1, "estimated slices = %ld; actual slices = %ld",
    22872122            estimated_total_noof_slices, g_current_progress);
    22882123    close_progress_form();
    2289     paranoid_fclose(fin);
    2290     paranoid_free(bigfile_fname);
    22912124    return (retval);
    22922125}
    2293 
    2294 
    22952126
    22962127
     
    23162147
    23172148    /* BERLIOS: Useless ?
    2318     asprintf(&tmp, "%s/archives/filelist.full", bkpinfo->scratchdir);
    2319     */
     2149       asprintf(&tmp, "%s/archives/filelist.full", bkpinfo->scratchdir);
     2150     */
    23202151
    23212152    log_to_screen("Archiving regular files");
     
    23282159
    23292160    asprintf(&curr_filelist_fname, FILELIST_FNAME_RAW_SZ, bkpinfo->tmpdir,
    2330             0L);
     2161             0L);
    23312162
    23322163    curr_set_no = 0;
     
    23342165        /* backup this set of files */
    23352166        asprintf(&curr_afioball_fname, AFIOBALL_FNAME_RAW_SZ,
    2336                 bkpinfo->tmpdir, curr_set_no, bkpinfo->zip_suffix);
     2167                 bkpinfo->tmpdir, curr_set_no, bkpinfo->zip_suffix);
    23372168
    23382169        log_msg(1, "EXAT'g set %ld", curr_set_no);
    23392170        asprintf(&curr_xattr_list_fname, XATTR_LIST_FNAME_RAW_SZ,
    2340                 bkpinfo->tmpdir, curr_set_no);
     2171                 bkpinfo->tmpdir, curr_set_no);
    23412172        asprintf(&curr_acl_list_fname, ACL_LIST_FNAME_RAW_SZ,
    2342                 bkpinfo->tmpdir, curr_set_no);
     2173                 bkpinfo->tmpdir, curr_set_no);
    23432174        get_fattr_list(curr_filelist_fname, curr_xattr_list_fname);
    23442175        get_acl_list(curr_filelist_fname, curr_acl_list_fname);
     
    23462177        log_msg(1, "Archiving set %ld", curr_set_no);
    23472178        res = archive_this_fileset(bkpinfo, curr_filelist_fname,
    2348                                  curr_afioball_fname, curr_set_no);
     2179                                   curr_afioball_fname, curr_set_no);
    23492180        retval += res;
    23502181        if (res) {
    23512182            asprintf(&tmp,
    2352                     "Errors occurred while archiving set %ld. Perhaps your live filesystem changed?",
    2353                     curr_set_no);
     2183                     "Errors occurred while archiving set %ld. Perhaps your live filesystem changed?",
     2184                     curr_set_no);
    23542185            log_to_screen(tmp);
    23552186            paranoid_free(tmp);
    23562187        }
    23572188
    2358         asprintf(&media_usage_comment, "%s", percent_media_full_comment(bkpinfo));
     2189        asprintf(&media_usage_comment, "%s",
     2190                 percent_media_full_comment(bkpinfo));
    23592191
    23602192        /* copy to CD (scratchdir) ... and an actual CD-R if necessary */
     
    23662198            iamhere("Writing EXAT files");
    23672199            res += write_EXAT_files_to_tape(bkpinfo, curr_xattr_list_fname,
    2368                                          curr_acl_list_fname);
     2200                                            curr_acl_list_fname);
    23692201            // archives themselves
    23702202            res = move_files_to_stream(bkpinfo, curr_afioball_fname, NULL);
    23712203        } else {
    23722204            res = move_files_to_cd(bkpinfo, curr_filelist_fname,
    2373                                  curr_xattr_list_fname,
    2374                                  curr_acl_list_fname, curr_afioball_fname,
    2375                                  NULL);
     2205                                   curr_xattr_list_fname,
     2206                                   curr_acl_list_fname,
     2207                                   curr_afioball_fname, NULL);
    23762208        }
    23772209        retval += res;
     
    23822214        if (res) {
    23832215            asprintf(&tmp, "Failed to add archive %ld's files to CD dir\n",
    2384                     curr_set_no);
     2216                     curr_set_no);
    23852217            log_to_screen(tmp);
    23862218            paranoid_free(tmp);
     
    23982230    close_progress_form();
    23992231    if (retval) {
    2400         log_to_screen("Your regular files have been archived (with errors).");
     2232        log_to_screen
     2233            ("Your regular files have been archived (with errors).");
    24012234    } else {
    2402         log_to_screen("Your regular files have been archived successfully.");
    2403     }
    2404     return(retval);
     2235        log_to_screen
     2236            ("Your regular files have been archived successfully.");
     2237    }
     2238    return (retval);
    24052239}
    24062240
     
    24802314    mvaddstr_and_log_it(g_currentY, 0,
    24812315                        "Archiving large files to media           ");
    2482     asprintf(&biggielist, "%s/archives/biggielist.txt", bkpinfo->scratchdir);
     2316    asprintf(&biggielist, "%s/archives/biggielist.txt",
     2317             bkpinfo->scratchdir);
    24832318    asprintf(&xattr_fname, XATTR_BIGGLST_FNAME_RAW_SZ, bkpinfo->tmpdir);
    24842319    asprintf(&acl_fname, ACL_BIGGLST_FNAME_RAW_SZ, bkpinfo->tmpdir);
    24852320
    24862321    asprintf(&command, "cp %s/biggielist.txt %s", bkpinfo->tmpdir,
    2487             biggielist);
     2322             biggielist);
    24882323    paranoid_system(command);
    24892324    paranoid_free(command);
     2325
    24902326    asprintf(&blah, "biggielist = %s", biggielist);
    24912327    log_msg(2, blah);
     
    24992335    get_acl_list(biggielist, acl_fname);
    25002336    asprintf(&command, "cp %s %s/archives/", xattr_fname,
    2501             bkpinfo->scratchdir);
     2337             bkpinfo->scratchdir);
    25022338    paranoid_system(command);
    25032339    paranoid_free(command);
    2504     asprintf(&command, "cp %s %s/archives/", acl_fname, bkpinfo->scratchdir);
     2340
     2341    asprintf(&command, "cp %s %s/archives/", acl_fname,
     2342             bkpinfo->scratchdir);
    25052343    paranoid_system(command);
    25062344    paranoid_free(command);
     
    25142352    paranoid_free(xattr_fname);
    25152353    paranoid_free(acl_fname);
     2354
    25162355    res = make_slices_and_images(bkpinfo, biggielist);
    25172356    paranoid_free(biggielist);
     2357
    25182358    if (IS_THIS_A_STREAMING_BACKUP(bkpinfo->backup_media_type)) {
    25192359        write_header_block_to_stream(0, "end-of-biggiefiles",
     
    25292369    return (retval);
    25302370}
    2531 
    25322371
    25332372
     
    25772416
    25782417    assert(bkpinfo != NULL);
    2579     tmp = malloc(1200);
    25802418    would_occupy = space_occupied_by_cd(bkpinfo->scratchdir);
    25812419    va_start(ap, files_to_add); // initialize the variable arguments
     
    26022440    if (would_occupy / 1024 > bkpinfo->media_size[g_current_media_number]) {
    26032441        /* FALSE because this is not the last CD we'll write */
    2604         res = write_iso_and_go_on(bkpinfo, FALSE); 
     2442        res = write_iso_and_go_on(bkpinfo, FALSE);
    26052443        retval += res;
    26062444        if (res) {
     
    26172455
    26182456        asprintf(&tmp, "mv -f %s %s/archives/", curr_file,
    2619                 bkpinfo->scratchdir);
     2457                 bkpinfo->scratchdir);
    26202458        res = run_program_and_log_output(tmp, 5);
    26212459        retval += res;
     
    26392477
    26402478/* @} - end of LLarchiveGroup */
    2641 
    2642 
    2643 
    2644 
    2645 
    2646 
    26472479
    26482480
     
    27162548        res += write_image_to_floppy(bootdisk_dev, tmp);
    27172549        paranoid_free(tmp);
     2550
    27182551        if (ask_me_OK_or_cancel("About to write 1.44MB mfsroot disk")) {
    27192552            log_to_screen("Writing mfsroot floppy");
     
    27512584                format_disk(datadisk_dev);
    27522585            }
    2753             /*
    2754                asprintf(&tmp, "cat %s > %s", bootdisk_file, datadisk_dev);
    2755                res += run_external_binary_with_percentage_indicator_NEW("Writing boot floppy", tmp);
    2756              */
    27572586            res += write_image_to_floppy(datadisk_dev, bootdisk_file);
    27582587            if (ask_me_OK_or_cancel("About to write root disk")) {
     
    28062635
    28072636
    2808 
    2809 
    28102637/**
    28112638 * Wrapper around @c offer_to_write_floppies().
     
    28392666            if (does_file_exist("/root/images/mindi/mondorescue.iso")) {
    28402667                popup_and_OK
    2841                     ("Boot+data floppy creation failed. However, FYI, you may burn /root/images/mindi/mondorescue.iso to a CD and boot from that instead if you wish.");
     2668                    ("Boot+data floppy creation failed.\nHowever, you may burn /root/images/mindi/mondorescue.iso to a CD\nand boot from that instead if you wish.");
    28422669                res++;
    28432670            }
     
    28532680    return (res);
    28542681}
    2855 
    2856 
    28572682
    28582683
     
    29432768
    29442769/* @} - end of LLarchiveGroup */
    2945 
    29462770
    29472771
     
    30002824
    30012825
    3002 
    30032826/**
    30042827 * Asks the user to put a CD-R(W) in the drive.
     
    30292852
    30302853    asprintf(&szmsg, "I am about to burn %s #%d",
    3031             media_descriptor_string(g_backup_media_type),
    3032             g_current_media_number);
     2854             media_descriptor_string(g_backup_media_type),
     2855             g_current_media_number);
    30332856    log_to_screen(szmsg);
    30342857    paranoid_free(szmsg);
     
    30382861    log_to_screen("Scanning CD-ROM drive...");
    30392862    asprintf(&mtpt, "/tmp/cd.mtpt.%ld.%ld", (long int) random(),
    3040             (long int) random());
     2863             (long int) random());
    30412864    make_hole_for_dir(mtpt);
    30422865
     
    30562879        cd_number = -1;
    30572880        asprintf(&tmp, "mount %s %s", cdrom_dev, mtpt);
    3058         if ((attempt_to_mount_returned_this = run_program_and_log_output(tmp, 1))) {
     2881        if ((attempt_to_mount_returned_this =
     2882             run_program_and_log_output(tmp, 1))) {
    30592883            log_msg(4, "Failed to mount %s at %s", cdrom_dev, mtpt);
    30602884            log_to_screen("If there's a CD/DVD in the drive, it's blank.");
     
    30712895               }
    30722896             */
    3073         } else if (!does_file_exist(szcdno) || !does_file_exist(szserfname)) {
    3074             log_to_screen("%s has data on it but it's probably not a Mondo CD.",
     2897        } else if (!does_file_exist(szcdno)
     2898                   || !does_file_exist(szserfname)) {
     2899            log_to_screen
     2900                ("%s has data on it but it's probably not a Mondo CD.",
    30752901                 media_descriptor_string(g_backup_media_type));
    30762902            asprintf(&our_serial_str, "%s", "");
     
    30812907            asprintf(&tmp1, "cat %s 2> /dev/null", szserfname);
    30822908            asprintf(&our_serial_str, "%s",
    3083                   call_program_and_get_last_line_of_output(tmp1));
     2909                    call_program_and_get_last_line_of_output(tmp1));
    30842910            paranoid_free(tmp1);
    30852911            // FIXME - should be able to use last_line_of_file(), surely?
     
    31352961        eject_device(cdrom_dev);
    31362962        asprintf(&tmp,
    3137                 "I am about to burn %s #%d of the backup set. Please insert %s and press Enter.",
    3138                 media_descriptor_string(g_backup_media_type),
    3139                 g_current_media_number,
    3140                 media_descriptor_string(g_backup_media_type));
     2963                 "I am about to burn %s #%d of the backup set. Please insert %s and press Enter.",
     2964                 media_descriptor_string(g_backup_media_type),
     2965                 g_current_media_number,
     2966                 media_descriptor_string(g_backup_media_type));
    31412967        popup_and_OK(tmp);
    31422968        paranoid_free(tmp);
     
    31652991
    31662992
    3167 
    31682993/**
    31692994 * Set the <tt>N</tt>th bit of @c array to @c true_or_false.
     
    31933018
    31943019/* @} - end of utilityGroup */
    3195 
    31963020
    31973021
     
    32513075    int retval = 0;
    32523076    int res = 0;
     3077    int n = 0;
    32533078
    32543079    /*@ structures ************************************************** */
     
    32583083    assert(bkpinfo != NULL);
    32593084    assert_string_is_neither_NULL_nor_zerolength(biggie_filename);
    3260 
    3261     malloc_string(checksum_line);
    32623085
    32633086    biggiestruct.for_backward_compatibility = '\n';
     
    32793102    if (partimagehack_fifo) {
    32803103        file_to_openin = partimagehack_fifo;
    3281         strcpy(checksum_line, "IGNORE");
     3104        asprintf(&checksum_line, "IGNORE");
    32823105        log_msg(2,
    32833106                "Not calculating checksum for %s: it would take too long",
     
    32923115        }
    32933116        paranoid_free(command);
    3294         (void) fgets(checksum_line, MAX_STR_LEN, fin);
     3117        (void) getline(&checksum_line, (size_t) & n, fin);
    32953118        pclose(fin);
    32963119    }
     
    33073130    paranoid_free(checksum_line);
    33083131
    3309     asprintf(&tmp, "%s", slice_fname(biggie_file_number, 0, bkpinfo->tmpdir, ""));
     3132    asprintf(&tmp, "%s",
     3133             slice_fname(biggie_file_number, 0, bkpinfo->tmpdir, ""));
    33103134    fout = fopen(tmp, "w");
    33113135    paranoid_free(tmp);
     
    33193143        log_OS_error("Unable to openin biggie_filename");
    33203144        asprintf(&tmp, "Cannot archive bigfile '%s': not found",
    3321                 biggie_filename);
     3145                 biggie_filename);
    33223146        log_to_screen(tmp);
    33233147        paranoid_free(tmp);
     
    33283152    if (IS_THIS_A_STREAMING_BACKUP(bkpinfo->backup_media_type)) {
    33293153        res = move_files_to_stream(bkpinfo,
    3330                                  slice_fname(biggie_file_number, 0,
    3331                                              bkpinfo->tmpdir, ""), NULL);
     3154                                   slice_fname(biggie_file_number, 0,
     3155                                               bkpinfo->tmpdir, ""), NULL);
    33323156    } else {
    33333157        res = move_files_to_cd(bkpinfo,
    3334                              slice_fname(biggie_file_number, 0, bkpinfo->tmpdir, ""),
    3335                             NULL);
     3158                               slice_fname(biggie_file_number, 0,
     3159                                           bkpinfo->tmpdir, ""), NULL);
    33363160    }
    33373161    i = bkpinfo->optimal_set_size / 256;
    33383162    for (slice_num = 1; !finished; slice_num++) {
    33393163        asprintf(&curr_slice_fname_uncompressed, "%s",
    3340                slice_fname(biggie_file_number, slice_num, bkpinfo->tmpdir, ""));
     3164                 slice_fname(biggie_file_number, slice_num,
     3165                             bkpinfo->tmpdir, ""));
    33413166        asprintf(&curr_slice_fname_compressed, "%s",
    3342                slice_fname(biggie_file_number, slice_num, bkpinfo->tmpdir, suffix));
     3167                 slice_fname(biggie_file_number, slice_num,
     3168                             bkpinfo->tmpdir, suffix));
    33433169
    33443170        asprintf(&tmp, "%s", percent_media_full_comment(bkpinfo));
     
    33823208            if (should_I_compress_slices && bkpinfo->compression_level > 0) {
    33833209                asprintf(&command, "%s -%d %s", bkpinfo->zip_exe,
    3384                         bkpinfo->compression_level,
    3385                         curr_slice_fname_uncompressed);
     3210                         bkpinfo->compression_level,
     3211                         curr_slice_fname_uncompressed);
    33863212                log_msg(2, command);
    33873213                if ((res = system(command))) {
     
    33913217            } else {
    33923218                /* BERLIOS: Useless
    3393                 asprintf(&command, "mv %s %s 2>> %s",
    3394                         curr_slice_fname_uncompressed,
    3395                         curr_slice_fname_compressed, MONDO_LOGFILE);
    3396                 */
     3219                   asprintf(&command, "mv %s %s 2>> %s",
     3220                   curr_slice_fname_uncompressed,
     3221                   curr_slice_fname_compressed, MONDO_LOGFILE);
     3222                 */
    33973223                res = 0;        // don't do it :)
    33983224                //              did_I_compress_slice = FALSE;
     
    34113237            } else {
    34123238                asprintf(&tmp,
    3413                         "%s - Bigfile #%ld, slice #%ld compressed OK          ",
    3414                         biggie_filename, biggie_file_number + 1,
    3415                         slice_num);
     3239                         "%s - Bigfile #%ld, slice #%ld compressed OK          ",
     3240                         biggie_filename, biggie_file_number + 1,
     3241                         slice_num);
    34163242            }
    34173243#ifndef _XWIN
     
    34313257
    34323258            finished = TRUE;
    3433             asprintf(&file_to_archive, "%s", curr_slice_fname_uncompressed);
     3259            asprintf(&file_to_archive, "%s",
     3260                     curr_slice_fname_uncompressed);
    34343261            if (IS_THIS_A_STREAMING_BACKUP(bkpinfo->backup_media_type)) {
    34353262                break;
     
    34503277        if (res) {
    34513278            asprintf(&tmp,
    3452                     "Failed to add slice %ld of bigfile %ld to scratchdir",
    3453                     slice_num, biggie_file_number + 1);
     3279                     "Failed to add slice %ld of bigfile %ld to scratchdir",
     3280                     slice_num, biggie_file_number + 1);
    34543281            log_to_screen(tmp);
    34553282            paranoid_free(tmp);
     
    34633290    paranoid_fclose(fin);
    34643291    if (retval) {
    3465         asprintf(&tmp, "Sliced bigfile #%ld...FAILED", biggie_file_number + 1);
     3292        asprintf(&tmp, "Sliced bigfile #%ld...FAILED",
     3293                 biggie_file_number + 1);
    34663294    } else {
    3467         asprintf(&tmp, "Sliced bigfile #%ld...OK!", biggie_file_number + 1);
     3295        asprintf(&tmp, "Sliced bigfile #%ld...OK!",
     3296                 biggie_file_number + 1);
    34683297    }
    34693298    log_msg(1, tmp);
     
    34983327    paranoid_free(tmp);
    34993328
    3500     asprintf(&tmp, "find %s -name '*list.[0-9]*' -exec rm -f '{}' \\;", dir);
     3329    asprintf(&tmp, "find %s -name '*list.[0-9]*' -exec rm -f '{}' \\;",
     3330             dir);
    35013331    run_program_and_log_output(tmp, FALSE);
    35023332    paranoid_free(tmp);
     
    35523382    log_msg(2, tmp);
    35533383    /* BERLIOS: that function seems strange to me
    3554     center_string(tmp, 80);
    3555     */
     3384       center_string(tmp, 80);
     3385     */
    35563386#ifndef _XWIN
    35573387    if (!g_text_mode) {
     
    36243454    /* label the ISO with its number */
    36253455
    3626     asprintf(&cdno_fname, "%s/archives/THIS-CD-NUMBER", bkpinfo->scratchdir);
     3456    asprintf(&cdno_fname, "%s/archives/THIS-CD-NUMBER",
     3457             bkpinfo->scratchdir);
    36273458    fout = fopen(cdno_fname, "w");
    36283459    fprintf(fout, "%d", g_current_media_number);
     
    36313462
    36323463    asprintf(&tmp, "cp -f %s/autorun %s/", g_mondo_home,
    3633             bkpinfo->scratchdir);
     3464             bkpinfo->scratchdir);
    36343465    if (run_program_and_log_output(tmp, FALSE)) {
    36353466        log_msg(2, "Warning - unable to copy autorun to scratchdir");
     
    36383469
    36393470    /* last CD or not? Label accordingly */
    3640     asprintf(&lastcd_fname, "%s/archives/NOT-THE-LAST", bkpinfo->scratchdir);
     3471    asprintf(&lastcd_fname, "%s/archives/NOT-THE-LAST",
     3472             bkpinfo->scratchdir);
    36413473    if (last_cd) {
    36423474        unlink(lastcd_fname);
     
    36543486        bkpinfo->media_size[g_current_media_number]) {
    36553487        asprintf(&tmp,
    3656                 "Warning! CD is too big. It occupies %ld KB, which is more than the %ld KB allowed.",
    3657                 (long) space_occupied_by_cd(bkpinfo->scratchdir),
    3658                 (long) bkpinfo->media_size[g_current_media_number]);
     3488                 "Warning! CD is too big. It occupies %ld KB, which is more than the %ld KB allowed.",
     3489                 (long) space_occupied_by_cd(bkpinfo->scratchdir),
     3490                 (long) bkpinfo->media_size[g_current_media_number]);
    36593491        log_to_screen(tmp);
    36603492        paranoid_free(tmp);
    36613493    }
    36623494    asprintf(&isofile, "%s/%s/%s-%d.iso", bkpinfo->isodir,
    3663             bkpinfo->nfs_remote_dir, bkpinfo->prefix,
    3664             g_current_media_number);
     3495             bkpinfo->nfs_remote_dir, bkpinfo->prefix,
     3496             g_current_media_number);
    36653497    for (that_one_was_ok = FALSE; !that_one_was_ok;) {
    36663498        res = make_iso_fs(bkpinfo, isofile);
     
    36893521        } else {
    36903522            asprintf(&tmp, "Failed to burn %s #%d. Retry?",
    3691                     media_descriptor_string(bkpinfo->backup_media_type),
    3692                     g_current_media_number);
     3523                     media_descriptor_string(bkpinfo->backup_media_type),
     3524                     g_current_media_number);
    36933525            res = ask_me_yes_or_no(tmp);
    36943526            paranoid_free(tmp);
     
    37213553    wipe_archives(bkpinfo->scratchdir);
    37223554    asprintf(&tmp, "rm -Rf %s/images/*gz %s/images/*data*img",
    3723             bkpinfo->scratchdir, bkpinfo->scratchdir);
     3555             bkpinfo->scratchdir, bkpinfo->scratchdir);
    37243556    if (system(tmp)) {
    37253557        log_msg(2,
    3726              "Error occurred when I tried to delete the redundant IMGs and GZs");
     3558                "Error occurred when I tried to delete the redundant IMGs and GZs");
    37273559    }
    37283560    paranoid_free(tmp);
     
    37953627            if (res) {
    37963628                asprintf(&tmp,
    3797                         "Warnings/errors were reported while checking %s #%d",
    3798                         media_descriptor_string(bkpinfo->backup_media_type),
    3799                         g_current_media_number);
     3629                         "Warnings/errors were reported while checking %s #%d",
     3630                         media_descriptor_string(bkpinfo->
     3631                                                 backup_media_type),
     3632                         g_current_media_number);
    38003633                log_to_screen(tmp);
    38013634                paranoid_free(tmp);
     
    38103643*/
    38113644        asprintf(&tmp,
    3812                 "cat %s | grep \"afio: \" | sed 's/afio: //' | grep -vx \"/dev/.*\" >> /tmp/changed.files",
    3813                 MONDO_LOGFILE);
     3645                 "cat %s | grep \"afio: \" | sed 's/afio: //' | grep -vx \"/dev/.*\" >> /tmp/changed.files",
     3646                 MONDO_LOGFILE);
    38143647        system(tmp);
    38153648        paranoid_free(tmp);
    38163649
    38173650        asprintf(&tmp,
    3818                 "cat %s | grep \"star: \" | sed 's/star: //' | grep -vx \"/dev/.*\" >> /tmp/changed.files",
    3819                 MONDO_LOGFILE);
     3651                 "cat %s | grep \"star: \" | sed 's/star: //' | grep -vx \"/dev/.*\" >> /tmp/changed.files",
     3652                 MONDO_LOGFILE);
    38203653        system(tmp);
    38213654        paranoid_free(tmp);
     
    39253758
    39263759
    3927 
    39283760/**
    39293761 * Wrapper around @c write_image_to_floppy_SUB().
Note: See TracChangeset for help on using the changeset viewer.