Properly refusing on Pseudo Overwritable formatted BD-R
This commit is contained in:
parent
9d912df43b
commit
0ec0ba811d
@ -1,7 +1,7 @@
|
||||
|
||||
/* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images.
|
||||
|
||||
Copyright 2007-2016 Thomas Schmitt, <scdbackup@gmx.net>
|
||||
Copyright 2007-2017 Thomas Schmitt, <scdbackup@gmx.net>
|
||||
|
||||
Provided under GPL version 2 or later.
|
||||
|
||||
@ -999,7 +999,7 @@ int Xorriso_toc(struct XorrisO *xorriso, int flag)
|
||||
char *book_name;
|
||||
int num_data_from_format= 0;
|
||||
char *sno = NULL;
|
||||
int sno_len, i;
|
||||
int sno_len, i, is_bdr_pow= 0;
|
||||
|
||||
ret= Xorriso_get_drive_handles(xorriso, &dinfo, &drive,
|
||||
"on attempt to print Table Of Content",
|
||||
@ -1043,6 +1043,7 @@ int Xorriso_toc(struct XorrisO *xorriso, int flag)
|
||||
s= isoburn_disc_get_status(drive);
|
||||
if(profile_no == 0x0002 && s == BURN_DISC_EMPTY)
|
||||
profile_no= 0;
|
||||
is_bdr_pow= burn_drive_get_bd_r_pow(drive);
|
||||
sprintf(respt, "Media current: ");
|
||||
drive_role= burn_drive_get_drive_role(drive);
|
||||
if (profile_no > 0 && ret > 0) {
|
||||
@ -1050,7 +1051,9 @@ int Xorriso_toc(struct XorrisO *xorriso, int flag)
|
||||
sprintf(respt+strlen(respt), "%s", profile_name);
|
||||
else
|
||||
sprintf(respt+strlen(respt), "%4.4Xh", profile_no);
|
||||
if(drive_role==2)
|
||||
if(is_bdr_pow)
|
||||
sprintf(respt+strlen(respt), ", Pseudo Overwrite formatted");
|
||||
else if(drive_role==2)
|
||||
sprintf(respt+strlen(respt), ", overwriteable");
|
||||
else if(drive_role == 4)
|
||||
sprintf(respt+strlen(respt), ", random read-only");
|
||||
@ -1072,7 +1075,9 @@ int Xorriso_toc(struct XorrisO *xorriso, int flag)
|
||||
}
|
||||
|
||||
sprintf(respt, "Media status : ");
|
||||
if (s == BURN_DISC_FULL) {
|
||||
if(is_bdr_pow) {
|
||||
sprintf(respt+strlen(respt), "is unsuitable , is POW formatted");
|
||||
} else if (s == BURN_DISC_FULL) {
|
||||
if(not_recognizable)
|
||||
sprintf(respt+strlen(respt), "is not recognizable\n");
|
||||
else
|
||||
@ -1170,7 +1175,7 @@ int Xorriso_toc(struct XorrisO *xorriso, int flag)
|
||||
lba= num_blocks;
|
||||
}
|
||||
|
||||
if(drive_role == 4)
|
||||
if(drive_role == 4 || is_bdr_pow)
|
||||
num_free_text = "unused";
|
||||
else
|
||||
num_free_text = "writable";
|
||||
@ -1190,6 +1195,12 @@ int Xorriso_toc(struct XorrisO *xorriso, int flag)
|
||||
{ret= 1; goto ex;}
|
||||
if(xorriso->request_to_abort)
|
||||
{ret= 1; goto ex;}
|
||||
if(is_bdr_pow) {
|
||||
sprintf(respt,
|
||||
"Media summary: unsuitable Pseudo Overwrite formatted BD-R\n");
|
||||
Xorriso_toc_line(xorriso, flag & 8);
|
||||
{ret= 1; goto ex;}
|
||||
}
|
||||
|
||||
if(!(flag & 2))
|
||||
Xorriso_show_boot_info(xorriso, 1 | (flag & 8) | ((flag & 1) << 1));
|
||||
@ -1530,8 +1541,12 @@ int Xorriso_tell_media_space(struct XorrisO *xorriso,
|
||||
|
||||
if(Xorriso_change_is_pending(xorriso, 0)) {
|
||||
ret= Xorriso_write_session(xorriso, 1);
|
||||
if(ret>0)
|
||||
if(ret>0) {
|
||||
(*free_space)-= ret;
|
||||
} else {
|
||||
Xorriso_process_msg_queues(xorriso,0);
|
||||
return(0);
|
||||
}
|
||||
}
|
||||
Xorriso_process_msg_queues(xorriso,0);
|
||||
return(1);
|
||||
@ -1938,7 +1953,7 @@ int Xorriso_list_profiles(struct XorrisO *xorriso, int flag)
|
||||
*/
|
||||
int Xorriso_atip(struct XorrisO *xorriso, int flag)
|
||||
{
|
||||
int ret, profile_number= 0;
|
||||
int ret, profile_number= 0, is_bdr_pow= 0;
|
||||
int num_profiles= 0, profiles[64], i, can_write= 0, pf, no_medium= 0;
|
||||
char is_current[64];
|
||||
char *respt, profile_name[80];
|
||||
@ -2006,6 +2021,7 @@ int Xorriso_atip(struct XorrisO *xorriso, int flag)
|
||||
if(flag&2)
|
||||
return(1);
|
||||
|
||||
is_bdr_pow= burn_drive_get_bd_r_pow(drive);
|
||||
s= burn_disc_get_status(drive);
|
||||
ret= burn_disc_get_profile(drive,&profile_number,profile_name);
|
||||
if(ret<=0) {
|
||||
@ -2026,7 +2042,8 @@ int Xorriso_atip(struct XorrisO *xorriso, int flag)
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
|
||||
no_medium= 1;
|
||||
} else
|
||||
sprintf(respt, "Current: %s\n",profile_name);
|
||||
sprintf(respt, "Current: %s%s\n",profile_name,
|
||||
is_bdr_pow ? ", Pseudo Overwrite formatted" : "");
|
||||
Xorriso_result(xorriso,1);
|
||||
Xorriso_list_profiles(xorriso, 1 | 2);
|
||||
if(no_medium)
|
||||
@ -2155,7 +2172,7 @@ int Xorriso_get_profile(struct XorrisO *xorriso, int *profile_number,
|
||||
*/
|
||||
int Xorriso_msinfo(struct XorrisO *xorriso, int *msc1, int *msc2, int flag)
|
||||
{
|
||||
int ret, dummy;
|
||||
int ret, dummy, is_bdr_pow= 0;
|
||||
struct burn_drive *drive;
|
||||
struct burn_drive_info *dinfo;
|
||||
enum burn_disc_status disc_state;
|
||||
@ -2166,6 +2183,15 @@ int Xorriso_msinfo(struct XorrisO *xorriso, int *msc1, int *msc2, int flag)
|
||||
if(ret<=0)
|
||||
return(ret);
|
||||
|
||||
is_bdr_pow= burn_drive_get_bd_r_pow(drive);
|
||||
if(is_bdr_pow) {
|
||||
Xorriso_process_msg_queues(xorriso,0);
|
||||
sprintf(xorriso->info_text,
|
||||
"%s medium is unsuitably POW formatted BD-R. Cannot obtain -msinfo.",
|
||||
(flag&2) ? "Output" : "Input");
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||
return(0);
|
||||
}
|
||||
if(flag&1)
|
||||
disc_state= isoburn_disc_get_status(drive);
|
||||
else
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
/* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images.
|
||||
|
||||
Copyright 2007-2016 Thomas Schmitt, <scdbackup@gmx.net>
|
||||
Copyright 2007-2017 Thomas Schmitt, <scdbackup@gmx.net>
|
||||
|
||||
Provided under GPL version 2 or later.
|
||||
|
||||
@ -1077,7 +1077,7 @@ int Xorriso_set_all_file_dates(struct XorrisO *xorriso, int flag)
|
||||
int Xorriso_write_session(struct XorrisO *xorriso, int flag)
|
||||
{
|
||||
int ret, i, pacifier_speed= 0, data_lba, is_bootable= 0;
|
||||
int freshly_bootable= 0, hide_attr, signal_mode, role;
|
||||
int freshly_bootable= 0, hide_attr, signal_mode, role, is_bdr_pow= 0;
|
||||
char *xorriso_id= NULL, *img_id, *sfe= NULL, *out_cs;
|
||||
struct isoburn_imgen_opts *sopts= NULL;
|
||||
struct burn_drive_info *dinfo, *source_dinfo;
|
||||
@ -1121,6 +1121,14 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
|
||||
{ret= 0; goto ex;}
|
||||
}
|
||||
|
||||
is_bdr_pow= burn_drive_get_bd_r_pow(drive);
|
||||
if(is_bdr_pow) {
|
||||
sprintf(xorriso->info_text,
|
||||
"May not write to Pseudo Overwrite formatted BD-R medium");
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||
{ret= 0; goto ex;}
|
||||
}
|
||||
|
||||
s= isoburn_disc_get_status(drive);
|
||||
if (xorriso->do_hfsplus && (
|
||||
(xorriso->grow_blindly_msc2 >= 0 &&
|
||||
|
@ -1 +1 @@
|
||||
#define Xorriso_timestamP "2016.12.14.093149"
|
||||
#define Xorriso_timestamP "2017.02.13.145207"
|
||||
|
Loading…
Reference in New Issue
Block a user