diff --git a/libisoburn/burn_wrap.c b/libisoburn/burn_wrap.c index 08f02bc1..6e3143f9 100644 --- a/libisoburn/burn_wrap.c +++ b/libisoburn/burn_wrap.c @@ -1305,6 +1305,8 @@ int isoburn_emulate_toc(struct burn_drive *d, int flag) else readable_blocks= -1; } + if(o->fabricated_disc_status == BURN_DISC_BLANK) + {ret= 0; goto failure;} start_time= last_pacifier= time(NULL); lba= 0; diff --git a/libisoburn/isofs_wrap.c b/libisoburn/isofs_wrap.c index 90639ff4..61b6fe28 100644 --- a/libisoburn/isofs_wrap.c +++ b/libisoburn/isofs_wrap.c @@ -449,6 +449,7 @@ int isoburn_start_emulation(struct isoburn *o, int flag) struct burn_drive *drive; struct ecma119_pri_vol_desc *pvm; enum burn_disc_status s; + char path[BURN_DRIVE_ADR_LEN], msg[2 * BURN_DRIVE_ADR_LEN]; if(o==NULL) { isoburn_msgs_submit(NULL, 0x00060000, @@ -482,10 +483,16 @@ int isoburn_start_emulation(struct isoburn *o, int flag) if(capacity > 0 && (off_t) capacity * (off_t) 2048 < to_read) to_read = (off_t) capacity * (off_t) 2048; ret = burn_read_data(drive, (off_t) 0, (char*)o->target_iso_head, - to_read, &data_count, 2); + to_read, &data_count, 2 | 8); if (ret <= 0) { /* an error means a disc with no ISO image */ - if (capacity > 0) + if (ret == -2) { + path[0]= 0; + burn_drive_d_get_adr(drive, path); + sprintf(msg, "Pseudo drive '%s' does not allow reading", path); + isoburn_msgs_submit(NULL, 0x00060000, msg, 0, "NOTE", 0); + o->fabricated_disc_status= BURN_DISC_BLANK; + } else if (capacity > 0) o->fabricated_disc_status= BURN_DISC_FULL; else if(!(flag & 1)) o->fabricated_disc_status= BURN_DISC_BLANK; diff --git a/xorriso/xorriso_timestamp.h b/xorriso/xorriso_timestamp.h index a452c8bd..528d4cb0 100644 --- a/xorriso/xorriso_timestamp.h +++ b/xorriso/xorriso_timestamp.h @@ -1 +1 @@ -#define Xorriso_timestamP "2011.03.22.081408" +#define Xorriso_timestamP "2011.03.24.182518"