New report line "Media blocks :" with option -toc
This commit is contained in:
parent
27c59a8f73
commit
adc3169e34
@ -800,7 +800,7 @@ int Xorriso_toc(struct XorrisO *xorriso, int flag)
|
||||
int track_count= 0, session_no, track_no, profile_no= -1, track_size;
|
||||
int last_track_start= 0, last_track_size= -1, num_data= 0, is_data= 0;
|
||||
int is_inout_drive= 0, drive_role, status, num_formats, emul_lba;
|
||||
int not_recognizable= 0;
|
||||
int not_recognizable= 0, start_lba, end_lba;
|
||||
char profile_name[80],*respt,*devadr, *typetext= "";
|
||||
struct burn_toc_entry toc_entry;
|
||||
struct burn_drive_info *dinfo;
|
||||
@ -816,6 +816,8 @@ int Xorriso_toc(struct XorrisO *xorriso, int flag)
|
||||
int image_blocks= 0;
|
||||
char volume_id[33];
|
||||
struct burn_toc_entry next_toc_entry;
|
||||
int disk_category, part_version, num_layers, num_blocks;
|
||||
char *book_name;
|
||||
/*
|
||||
int num_payload= 0, num_wasted= 0, num_nondata= 0;
|
||||
*/
|
||||
@ -842,7 +844,7 @@ int Xorriso_toc(struct XorrisO *xorriso, int flag)
|
||||
{ret= 1; goto ex;}
|
||||
sprintf(respt, "Drive type : vendor '%s' product '%s' revision '%s'\n",
|
||||
dinfo[0].vendor, dinfo[0].product, dinfo[0].revision);
|
||||
if((flag & 32) | !(flag & 1))
|
||||
if((flag & 32) || !(flag & 1))
|
||||
Xorriso_toc_line(xorriso, flag & 8);
|
||||
if(flag & 32)
|
||||
{ret= 1; goto ex;}
|
||||
@ -912,6 +914,59 @@ int Xorriso_toc(struct XorrisO *xorriso, int flag)
|
||||
strcat(respt, "\n");
|
||||
Xorriso_toc_line(xorriso, flag & 8);
|
||||
|
||||
if((s == BURN_DISC_FULL || s == BURN_DISC_APPENDABLE ||
|
||||
s == BURN_DISC_BLANK) && !(flag & 1)) {
|
||||
ret= burn_get_read_capacity(drive, &num_data, 0);
|
||||
if(ret != 1 || s == BURN_DISC_BLANK)
|
||||
num_data= 0;
|
||||
num_free= isoburn_disc_available_space(drive, NULL) / 2048;
|
||||
nwa= -1;
|
||||
if (s == BURN_DISC_APPENDABLE) {
|
||||
ret= isoburn_disc_track_lba_nwa(drive, NULL, 0, &lba, &nwa);
|
||||
if(ret <= 0)
|
||||
nwa= -1;
|
||||
} else if(s == BURN_DISC_BLANK) {
|
||||
ret= isoburn_disc_track_lba_nwa(drive, NULL, 0, &lba, &nwa);
|
||||
if(ret == 1) {
|
||||
num_free+= nwa;
|
||||
nwa= 0;
|
||||
}
|
||||
}
|
||||
lba= num_data + num_free;
|
||||
if(nwa >= 0) {
|
||||
lba= nwa + num_free;
|
||||
if(nwa < num_data)
|
||||
num_data= nwa;
|
||||
}
|
||||
|
||||
/* If closed CD-RW : obtain ATIP lead out address */
|
||||
if(profile_no == 0x0a) {
|
||||
ret= burn_disc_read_atip(drive);
|
||||
if(ret < 0)
|
||||
goto ex;
|
||||
ret= burn_drive_get_start_end_lba(drive, &start_lba, &end_lba, 0);
|
||||
if(s == BURN_DISC_FULL && ret == 1) {
|
||||
lba= end_lba - 2;
|
||||
} else {
|
||||
if(ret == 1 && end_lba - 2 > lba) {
|
||||
sprintf(xorriso->info_text,
|
||||
"ATIP end_lba %d > overall %d", end_lba, lba);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "WARNING", 0);
|
||||
}
|
||||
}
|
||||
} else if(profile_no == 0x14) {
|
||||
ret= burn_disc_get_phys_format_info(drive, &disk_category,
|
||||
&book_name, &part_version,
|
||||
&num_layers, &num_blocks, 0);
|
||||
if(ret == 1 && num_blocks > lba)
|
||||
lba= num_blocks;
|
||||
}
|
||||
|
||||
sprintf(respt, "Media blocks : %d readable , %d writable , %d overall\n",
|
||||
num_data, (int) num_free, lba);
|
||||
Xorriso_toc_line(xorriso, flag & 8);
|
||||
}
|
||||
|
||||
if(s == BURN_DISC_BLANK) {
|
||||
sprintf(respt, "Media summary: 0 sessions, 0 data blocks, 0 data");
|
||||
num_free= isoburn_disc_available_space(drive, NULL);
|
||||
@ -990,6 +1045,7 @@ int Xorriso_toc(struct XorrisO *xorriso, int flag)
|
||||
*/
|
||||
num_sessions= 1;
|
||||
} else {
|
||||
num_data= 0;
|
||||
sessions= isoburn_toc_disc_get_sessions(disc, &num_sessions);
|
||||
for (session_no= 0; session_no<num_sessions && !(xorriso->request_to_abort);
|
||||
session_no++) {
|
||||
|
@ -1218,3 +1218,19 @@ char *Xorriso__hide_mode_text(int hide_mode, int flag)
|
||||
return "invalid";
|
||||
}
|
||||
|
||||
|
||||
/* @return 0=truncated, 1=ok
|
||||
*/
|
||||
int Xorriso__to_upper(char *in, char *out, int out_size, int flag)
|
||||
{
|
||||
int i;
|
||||
|
||||
for(i= 0; i < out_size - 1 && in[i] != 0; i++)
|
||||
if(isalpha(in[i]))
|
||||
out[i]= toupper(in[i]);
|
||||
else
|
||||
out[i]= in[i];
|
||||
out[i]= 0;
|
||||
return(in[i] == 0);
|
||||
}
|
||||
|
||||
|
@ -1 +1 @@
|
||||
#define Xorriso_timestamP "2011.07.31.145832"
|
||||
#define Xorriso_timestamP "2011.08.01.130400"
|
||||
|
Loading…
Reference in New Issue
Block a user