cdbackup.c
branchtrunk
changeset 10 79f97a86b31a
parent 8 a306b5e43b44
child 12 6d3770b1a9e1
equal deleted inserted replaced
9:d6649fe2a4e0 10:79f97a86b31a
     1 /* cdbackup.c
     1 /* cdbackup.c
     2 Copyright (c) 2000-2004 Craig Condit, Stefan Hülswitt.
     2 Copyright (c) 2000-2006 Craig Condit, Stefan Hülswitt.
     3 
     3 
     4 Redistribution and use in source and binary forms, with or without
     4 Redistribution and use in source and binary forms, with or without
     5 modification, are permitted provided that the following conditions are met: 
     5 modification, are permitted provided that the following conditions are met: 
     6 
     6 
     7 1. Redistributions of source code must retain the above copyright notice,
     7 1. Redistributions of source code must retain the above copyright notice,
    82 char *make_arg(const char *format, ...)
    82 char *make_arg(const char *format, ...)
    83 {
    83 {
    84   char *ptr;
    84   char *ptr;
    85   va_list ap;
    85   va_list ap;
    86   va_start(ap,format);
    86   va_start(ap,format);
    87   if(vasprintf(&ptr,format,ap)<0) serror("No memory for cdrecord args\n");
    87   if(vasprintf(&ptr,format,ap)<0) {
       
    88     serror("No memory for cdrecord args\n");
       
    89     ptr=0;
       
    90     }
    88   va_end(ap);
    91   va_end(ap);
    89   return ptr;
    92   return ptr;
    90 }
    93 }
    91 
    94 
    92 void start_cdrecord(void)
    95 void start_cdrecord(void)
    93 {
    96 {
    94   char **args, **p, *exname;
    97   char **args, **p, *exname;
    95   int l;
    98   int l;
    96   
    99   
    97   if(!(p=args=calloc(cdrec_opt_count+10,sizeof(char *))))
   100   if(!(p=args=calloc(cdrec_opt_count+32,sizeof(char *))))
    98     serror("No memory for cdrecord args\n");
   101     serror("No memory for cdrecord args\n");
    99 
   102 
   100   if(dvd) exname="dvdrecord"; else exname="cdrecord";
   103   if(dvd) exname="dvdrecord"; else exname="cdrecord";
   101   *p++=exname;
   104   *p++=exname;
   102 
   105 
   104     *p++="-dao";
   107     *p++="-dao";
   105     *p++=make_arg("tsize=%ds",secs);
   108     *p++=make_arg("tsize=%ds",secs);
   106     }
   109     }
   107   else {
   110   else {
   108     *p++="-multi";
   111     *p++="-multi";
       
   112     *p++="-tao";
   109     *p++=make_arg("padsize=%ds",padsize);
   113     *p++=make_arg("padsize=%ds",padsize);
   110     }
   114     }
   111 
   115 
   112   *p++=make_arg("speed=%d",cd_speed);
   116   *p++=make_arg("speed=%d",cd_speed);
   113   *p++=make_arg("dev=%s",cdr_dev);
   117   *p++=make_arg("dev=%s",cdr_dev);
   321 
   325 
   322     if(multidisk==0) {
   326     if(multidisk==0) {
   323       if(cont) fprintf(stderr,"Multi-disk not enabled, ignoring continuation image(s)!\n");
   327       if(cont) fprintf(stderr,"Multi-disk not enabled, ignoring continuation image(s)!\n");
   324       cont=0;
   328       cont=0;
   325       }
   329       }
   326     else {
   330     else if(cont) {
   327       disknum++;
   331       disknum++;
   328       diskchange(multicmd,cd_dev);
   332       diskchange(multicmd,cd_dev);
   329       }
   333       }
   330     } while(cont);
   334     } while(cont);
   331 }
   335 }