|
|
|
@ -2654,6 +2654,7 @@ set_dev:;
|
|
|
|
|
" --grow_overwriteable_iso emulate multi-session on media like DVD+RW\n");
|
|
|
|
|
printf(
|
|
|
|
|
" --ignore_signals try to ignore any signals rather than to abort\n");
|
|
|
|
|
printf(" --list_formats list format descriptors for loaded media.\n");
|
|
|
|
|
printf(" --list_ignored_options list all ignored cdrecord options.\n");
|
|
|
|
|
#ifdef Cdrskin_libburn_has_set_waitinG
|
|
|
|
|
printf(" modesty_on_drive=<options> no writing into full drive buffer\n");
|
|
|
|
@ -3115,6 +3116,7 @@ struct CdrskiN {
|
|
|
|
|
char msifile[Cdrskin_strleN];
|
|
|
|
|
|
|
|
|
|
int do_atip;
|
|
|
|
|
int do_list_formats;
|
|
|
|
|
|
|
|
|
|
int do_blank;
|
|
|
|
|
int blank_fast;
|
|
|
|
@ -3295,6 +3297,7 @@ int Cdrskin_new(struct CdrskiN **skin, struct CdrpreskiN *preskin, int flag)
|
|
|
|
|
o->do_msinfo= 0;
|
|
|
|
|
o->msifile[0]= 0;
|
|
|
|
|
o->do_atip= 0;
|
|
|
|
|
o->do_list_formats= 0;
|
|
|
|
|
o->do_blank= 0;
|
|
|
|
|
o->blank_fast= 0;
|
|
|
|
|
o->no_blank_appendable= 0;
|
|
|
|
@ -4858,6 +4861,73 @@ ex:;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** Perform --list_formats
|
|
|
|
|
@param flag Bitfield for control purposes:
|
|
|
|
|
@return <=0 error, 1 success
|
|
|
|
|
*/
|
|
|
|
|
int Cdrskin_list_formats(struct CdrskiN *skin, int flag)
|
|
|
|
|
{
|
|
|
|
|
struct burn_drive *drive;
|
|
|
|
|
int ret, i, status, num_formats, profile_no, type;
|
|
|
|
|
off_t size;
|
|
|
|
|
unsigned dummy;
|
|
|
|
|
char status_text[80], profile_name[90];
|
|
|
|
|
|
|
|
|
|
ret= Cdrskin_grab_drive(skin,0);
|
|
|
|
|
if(ret<=0)
|
|
|
|
|
return(ret);
|
|
|
|
|
drive= skin->drives[skin->driveno].drive;
|
|
|
|
|
|
|
|
|
|
ret = burn_disc_get_formats(drive, &status, &size, &dummy,
|
|
|
|
|
&num_formats);
|
|
|
|
|
if(ret <= 0) {
|
|
|
|
|
fprintf(stderr, "cdrskin: SORRY: Cannot obtain format list info\n");
|
|
|
|
|
ret= 2; goto ex;
|
|
|
|
|
}
|
|
|
|
|
ret= burn_disc_get_profile(drive, &profile_no, profile_name);
|
|
|
|
|
printf("Media current: ");
|
|
|
|
|
if(profile_no > 0 && ret > 0) {
|
|
|
|
|
if(profile_name[0])
|
|
|
|
|
printf("%s\n", profile_name);
|
|
|
|
|
else
|
|
|
|
|
printf("%4.4Xh\n", profile_no);
|
|
|
|
|
} else
|
|
|
|
|
printf("is not recognizable\n");
|
|
|
|
|
|
|
|
|
|
if(status == BURN_FORMAT_IS_UNFORMATTED)
|
|
|
|
|
sprintf(status_text, "unformatted, up to %.1f MiB",
|
|
|
|
|
((double) size) / 1024.0 / 1024.0);
|
|
|
|
|
else if(status == BURN_FORMAT_IS_FORMATTED) {
|
|
|
|
|
if(profile_no==0x12 || profile_no==0x13 || profile_no==0x1a ||
|
|
|
|
|
profile_no==0x43)
|
|
|
|
|
sprintf(status_text, "formatted, with %.1f MiB",
|
|
|
|
|
((double) size) / 1024.0 / 1024.0);
|
|
|
|
|
else
|
|
|
|
|
sprintf(status_text, "written, with %.1f MiB",
|
|
|
|
|
((double) size) / 1024.0 / 1024.0);
|
|
|
|
|
} else if(status == BURN_FORMAT_IS_UNKNOWN) {
|
|
|
|
|
if (profile_no > 0)
|
|
|
|
|
sprintf(status_text, "intermediate or unknown");
|
|
|
|
|
else
|
|
|
|
|
sprintf(status_text, "no media or unknown media");
|
|
|
|
|
} else
|
|
|
|
|
sprintf(status_text, "illegal status according to MMC-5");
|
|
|
|
|
printf("Format status: %s\n", status_text);
|
|
|
|
|
|
|
|
|
|
for (i = 0; i < num_formats; i++) {
|
|
|
|
|
ret= burn_disc_get_format_descr(drive, i, &type, &size, &dummy);
|
|
|
|
|
if (ret <= 0)
|
|
|
|
|
continue;
|
|
|
|
|
printf("Format idx %-2d: %2.2Xh , %.fs , %.1f MiB\n",
|
|
|
|
|
i, type, ((double) size) / 2048.0, ((double) size) / 1024.0/1024.0);
|
|
|
|
|
}
|
|
|
|
|
ret= 1;
|
|
|
|
|
ex:;
|
|
|
|
|
Cdrskin_release_drive(skin,0);
|
|
|
|
|
return(ret);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef Cdrskin_extra_leaN
|
|
|
|
|
|
|
|
|
|
/* A70324: proposal by Eduard Bloch */
|
|
|
|
@ -7288,6 +7358,9 @@ gracetime_equals:;
|
|
|
|
|
} else if(strcmp(argv[i],"-isosize")==0) {
|
|
|
|
|
skin->use_data_image_size= 1;
|
|
|
|
|
|
|
|
|
|
} else if(strcmp(argv[i],"--list_formats")==0) {
|
|
|
|
|
skin->do_list_formats= 1;
|
|
|
|
|
|
|
|
|
|
} else if(strcmp(argv[i],"--list_ignored_options")==0) {
|
|
|
|
|
char line[80];
|
|
|
|
|
|
|
|
|
@ -7936,6 +8009,13 @@ int Cdrskin_run(struct CdrskiN *skin, int *exit_value, int flag)
|
|
|
|
|
if(ret<=0)
|
|
|
|
|
{*exit_value= 7; goto ex;}
|
|
|
|
|
}
|
|
|
|
|
if(skin->do_list_formats) {
|
|
|
|
|
if(skin->n_drives<=0)
|
|
|
|
|
{*exit_value= 14; goto no_drive;}
|
|
|
|
|
ret= Cdrskin_list_formats(skin, 0);
|
|
|
|
|
if(ret<=0)
|
|
|
|
|
{*exit_value= 14; goto ex;}
|
|
|
|
|
}
|
|
|
|
|
if(skin->do_blank) {
|
|
|
|
|
if(skin->n_drives<=0)
|
|
|
|
|
{*exit_value= 8; goto no_drive;}
|
|
|
|
|