diff --git a/libisoburn/trunk/src/isofs_wrap.c b/libisoburn/trunk/src/isofs_wrap.c index 0a832bf8..e282a877 100644 --- a/libisoburn/trunk/src/isofs_wrap.c +++ b/libisoburn/trunk/src/isofs_wrap.c @@ -240,8 +240,19 @@ int isoburn_start_emulation(struct isoburn *o, int flag) isoburn_set_start_byte(o, (off_t) 0, 0); o->fabricated_disc_status= BURN_DISC_BLANK; } else { - // TODO for now I treat this as a full disc - o->fabricated_disc_status= BURN_DISC_FULL; + int i; + + /* check first 64K. If 0's, the disc is treated as a blank disc, and thus + overwritten without extra check. If not, the disc is treated as full, + and user needs to isoburn_disc_erase() it before burn it again */ + i = sizeof(o->target_iso_head); + while (i && !o->target_iso_head[i-1]) + --i; + + if (i) + o->fabricated_disc_status= BURN_DISC_FULL; + else + o->fabricated_disc_status= BURN_DISC_BLANK; } return 1; }