equal
deleted
inserted
replaced
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 } |