20 #include <sys/types.h>
58 int m_lo,
int s_lo,
int f_lo,
int flag)
61 {
"SKC", 96, 40, 0,
""},
62 {
"Ritek Corp" , 96, 43, 30,
""},
63 {
"TDK / Ritek" , 97, 10, 0,
"TRAXDATA"},
64 {
"TDK Corporation" , 97, 15, 0,
""},
65 {
"Ritek Corp" , 97, 15, 10,
"7-plus, Aopen, PONY, Power Source, TDK, TRAXDATA, HiCO, PHILIPS, Primdisc, Victor.JVC, OPTI STORAGE, Samsung"},
66 {
"Mitsubishi Chemical Corporation" , 97, 15, 20,
""},
67 {
"Nan-Ya Plastics Corporation" , 97, 15, 30,
"Hatron, MMore, Acer, LITEON"},
68 {
"Delphi" , 97, 15, 50,
""},
69 {
"Shenzhen SG&SAST" , 97, 16, 20,
""},
70 {
"Moser Baer India Limited" , 97, 17, 0,
"EMTEC, Intenso, YAKUMO, PLATINUM, Silver Circle"},
71 {
"SKY media Manufacturing SA" , 97, 17, 10,
""},
72 {
"Wing" , 97, 18, 10,
""},
73 {
"DDT" , 97, 18, 20,
""},
74 {
"Daxon Technology Inc. / Acer" , 97, 22, 60,
"Maxmax, Diamond Data, BenQ, gold, SONY"},
75 {
"Taiyo Yuden Company Limited" , 97, 24, 0,
"Maxell, FUJIFILM, SONY"},
76 {
"Sony Corporation" , 97, 24, 10,
"LeadData, Imation"},
77 {
"Computer Support Italcard s.r.l" , 97, 24, 20,
""},
78 {
"Unitech Japan Inc." , 97, 24, 30,
""},
79 {
"MPO, France" , 97, 25, 0,
"TDK"},
80 {
"Hitachi Maxell Ltd." , 97, 25, 20,
""},
81 {
"Infodisc Technology Co,Ltd." , 97, 25, 30,
"MEMOREX, SPEEDA, Lead data"},
82 {
"Xcitec" , 97, 25, 60,
""},
83 {
"Fornet International Pte Ltd" , 97, 26, 0,
"COMPUSA, Cdhouse"},
84 {
"Postech Corporation" , 97, 26, 10,
"Mr.Platinum"},
85 {
"SKC Co Ltd." , 97, 26, 20,
"Infinite"},
86 {
"Fuji Photo Film Co,Ltd." , 97, 26, 40,
""},
87 {
"Lead Data Inc." , 97, 26, 50,
"SONY, Gigastorage, MIRAGE"},
88 {
"CMC Magnetics Corporation" , 97, 26, 60,
"Daxon, Verbatim, Memorex, Bi-Winner, PLEXTOR, YAMAHA, Melody, Office DEPOT, Philips, eMARK, imation, HyperMedia, Samsung, Shintaro, Techworks"},
89 {
"Ricoh Company Limited" , 97, 27, 0,
"Sony, Digital Storage, Csita"},
90 {
"Plasmon Data Systems Ltd" , 97, 27, 10,
"Ritek, TDK, EMTEC, ALPHAPET, MANIA"},
91 {
"Princo Corporation" , 97, 27, 20,
""},
92 {
"Pioneer" , 97, 27, 30,
""},
93 {
"Eastman Kodak Company" , 97, 27, 40,
""},
94 {
"Mitsui Chemicals Inc." , 97, 27, 50,
"MAM-A, TDK"},
95 {
"Ricoh Company Limited" , 97, 27, 60,
"Ritek"},
96 {
"Gigastorage Corporation" , 97, 28, 10,
"MaxMax, Nan-Ya"},
97 {
"Multi Media Masters&Machinary SA" , 97, 28, 20,
"King, Mmirex"},
98 {
"Ritek Corp" , 97, 31, 0,
"TDK"},
99 {
"Grand Advance Technology Sdn. Bhd." , 97, 31, 30,
""},
100 {
"TDK Corporation" , 97, 32, 00,
""},
101 {
"Prodisc Technology Inc." , 97, 32, 10,
"Smartbuy, Mitsubishi, Digmaster, LG, Media Market"},
102 {
"Mitsubishi Chemical Corporation" , 97, 34, 20,
"YAMAHA, Verbatim"},
103 {
"Mitsui Chemicals Inc." , 97, 48, 50,
""},
104 {
"TDK Corporation" , 97, 49, 0,
""},
113 result = strdup(
"(no manufacturer code)");
120 (f_li_0 == mid_list[i].
f_li ||
f_li == mid_list[i].
f_li))
124 sprintf(buf,
"Unknown CD manufacturer. Please report code '%2.2dm%2.2ds%2.2df/%2.2dm%2.2ds%2.2df', the human readable brand, size, and speed to scdbackup@gmx.net.",
m_li,
s_li,
f_li, m_lo, s_lo, f_lo);
125 result = strdup(buf);
131 sprintf(buf,
"%s (aka %s)",
133 result = strdup(buf);
150 char *media_code1,
char *media_code2,
int flag)
152 int i, l = 0, m_li, s_li, f_li, m_lo, s_lo, f_lo;
154 char *result = NULL, *cpt;
162 {
"BeAll", 5,
"BeAll Developers, Inc."},
163 {
"CMC", 3,
"CMC Magnetics Corporation"},
164 {
"DAXON", 5,
"Daxon Technology Inc. / Acer"},
165 {
"Daxon", 5,
"Daxon Technology Inc. / Acer"},
166 {
"FUJI", 4,
"Fujifilm Holdings Corporation"},
167 {
"INFODISC", 8,
"New Star Digital Co., Ltd."},
168 {
"INFOME", 6,
"InfoMedia Inc."},
169 {
"ISMMBD", 6,
"Info Source Multi Media Ltd."},
170 {
"JVC", 3,
"JVC Limited"},
171 {
"KIC01RG", 7,
"AMC"},
172 {
"LD", 8,
"Lead Data Inc."},
173 {
"LGE", 3,
"LG Electronics"},
174 {
"MAM", 8,
"Mitsui Advanced Media, Inc. Europe"},
175 {
"MAXELL", 6,
"Hitachi Maxell Ltd."},
176 {
"MBI", 3,
"Moser Baer India Limited"},
177 {
"MCC", 8,
"Mitsubishi Chemical Corporation"},
178 {
"MCI", 8,
"Mitsui Chemicals Inc."},
179 {
"MEI", 3,
"Panasonic Corporation"},
180 {
"MILLEN", 8,
"Millenniata Inc."},
181 {
"MKM", 3,
"Mitsubishi Kagaku Media Co."},
182 {
"MMC", 8,
"Mitsubishi Kagaku Media Co."},
183 {
"MXL", 8,
"Hitachi Maxell Ltd."},
184 {
"NANYA", 5,
"Nan-Ya Plastics Corporation"},
185 {
"NSD", 8,
"NESA International Inc."},
186 {
"OPTODISC", 8,
"Optodisc Technology Corporation"},
187 {
"OTCBDR", 8,
"Optodisc Technology Corporation"},
188 {
"PHILIP", 8,
"Moser Baer India Limited"},
189 {
"PHILIPS", 8,
"Philips"},
190 {
"PRINCO", 6,
"Princo Corporation"},
191 {
"PRODISC", 7,
"Prodisc Technology Inc."},
192 {
"Prodisc", 7,
"Prodisc Technology Inc."},
193 {
"PVC", 3,
"Pioneer"},
194 {
"RICOHJPN", 8,
"Ricoh Company Limited"},
195 {
"RITEK", 5,
"Ritek Corp"},
196 {
"SONY", 4,
"Sony Corporation"},
197 {
"TDK", 3,
"TDK Corporation"},
198 {
"TTG", 3,
"TDK Corporation"},
199 {
"TTH", 3,
"TDK Corporation"},
200 {
"TY", 8,
"Taiyo Yuden Company Limited"},
201 {
"TYG", 3,
"Taiyo Yuden Company Limited"},
202 {
"UME", 3,
"UmeDisc Limited"},
203 {
"UTJR001", 7,
"Unifino Inc."},
204 {
"VERBAT", 5,
"Mitsubishi Kagaku Media Co."},
205 {
"YUDEN", 5,
"Taiyo Yuden Company Limited"},
209 if (media_code2 != NULL &&
210 (prf == -1 || prf == 0x09 || prf == 0x0A)) {
211 if (strlen(media_code2) == 9 && media_code1[0] ==
'9' &&
212 media_code1[2] ==
'm' && media_code1[5] ==
's' &&
213 media_code1[8] ==
'f' &&
214 strchr(media_code1,
'%') == NULL) {
215 sscanf(media_code1,
"%dm%ds%df", &m_li, &s_li, &f_li);
216 sscanf(media_code2,
"%dm%ds%df", &m_lo, &s_lo, &f_lo);
217 if (m_li >= 96 && m_li <= 97 && m_lo > 0) {
219 m_li, s_li, f_li, m_lo, s_lo, f_lo, 0);
228 cpt = strchr(media_code1,
'_');
229 if (cpt != NULL && (prf == -1 || prf == 0x11 || prf == 0x13 ||
230 prf == 0x14 || prf == 0x15))
231 l = cpt - media_code1;
233 for (i = 0; mid_list[i].
mc1[0]; i++) {
234 if (strncmp(mid_list[i].
mc1, media_code1,
238 if (strncmp(mid_list[i].
mc1, media_code1, l) == 0)
241 if (mid_list[i].
mc1[0] == 0) {
242 sprintf(buf,
"Unknown DVD/BD manufacturer. Please report code '%s/%s', the human readable brand, size, and speed to scdbackup@gmx.net.",
243 media_code1, media_code2);
244 result = strdup(buf);
260 int i, esc_add = 0, ret;
261 char *wpt, *rpt, *new_text = NULL;
266 for (i = 0; (*text)[i]; i++) {
268 if (*rpt < 32 || *rpt > 126 || *rpt == 96 ||
269 ((*rpt ==
'_' || *rpt ==
'%') && (!(flag & 2))) ||
270 (*rpt ==
'/' && (flag & 1)))
274 new_text = calloc(strlen(*text) + esc_add + 1, 1);
275 if (new_text == NULL) {
280 for (i = 0; (*text)[i]; i++) {
282 if (*rpt < 32 || *rpt > 126 || *rpt == 96 ||
283 ((*rpt ==
'_' || *rpt ==
'%') && (!(flag & 2))) ||
284 (*rpt ==
'/' && (flag & 1))) {
285 sprintf(wpt,
"%%%2.2X",
286 (
unsigned int) *((
unsigned char *) rpt));
296 for (i = 0; (*text)[i]; i++)
297 if ((*text)[i] ==
' ')
312 ret = fgets(line, maxl, fp);
317 if (line[l - 1] ==
'\r')
320 if (line[l - 1] ==
'\n')
323 if(line[l - 1] ==
'\r')
333 for (cpt = msg; *cpt != 0; cpt++)
334 if (*cpt < 32 || *cpt > 126)
345 buf = (
unsigned char *) target;
347 buf[1] = (val >> 8) & 0xff;
348 buf[2] = (val >> 16) & 0xff;
349 buf[3] = (val >> 24) & 0xff;
359 #ifdef Libburn_use_clock_gettime_monotoniC
361 #ifdef _POSIX_MONOTONIC_CLOCK
370 ret = clock_gettime(CLOCK_MONOTONIC, &tp);
372 return ((
double) tp.tv_sec) + ((double) tp.tv_nsec) * 1.0e-9;
378 ret = gettimeofday(&tv, NULL);
380 return ((
double) tv.tv_sec) + ((double) tv.tv_usec) * 1.0e-6;
381 return (
double) time(NULL);
389 add_size = stbuf->st_blocks * (off_t) 512;
390 if (add_size < stbuf->st_size) {
392 if (write_start < stbuf->st_size) {
394 if (write_start > add_size)
395 add_size = write_start;
398 add_size = stbuf->st_size;
double burn_get_time(int flag)
void burn_version(int *major, int *minor, int *micro)
void burn_int_to_lsb(int val, char *target)
char * burn_guess_cd_manufacturer(int m_li, int s_li, int f_li, int m_lo, int s_lo, int f_lo, int flag)
int burn_util_make_printable_word(char **text, int flag)
char * burn_sfile_fgets(char *line, int maxl, FILE *fp)
char * burn_printify(char *msg)
off_t burn_sparse_file_addsize(off_t write_start, struct stat *stbuf)
char * burn_guess_manufacturer(int prf, char *media_code1, char *media_code2, int flag)
#define burn_header_version_minor
#define burn_header_version_micro
#define burn_header_version_major