cdbackup.c
branchtrunk
changeset 2 6bcb44b9edb1
parent 0 d85c12073dea
child 4 79da91042fcc
equal deleted inserted replaced
1:6b6864d2c4ce 2:6bcb44b9edb1
    39 #include <linux/cdrom.h>
    39 #include <linux/cdrom.h>
    40 
    40 
    41 #include "cdbackup.h"
    41 #include "cdbackup.h"
    42 #include "cdrom.h"
    42 #include "cdrom.h"
    43 #include "misc.h"
    43 #include "misc.h"
       
    44 #include "debug.h"
    44 #include "version.h"
    45 #include "version.h"
    45 
    46 
    46 /* #define DEBUGOUT */
    47 /* #define DEBUGOUT */
    47 
    48 
    48 /* defaults */
    49 /* defaults */
    55 int    padsize  =15;			/* blocks */
    56 int    padsize  =15;			/* blocks */
    56 int    multidisk=0;
    57 int    multidisk=0;
    57 char * multicmd =0;
    58 char * multicmd =0;
    58 int    verbose  =0;
    59 int    verbose  =0;
    59 int    xamode2  =0;
    60 int    xamode2  =0;
       
    61 int    debug    =0;
    60 
    62 
    61 char **cdrec_opt=0;
    63 char **cdrec_opt=0;
    62 int    cdrec_opt_count=0;
    64 int    cdrec_opt_count=0;
    63 
    65 
    64 long long totalSize;
    66 long long totalSize;
    79     "  -a LABEL       use LABEL as CD session title\n"
    81     "  -a LABEL       use LABEL as CD session title\n"
    80     "  -p N           use a padsize of N sectors for the session (default 15)\n"
    82     "  -p N           use a padsize of N sectors for the session (default 15)\n"
    81     "  -m             enable multi-disk mode\n"
    83     "  -m             enable multi-disk mode\n"
    82     "  -c COMMAND     call COMMAND on disk change in multi-disk mode\n"
    84     "  -c COMMAND     call COMMAND on disk change in multi-disk mode\n"
    83     "  -v             be verbose\n"
    85     "  -v             be verbose\n"
       
    86     "  -D             enable DEBUG output\n"
    84     "  -V             prints version & exits\n"
    87     "  -V             prints version & exits\n"
    85     "  --             pass rest of commandline to cdrecord\n"
    88     "  --             pass rest of commandline to cdrecord\n"
    86     "\n", prg_name);
    89     "\n", prg_name);
    87 }
    90 }
    88 
    91 
    90 
    93 
    91 void parse_cmdline(char argc, char *argv[]) 
    94 void parse_cmdline(char argc, char *argv[]) 
    92 {
    95 {
    93   int i;
    96   int i;
    94 
    97 
    95   while ((i=getopt(argc,argv,"d:r:l:s:p:a:c:mvVX"))>0) {
    98   while ((i=getopt(argc,argv,"d:r:l:s:p:a:c:mvVXD"))>0) {
    96     switch (i) {
    99     switch (i) {
    97        case 'V': fprintf(stderr,"cdbackup "VERSION" (compiled "__DATE__")\n"
   100        case 'V': fprintf(stderr,"cdbackup "VERSION" (compiled "__DATE__")\n"
    98 	                        "Copyright (C) 2000-2002\n"
   101 	                        "Copyright (C) 2000-2002\n"
    99 			        "This is free software; see the source for copying conditions.\n"
   102 			        "This is free software; see the source for copying conditions.\n"
   100 			        "There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A\n"
   103 			        "There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A\n"
   105        case 'X': xamode2=1; break;
   108        case 'X': xamode2=1; break;
   106        case 'c': multicmd=optarg; break;
   109        case 'c': multicmd=optarg; break;
   107        case 'd': cd_dev=optarg; break;
   110        case 'd': cd_dev=optarg; break;
   108        case 'r': cdr_dev=optarg; break;
   111        case 'r': cdr_dev=optarg; break;
   109        case 'a': cd_label=optarg; break;
   112        case 'a': cd_label=optarg; break;
       
   113        case 'D': verbose=1; debug=1; 
       
   114                  DEBUG("cdbackup: DEBUG output enabled ("VERSION")\n");
       
   115                  break;
   110        case 'l': errno=0; cd_len=strtol(optarg,NULL,10);
   116        case 'l': errno=0; cd_len=strtol(optarg,NULL,10);
   111                  if(errno==ERANGE || cd_len<1) serror("Option -l: length out of range (must be >=1)\n");
   117                  if(errno==ERANGE || cd_len<1) serror("Option -l: length out of range (must be >=1)\n");
   112 	         cd_len = (long long)cd_len * (1024*1024) / CD_FRAMESIZE; /* convert to blocks */
   118 	         cd_len = (long long)cd_len * (1024*1024) / CD_FRAMESIZE; /* convert to blocks */
   113 	         break;
   119 	         break;
   114        case 's': errno=0; cd_speed=strtol(optarg,NULL,10);
   120        case 's': errno=0; cd_speed=strtol(optarg,NULL,10);
   154   MARG(p,20,"padsize=%ds",padsize);
   160   MARG(p,20,"padsize=%ds",padsize);
   155   if(xamode2) *p++="-xa2"; else *p++="-data";
   161   if(xamode2) *p++="-xa2"; else *p++="-data";
   156   *p++="-";
   162   *p++="-";
   157   *p++=0;
   163   *p++=0;
   158 
   164 
   159   if(verbose) {
   165   if(debug) {
   160     fprintf(stderr,"%s: cdrecord command:",prg_name);
   166     fprintf(stderr,"%s: cdrecord command:",prg_name);
   161     for(p=args ; *p ; p++) fprintf(stderr," %s",*p);
   167     for(p=args ; *p ; p++) fprintf(stderr," %s",*p);
   162     fprintf(stderr,"\n");
   168     fprintf(stderr,"\n");
   163     }
   169     }
   164 
   170