Reporting POW formatted BD-R as unusable
This commit is contained in:
parent
a4b688ab52
commit
2bb8bf470d
@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
cdrskin.c , Copyright 2006-2016 Thomas Schmitt <scdbackup@gmx.net>
|
cdrskin.c , Copyright 2006-2017 Thomas Schmitt <scdbackup@gmx.net>
|
||||||
Provided under GPL version 2 or later.
|
Provided under GPL version 2 or later.
|
||||||
|
|
||||||
A cdrecord compatible command line interface for libburn.
|
A cdrecord compatible command line interface for libburn.
|
||||||
@ -5134,7 +5134,7 @@ int Cdrskin_toc(struct CdrskiN *skin, int flag)
|
|||||||
struct burn_toc_entry toc_entry;
|
struct burn_toc_entry toc_entry;
|
||||||
enum burn_disc_status s;
|
enum burn_disc_status s;
|
||||||
char profile_name[80];
|
char profile_name[80];
|
||||||
int profile_number;
|
int profile_number, is_bdr_pow= 0;
|
||||||
|
|
||||||
drive= skin->drives[skin->driveno].drive;
|
drive= skin->drives[skin->driveno].drive;
|
||||||
|
|
||||||
@ -5255,8 +5255,10 @@ summary:
|
|||||||
|
|
||||||
if(open_sessions > 0 && !have_real_open_session)
|
if(open_sessions > 0 && !have_real_open_session)
|
||||||
open_sessions--;
|
open_sessions--;
|
||||||
|
is_bdr_pow= burn_drive_get_bd_r_pow(drive);
|
||||||
printf("Media summary: %d sessions, %d tracks, %s %s\n",
|
printf("Media summary: %d sessions, %d tracks, %s %s\n",
|
||||||
num_sessions + open_sessions, track_count,
|
num_sessions + open_sessions, track_count,
|
||||||
|
is_bdr_pow ? "unusable (POW)" :
|
||||||
s==BURN_DISC_BLANK ? "blank" :
|
s==BURN_DISC_BLANK ? "blank" :
|
||||||
s==BURN_DISC_APPENDABLE ? "appendable" :
|
s==BURN_DISC_APPENDABLE ? "appendable" :
|
||||||
s==BURN_DISC_FULL ? "closed" :
|
s==BURN_DISC_FULL ? "closed" :
|
||||||
@ -5294,7 +5296,7 @@ int Cdrskin_minfo(struct CdrskiN *skin, int flag)
|
|||||||
struct burn_toc_entry toc_entry;
|
struct burn_toc_entry toc_entry;
|
||||||
enum burn_disc_status s, show_status;
|
enum burn_disc_status s, show_status;
|
||||||
char profile_name[80];
|
char profile_name[80];
|
||||||
int pno;
|
int pno, is_bdr_pow= 0;
|
||||||
char media_class[80];
|
char media_class[80];
|
||||||
int nominal_sessions= 1, ftils= 1, ltils= 1, first_track= 1, read_capacity= 0;
|
int nominal_sessions= 1, ftils= 1, ltils= 1, first_track= 1, read_capacity= 0;
|
||||||
int app_code, cd_info_valid, lra, alloc_blocks, free_blocks;
|
int app_code, cd_info_valid, lra, alloc_blocks, free_blocks;
|
||||||
@ -5323,10 +5325,12 @@ int Cdrskin_minfo(struct CdrskiN *skin, int flag)
|
|||||||
strcpy(media_class, "BD");
|
strcpy(media_class, "BD");
|
||||||
else
|
else
|
||||||
sprintf(media_class, "Unknown class (profile 0x%4.4X)", pno);
|
sprintf(media_class, "Unknown class (profile 0x%4.4X)", pno);
|
||||||
|
is_bdr_pow= burn_drive_get_bd_r_pow(drive);
|
||||||
|
|
||||||
printf("\n");
|
printf("\n");
|
||||||
printf("Mounted media class: %s\n", media_class);
|
printf("Mounted media class: %s\n", media_class);
|
||||||
printf("Mounted media type: %s\n", profile_name);
|
printf("Mounted media type: %s%s\n", profile_name,
|
||||||
|
is_bdr_pow ? ", Pseudo Overwrite formatted" : "");
|
||||||
ret= burn_disc_erasable(drive);
|
ret= burn_disc_erasable(drive);
|
||||||
printf("Disk Is %serasable\n",
|
printf("Disk Is %serasable\n",
|
||||||
(ret || skin->media_is_overwriteable) ? "" : "not ");
|
(ret || skin->media_is_overwriteable) ? "" : "not ");
|
||||||
@ -5339,6 +5343,7 @@ int Cdrskin_minfo(struct CdrskiN *skin, int flag)
|
|||||||
if(ovwrt_full)
|
if(ovwrt_full)
|
||||||
show_status= BURN_DISC_FULL;
|
show_status= BURN_DISC_FULL;
|
||||||
printf("disk status: %s\n",
|
printf("disk status: %s\n",
|
||||||
|
is_bdr_pow ? "unusable (POW)" :
|
||||||
show_status == BURN_DISC_BLANK ? "empty" :
|
show_status == BURN_DISC_BLANK ? "empty" :
|
||||||
show_status == BURN_DISC_APPENDABLE ? "incomplete/appendable" :
|
show_status == BURN_DISC_APPENDABLE ? "incomplete/appendable" :
|
||||||
show_status == BURN_DISC_FULL ? "complete" :
|
show_status == BURN_DISC_FULL ? "complete" :
|
||||||
@ -5576,7 +5581,7 @@ int Cdrskin_atip(struct CdrskiN *skin, int flag)
|
|||||||
char profile_name[80], *manuf= NULL, *media_code1= NULL, *media_code2= NULL;
|
char profile_name[80], *manuf= NULL, *media_code1= NULL, *media_code2= NULL;
|
||||||
char *book_type= NULL, *product_id= NULL;
|
char *book_type= NULL, *product_id= NULL;
|
||||||
char *sno= NULL;
|
char *sno= NULL;
|
||||||
int sno_len = 0, i;
|
int sno_len = 0, i, is_bdr_pow= 0;
|
||||||
|
|
||||||
ClN(printf("cdrskin: pseudo-atip on drive %d\n",skin->driveno));
|
ClN(printf("cdrskin: pseudo-atip on drive %d\n",skin->driveno));
|
||||||
ret= Cdrskin_grab_drive(skin,0);
|
ret= Cdrskin_grab_drive(skin,0);
|
||||||
@ -5651,7 +5656,9 @@ int Cdrskin_atip(struct CdrskiN *skin, int flag)
|
|||||||
if(profile_number==0x13) /* DVD-RW */
|
if(profile_number==0x13) /* DVD-RW */
|
||||||
printf("cdrskin: message for sdvdbackup: \"(growisofs mode Restricted Overwrite)\"\n");
|
printf("cdrskin: message for sdvdbackup: \"(growisofs mode Restricted Overwrite)\"\n");
|
||||||
} else if(strstr(profile_name,"BD")==profile_name) {
|
} else if(strstr(profile_name,"BD")==profile_name) {
|
||||||
printf("Mounted Media: %2.2Xh, %s\n", profile_number, profile_name);
|
is_bdr_pow= burn_drive_get_bd_r_pow(drive);
|
||||||
|
printf("Mounted Media: %2.2Xh, %s%s\n", profile_number, profile_name,
|
||||||
|
is_bdr_pow ? ", Pseudo Overwrite formatted" : "");
|
||||||
} else {
|
} else {
|
||||||
printf("ATIP info from disk:\n");
|
printf("ATIP info from disk:\n");
|
||||||
if(burn_disc_erasable(drive)) {
|
if(burn_disc_erasable(drive)) {
|
||||||
@ -5766,6 +5773,7 @@ int Cdrskin_list_formats(struct CdrskiN *skin, int flag)
|
|||||||
{
|
{
|
||||||
struct burn_drive *drive;
|
struct burn_drive *drive;
|
||||||
int ret, i, status, num_formats, profile_no, type, alloc_blocks, free_blocks;
|
int ret, i, status, num_formats, profile_no, type, alloc_blocks, free_blocks;
|
||||||
|
int is_bdr_pow= 0;
|
||||||
off_t size;
|
off_t size;
|
||||||
unsigned dummy;
|
unsigned dummy;
|
||||||
char status_text[80], profile_name[90];
|
char status_text[80], profile_name[90];
|
||||||
@ -5782,10 +5790,12 @@ int Cdrskin_list_formats(struct CdrskiN *skin, int flag)
|
|||||||
ret= 0; goto ex;
|
ret= 0; goto ex;
|
||||||
}
|
}
|
||||||
ret= burn_disc_get_profile(drive, &profile_no, profile_name);
|
ret= burn_disc_get_profile(drive, &profile_no, profile_name);
|
||||||
|
is_bdr_pow= burn_drive_get_bd_r_pow(drive);
|
||||||
printf("Media current: ");
|
printf("Media current: ");
|
||||||
if(profile_no > 0 && ret > 0) {
|
if(profile_no > 0 && ret > 0) {
|
||||||
if(profile_name[0])
|
if(profile_name[0])
|
||||||
printf("%s\n", profile_name);
|
printf("%s%s\n", profile_name,
|
||||||
|
is_bdr_pow ? ", Pseudo Overwrite formatted" : "");
|
||||||
else
|
else
|
||||||
printf("%4.4Xh\n", profile_no);
|
printf("%4.4Xh\n", profile_no);
|
||||||
} else
|
} else
|
||||||
@ -5835,7 +5845,7 @@ ex:;
|
|||||||
int Cdrskin_list_speeds(struct CdrskiN *skin, int flag)
|
int Cdrskin_list_speeds(struct CdrskiN *skin, int flag)
|
||||||
{
|
{
|
||||||
struct burn_drive *drive;
|
struct burn_drive *drive;
|
||||||
int ret, i, profile_no, high= -1, low= 0x7fffffff, is_cd= 0;
|
int ret, i, profile_no, high= -1, low= 0x7fffffff, is_cd= 0, is_bdr_pow= 0;
|
||||||
char profile_name[90], *speed_unit= "D";
|
char profile_name[90], *speed_unit= "D";
|
||||||
double speed_factor= 1385000.0, cd_factor= 75.0 * 2352;
|
double speed_factor= 1385000.0, cd_factor= 75.0 * 2352;
|
||||||
struct burn_speed_descriptor *speed_list= NULL, *item, *other;
|
struct burn_speed_descriptor *speed_list= NULL, *item, *other;
|
||||||
@ -5850,10 +5860,12 @@ int Cdrskin_list_speeds(struct CdrskiN *skin, int flag)
|
|||||||
ret= 0; goto ex;
|
ret= 0; goto ex;
|
||||||
}
|
}
|
||||||
ret= burn_disc_get_profile(drive, &profile_no, profile_name);
|
ret= burn_disc_get_profile(drive, &profile_no, profile_name);
|
||||||
|
is_bdr_pow= burn_drive_get_bd_r_pow(drive);
|
||||||
printf("Media current: ");
|
printf("Media current: ");
|
||||||
if(profile_no > 0 && ret > 0) {
|
if(profile_no > 0 && ret > 0) {
|
||||||
if(profile_name[0])
|
if(profile_name[0])
|
||||||
printf("%s\n", profile_name);
|
printf("%s%s\n", profile_name,
|
||||||
|
is_bdr_pow ? ", Pseudo Overwrite formatted" : "");
|
||||||
else
|
else
|
||||||
printf("%4.4Xh\n", profile_no);
|
printf("%4.4Xh\n", profile_no);
|
||||||
} else
|
} else
|
||||||
@ -7941,7 +7953,7 @@ int Cdrskin_qcheck(struct CdrskiN *skin, int flag)
|
|||||||
int Cdrskin_msinfo(struct CdrskiN *skin, int flag)
|
int Cdrskin_msinfo(struct CdrskiN *skin, int flag)
|
||||||
{
|
{
|
||||||
int num_sessions, session_no, ret, num_tracks, open_sessions= 0;
|
int num_sessions, session_no, ret, num_tracks, open_sessions= 0;
|
||||||
int nwa= -123456789, lba= -123456789, aux_lba;
|
int nwa= -123456789, lba= -123456789, aux_lba, is_bdr_pow= 0;
|
||||||
char msg[80];
|
char msg[80];
|
||||||
enum burn_disc_status s;
|
enum burn_disc_status s;
|
||||||
struct burn_drive *drive;
|
struct burn_drive *drive;
|
||||||
@ -7970,6 +7982,12 @@ int Cdrskin_msinfo(struct CdrskiN *skin, int flag)
|
|||||||
fprintf(stderr,"cdrskin: or on overwriteables with existing ISO-9660 file system.\n");
|
fprintf(stderr,"cdrskin: or on overwriteables with existing ISO-9660 file system.\n");
|
||||||
{ret= 0; goto ex;}
|
{ret= 0; goto ex;}
|
||||||
}
|
}
|
||||||
|
is_bdr_pow= burn_drive_get_bd_r_pow(drive);
|
||||||
|
if(is_bdr_pow) {
|
||||||
|
fprintf(stderr,
|
||||||
|
"cdrskin: FATAL : -msinfo cannot operate on POW formatted BD-R discs\n");
|
||||||
|
{ret= 0; goto ex;}
|
||||||
|
}
|
||||||
disc= burn_drive_get_disc(drive);
|
disc= burn_drive_get_disc(drive);
|
||||||
if(disc==NULL) {
|
if(disc==NULL) {
|
||||||
/* No TOC available. Try to inquire directly. */
|
/* No TOC available. Try to inquire directly. */
|
||||||
|
@ -1 +1 @@
|
|||||||
#define Cdrskin_timestamP "2017.02.06.141213"
|
#define Cdrskin_timestamP "2017.02.06.161439"
|
||||||
|
Loading…
Reference in New Issue
Block a user