Corrected strange behavior with non-ISO images on overwriteable media

This commit is contained in:
2008-05-13 13:52:33 +00:00
parent ab7591f04b
commit b450b1d249
7 changed files with 38 additions and 18 deletions

View File

@ -184,7 +184,8 @@ Closed is the state of DVD-ROM media and of multi-session media which were
written with option -close on. If the drive is incapable of writing it will
probably show any media as closed CD-ROM resp. DVD-ROM.
.br
Overwriteable media assume this state only in such read-only drives.
Overwriteable media assume this state in such read-only drives or if they
contain unrecognizable data in the first 32 data blocks.
.br
\fBRead-only\fR drives may or may not show session histories of multi-session
media. Often only the first and the last session are visible. Sometimes

View File

@ -1 +1 @@
#define Xorriso_timestamP "2008.05.13.115901"
#define Xorriso_timestamP "2008.05.13.135251"

View File

@ -928,7 +928,7 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
"-indev differs from -outdev and -outdev media is not blank");
else
sprintf(xorriso->info_text,
"-indev differs from -outdev and -outdev media holds valid ISO image");
"-indev differs from -outdev and -outdev media holds non-zero data");
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
{ret= 0; goto ex;}
}
@ -2260,7 +2260,7 @@ int Xorriso_toc(struct XorrisO *xorriso, int flag)
int num_sessions= 0, num_tracks= 0, lba= 0, nwa= -1, pmin, psec, pframe, ret;
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;
int is_inout_drive= 0, drive_role, status, num_formats;
int num_payload= 0, num_wasted= 0, num_nondata= 0;
char profile_name[80],*respt,*devadr;
struct burn_toc_entry toc_entry;
@ -2268,7 +2268,8 @@ int Xorriso_toc(struct XorrisO *xorriso, int flag)
struct burn_drive *drive;
enum burn_disc_status s;
char mem_text[80];
off_t start_byte= 0, num_free= 0;
off_t start_byte= 0, num_free= 0, size;
unsigned dummy;
#ifdef Xorriso_use_isoburn_toC
struct isoburn_toc_disc *disc= NULL;
@ -2385,6 +2386,11 @@ int Xorriso_toc(struct XorrisO *xorriso, int flag)
sprintf(respt, "ISO session : %3d , %9d , %9ds , %s\n",
1, 0, image_blocks, volume_id);
} else {
nwa= 0;
ret= burn_disc_get_formats(drive, &status, &size, &dummy,
&num_formats);
if(ret>0 && status==BURN_FORMAT_IS_FORMATTED)
nwa= size/2048;
sprintf(respt, "Other session: %3d , %9d , %9ds , \n",
1, 0, nwa);
}