Ignore:
Timestamp:
Aug 9, 2007, 3:19:05 PM (17 years ago)
Author:
Bruno Cornec
Message:
  • use of conf file for mkisofs and cdrecord commands
  • unification of cdr,cdrw and dvd
  • may not compile, modifications will continue
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/stable/mondo/src/common/libmondo-tools.c

    r1549 r1592  
    1313#include "mr_file.h"
    1414#include "mr_gettext.h"
     15#include "mr_conf.h"
    1516
    1617#include "mondostructures.h"
     
    3637extern int g_current_media_number;
    3738extern char *MONDO_LOGFILE;
     39
     40extern struct mr_ar_conf *mr_conf;
    3841
    3942/**
     
    359362    long avm = 0;
    360363    char *colon = NULL;
    361     char *cdr_exe = NULL;
    362364    char *tmp = NULL;
    363365    char *call_before_iso_user = NULL;
     
    450452    }
    451453
    452 // DVD
    453 
    454     if (bkpinfo->backup_media_type == dvd) {
    455         if (find_home_of_exe("growisofs")) {
    456             mr_asprintf(&cdr_exe, "growisofs");
    457         } else {
    458             fatal_error("Please install growisofs.");
     454// CD-R or CD-RW or DVD
     455    if (bkpinfo->backup_media_type == cdrw
     456        || bkpinfo->backup_media_type == dvd
     457        || bkpinfo->backup_media_type == iso
     458        || bkpinfo->backup_media_type == nfs
     459        || bkpinfo->backup_media_type == cdr) {
     460        if (!bkpinfo->manual_cd_tray) {
     461            mr_strcat(extra_cdrom_params, "-waiti ");
     462        }
     463        if (bkpinfo->backup_media_type == cdrw) {
     464            mr_strcat(extra_cdrom_params, "blank=fast ");
    459465        }
    460466        if (bkpinfo->nonbootable_backup) {
    461             mr_asprintf(&mondo_mkisofs_sz, MONDO_GROWISOFS_NONBOOT);
     467            mr_asprintf(&mondo_mkisofs_sz, "%s -no-boot", mr_conf->iso_creation_opt);
    462468        } else if
    463469#ifdef __FreeBSD__
     
    468474#ifdef __IA64__
    469475    {
    470         mr_asprintf(&mondo_mkisofs_sz, MONDO_GROWISOFS_REGULAR_ELILO);
     476        mr_asprintf(&mondo_mkisofs_sz, "%s -b images/mindi-boot.2880.img -c boot.cat", mr_conf->iso_creation_opt);
    471477    }
    472478#else
    473479    {
    474         mr_asprintf(&mondo_mkisofs_sz, MONDO_GROWISOFS_REGULAR_LILO);
    475     }
    476 #endif
    477         else
    478         {
    479             mr_asprintf(&mondo_mkisofs_sz, MONDO_GROWISOFS_REGULAR_SYSLINUX);
     480        mr_asprintf(&mondo_mkisofs_sz, "%s -b isolinux.bin -c boot.cat", mr_conf->iso_creation_opt);
     481    }
     482#endif
     483        else {
     484            mr_asprintf(&mondo_mkisofs_sz, "%s -b isolinux.bin -c boot.cat", mr_conf->iso_creation_opt);
    480485        }
    481486        if (bkpinfo->manual_cd_tray) {
    482             fatal_error("Manual CD tray + DVD not supported yet.");
    483             // -m isn't supported by growisofs, BTW...
    484         } else {
    485             sprintf(bkpinfo->call_make_iso,
    486                     "%s %s -Z %s . 2>> _ERR_",
    487                     mondo_mkisofs_sz, "", bkpinfo->media_device);
    488         }
    489         mr_free(mondo_mkisofs_sz);
    490 
    491         if (getenv ("SUDO_COMMAND")) {
    492             mr_asprintf(&command, "strings `which growisofs` | grep -c SUDO_COMMAND");
    493             if (!strcmp(call_program_and_get_last_line_of_output(command), "1")) {
    494                 popup_and_OK("Fatal Error: Can't write DVDs as sudo because growisofs doesn't support this - see the growisofs manpage for details.");
    495                 fatal_error("Can't write DVDs as sudo because growisofs doesn't support this - see the growisofs manpage for details.");
     487            if (strstr(mr_conf->mondo_iso_burning_cmd,"growisofs") == NULL) {
     488                fatal_error("Unable to use manual CD tray with growisofs");
    496489            }
    497             mr_free(command);
    498         }
    499         mr_msg(2, "call_make_iso (DVD res) is ... %s",
    500                 bkpinfo->call_make_iso);
    501     }                           // end of DVD code
    502 
    503 // CD-R or CD-RW
    504     if (bkpinfo->backup_media_type == cdrw
    505         || bkpinfo->backup_media_type == cdr) {
    506         if (!bkpinfo->manual_cd_tray) {
    507             mr_strcat(extra_cdrom_params, "-waiti ");
    508         }
    509         if (bkpinfo->backup_media_type == cdrw) {
    510             mr_strcat(extra_cdrom_params, "blank=fast ");
    511         }
    512         if (find_home_of_exe("cdrecord")) {
    513             mr_asprintf(&cdr_exe, "cdrecord");
    514         } else if (find_home_of_exe("dvdrecord")) {
    515             mr_asprintf(&cdr_exe, "dvdrecord");
    516         } else {
    517             fatal_error("Please install either cdrecord or dvdrecord.");
    518         }
    519         if (bkpinfo->nonbootable_backup) {
    520             mr_asprintf(&mondo_mkisofs_sz, MONDO_MKISOFS_NONBOOT);
    521         } else if
    522 #ifdef __FreeBSD__
    523             (TRUE)
    524 #else
    525             (bkpinfo->make_cd_use_lilo)
    526 #endif
    527 #ifdef __IA64__
    528     {
    529         mr_asprintf(&mondo_mkisofs_sz, MONDO_MKISOFS_REGULAR_ELILO);
    530     }
    531 #else
    532     {
    533         mr_asprintf(&mondo_mkisofs_sz, MONDO_MKISOFS_REGULAR_LILO);
    534     }
    535 #endif
    536         else
    537         {
    538             mr_asprintf(&mondo_mkisofs_sz, MONDO_MKISOFS_REGULAR_SYSLINUX);
    539         }
    540         if (bkpinfo->manual_cd_tray) {
    541490            if (bkpinfo->call_before_iso[0] == '\0') {
    542             sprintf(bkpinfo->call_before_iso,
    543                         "%s -o %s/temporary.iso . 2>> _ERR_",
    544                         mondo_mkisofs_sz, bkpinfo->tmpdir);
     491                sprintf(bkpinfo->call_before_iso,
     492                        "%s %s -o %s/temporary.iso . 2>> %s",
     493                        mr_conf->iso_creation_cmd,mondo_mkisofs_sz, bkpinfo->tmpdir, MONDO_LOGFILE);
    545494            } else {
    546495                mr_asprintf(&call_before_iso_user, bkpinfo->call_before_iso);
    547496                sprintf (bkpinfo->call_before_iso,
    548                                     "( %s -o %s/temporary.iso . 2>> _ERR_ ; %s )",
    549                         mondo_mkisofs_sz, bkpinfo->tmpdir, call_before_iso_user);
     497                                    "(%s %s -o %s/temporary.iso . 2>> %s ; %s )",
     498                        mr_conf->iso_creation_cmd,mondo_mkisofs_sz, bkpinfo->tmpdir, MONDO_LOGFILE, call_before_iso_user);
    550499                mr_free(call_before_iso_user);
    551500            }
    552501            log_it("bkpinfo->call_before_iso = %s", bkpinfo->call_before_iso);
    553502            sprintf(bkpinfo->call_make_iso,
    554                     "%s %s -v %s fs=4m dev=%s speed=%d %s/temporary.iso",
    555                     cdr_exe, (bkpinfo->please_dont_eject) ? " " : "-eject",
    556                     extra_cdrom_params, bkpinfo->media_device,
    557                     bkpinfo->cdrw_speed, bkpinfo->tmpdir);
     503                    "%s %s %s dev=%s speed=%d %s/temporary.iso",
     504                    mr_conf->mondo_iso_burning_cmd,
     505                    extra_cdrom_params,
     506                    mr_conf->mondo_iso_burning_opt,
     507                    bkpinfo->media_device,
     508                    bkpinfo->cdrw_speed,
     509                    bkpinfo->tmpdir);
    558510        } else {
    559             sprintf(bkpinfo->call_make_iso,
    560                     "%s . 2>> _ERR_ | %s %s %s fs=4m dev=%s speed=%d -",
    561                     mondo_mkisofs_sz, cdr_exe,
    562                     (bkpinfo->please_dont_eject) ? " " : "-eject",
    563                     extra_cdrom_params, bkpinfo->media_device,
     511            if (strstr(mr_conf->mondo_iso_burning_cmd,"growisofs") == NULL) {
     512                if (getenv ("SUDO_COMMAND")) {
     513                    mr_asprintf(&command, "strings `which growisofs` | grep -c SUDO_COMMAND");
     514                    if (!strcmp(call_program_and_get_last_line_of_output(command), "1")) {
     515                        fatal_error("Can't write DVDs as sudo because growisofs doesn't support this - see the growisofs manpage for details.");
     516                    }
     517                    mr_free(command);
     518                }
     519                sprintf(bkpinfo->call_make_iso,
     520                    "%s %s %s %s -Z %s -speed=%d . 2>> %s",
     521                    mr_conf->mondo_iso_burning_cmd,
     522                    mondo_mkisofs_sz,
     523                    extra_cdrom_params,
     524                    mr_conf->mondo_iso_burning_opt,
     525                    bkpinfo->media_device,
     526                    bkpinfo->cdrw_speed,
     527                    MONDO_LOGFILE);
     528            } else {
     529                sprintf(bkpinfo->call_make_iso,
     530                    "%s %s . 2>> %s | %s %s %s dev=%s speed=%d -",
     531                    mr_conf->iso_creation_cmd,
     532                    mondo_mkisofs_sz,
     533                    MONDO_LOGFILE,
     534                    mr_conf->mondo_iso_burning_cmd,
     535                    extra_cdrom_params,
     536                    mr_conf->mondo_iso_burning_opt,
     537                    bkpinfo->media_device,
    564538                    bkpinfo->cdrw_speed);
     539            }
    565540        }
    566541        mr_free(mondo_mkisofs_sz);
    567         mr_free(cdr_exe);
    568542        mr_free(extra_cdrom_params);
    569543    }                           // end of CD code
     
    651625        fprintf(stderr, "Type 'man mondoarchive' for help.\n");
    652626    }
    653     mr_asprintf(&tmp, "%s", MONDO_TMPISOS);
    654     if (does_file_exist(tmp)) {
    655         unlink(tmp);
    656     }
    657     mr_free(tmp);
    658627
    659628    if (strlen(bkpinfo->tmpdir) < 2 || strlen(bkpinfo->scratchdir) < 2) {
     
    755724    bkpinfo->call_before_iso[0] = '\0';
    756725    bkpinfo->call_make_iso[0] = '\0';
    757     bkpinfo->call_burn_iso[0] = '\0';
    758726    bkpinfo->call_after_iso[0] = '\0';
    759727    bkpinfo->image_devs[0] = '\0';
     
    810778 * - make sure user has enough free space in @c /
    811779 * - check kernel for ramdisk support
    812  * - make sure afio, cdrecord, mkisofs, bzip2, awk, md5sum, strings, mindi, and buffer exist
     780 * - make sure afio, cdrecord, bzip2, awk, md5sum, strings, mindi, and buffer exist
    813781 * - make sure CD-ROM is unmounted
    814782 * - make sure /etc/modules.conf exists
     
    880848    }
    881849#endif
     850    retval += whine_if_not_found(mr_conf->mr_iso_creation_cmd);
     851    retval += whine_if_not_found(mr_conf->mondo_iso_burning_cmd);
    882852    retval += whine_if_not_found(MKE2FS_OR_NEWFS);
    883     retval += whine_if_not_found("mkisofs");
    884     if (system("which dvdrecord > /dev/null 2> /dev/null")) {
    885         retval += whine_if_not_found("cdrecord");
    886     }
    887853    retval += whine_if_not_found("bzip2");
    888854    retval += whine_if_not_found("gzip");
Note: See TracChangeset for help on using the changeset viewer.