Counting padding as part of the image with -as mkisofs
This commit is contained in:
parent
508adfd2f4
commit
65ca294357
@ -208,6 +208,7 @@ int Xorriso_new(struct XorrisO ** xorriso,char *progname, int flag)
|
|||||||
m->speed= 0;
|
m->speed= 0;
|
||||||
m->fs= 4*512; /* 4 MiB */
|
m->fs= 4*512; /* 4 MiB */
|
||||||
m->padding= 300*1024;
|
m->padding= 300*1024;
|
||||||
|
m->do_padding_by_libisofs= 0;
|
||||||
m->alignment= 0;
|
m->alignment= 0;
|
||||||
m->do_stream_recording= 0;
|
m->do_stream_recording= 0;
|
||||||
m->dvd_obs= 0;
|
m->dvd_obs= 0;
|
||||||
|
@ -1850,6 +1850,9 @@ problem_handler_boot:;
|
|||||||
was_failure= 1;
|
was_failure= 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(xorriso->no_emul_toc & 1)
|
||||||
|
xorriso->do_padding_by_libisofs= 1;
|
||||||
|
|
||||||
if(do_print_size) {
|
if(do_print_size) {
|
||||||
ret= Xorriso_option_print_size(xorriso, 1);
|
ret= Xorriso_option_print_size(xorriso, 1);
|
||||||
goto ex;
|
goto ex;
|
||||||
|
@ -98,7 +98,7 @@ int Xorriso_make_write_options(
|
|||||||
|
|
||||||
|
|
||||||
/* @param flag bit0= do not write but only prepare and return size in sectors
|
/* @param flag bit0= do not write but only prepare and return size in sectors
|
||||||
bit1= do not use isoburn wrappers
|
bit1= do not use isoburn wrappers, do not assume libisofs
|
||||||
*/
|
*/
|
||||||
int Xorriso_sanitize_image_size(struct XorrisO *xorriso,
|
int Xorriso_sanitize_image_size(struct XorrisO *xorriso,
|
||||||
struct burn_drive *drive, struct burn_disc *disc,
|
struct burn_drive *drive, struct burn_disc *disc,
|
||||||
@ -148,7 +148,6 @@ no_track:;
|
|||||||
sessions survive and confuse -rom_toc_scan.
|
sessions survive and confuse -rom_toc_scan.
|
||||||
*/
|
*/
|
||||||
xorriso->alignment= 32;
|
xorriso->alignment= 32;
|
||||||
|
|
||||||
s= isoburn_disc_get_status(drive);
|
s= isoburn_disc_get_status(drive);
|
||||||
if(s == BURN_DISC_BLANK) {
|
if(s == BURN_DISC_BLANK) {
|
||||||
/* Count blocks before nwa as part of the image */;
|
/* Count blocks before nwa as part of the image */;
|
||||||
@ -159,6 +158,19 @@ no_track:;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!(flag & 2)) {
|
||||||
|
|
||||||
|
#ifdef Xorriso_with_libjtE
|
||||||
|
/* JTE : no multi-session, no_emul_toc, padding in libisofs */
|
||||||
|
if(xorriso->libjte_handle != NULL)
|
||||||
|
padding= 0;
|
||||||
|
#endif /* ! Xorriso_with_libjtE */
|
||||||
|
|
||||||
|
if(xorriso->do_padding_by_libisofs)
|
||||||
|
padding= 0;
|
||||||
|
}
|
||||||
|
|
||||||
if(xorriso->alignment > 0) {
|
if(xorriso->alignment > 0) {
|
||||||
if(img_sectors > 0) {
|
if(img_sectors > 0) {
|
||||||
ret= isoburn_disc_track_lba_nwa(drive, burn_options, 0, &lba, &nwa);
|
ret= isoburn_disc_track_lba_nwa(drive, burn_options, 0, &lba, &nwa);
|
||||||
@ -167,15 +179,9 @@ no_track:;
|
|||||||
lba= (nwa + img_sectors + padding) % xorriso->alignment;
|
lba= (nwa + img_sectors + padding) % xorriso->alignment;
|
||||||
if(lba > 0)
|
if(lba > 0)
|
||||||
padding+= xorriso->alignment - lba;
|
padding+= xorriso->alignment - lba;
|
||||||
} else if(padding < xorriso->alignment)
|
}
|
||||||
padding= xorriso->alignment;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef Xorriso_with_libjtE
|
|
||||||
if(xorriso->libjte_handle != NULL)
|
|
||||||
padding= 0; /* JTE : no multi-session, no_emul_toc, padding in libisofs */
|
|
||||||
#endif /* ! Xorriso_with_libjtE */
|
|
||||||
|
|
||||||
burn_track_define_data(tracks[0], 0, padding * 2048, 0, BURN_MODE1);
|
burn_track_define_data(tracks[0], 0, padding * 2048, 0, BURN_MODE1);
|
||||||
Xorriso_process_msg_queues(xorriso,0);
|
Xorriso_process_msg_queues(xorriso,0);
|
||||||
|
|
||||||
@ -548,7 +554,7 @@ ex:;
|
|||||||
int Xorriso_write_session(struct XorrisO *xorriso, int flag)
|
int Xorriso_write_session(struct XorrisO *xorriso, int flag)
|
||||||
{
|
{
|
||||||
int ret, relax= 0, i, pacifier_speed= 0, data_lba, ext, is_bootable= 0;
|
int ret, relax= 0, i, pacifier_speed= 0, data_lba, ext, is_bootable= 0;
|
||||||
int freshly_bootable= 0, hide_attr;
|
int freshly_bootable= 0, hide_attr, pad_by_libisofs= 0;
|
||||||
char xorriso_id[256], *img_id, sfe[5*SfileadrL], *out_cs, *part_image;
|
char xorriso_id[256], *img_id, sfe[5*SfileadrL], *out_cs, *part_image;
|
||||||
struct isoburn_imgen_opts *sopts= NULL;
|
struct isoburn_imgen_opts *sopts= NULL;
|
||||||
struct burn_drive_info *dinfo, *source_dinfo;
|
struct burn_drive_info *dinfo, *source_dinfo;
|
||||||
@ -565,6 +571,7 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
|
|||||||
int profile_number;
|
int profile_number;
|
||||||
char profile_name[80];
|
char profile_name[80];
|
||||||
IsoBoot *bootcat_node;
|
IsoBoot *bootcat_node;
|
||||||
|
uint32_t padding;
|
||||||
|
|
||||||
ret= Xorriso_finish_hl_update(xorriso, 0);
|
ret= Xorriso_finish_hl_update(xorriso, 0);
|
||||||
if(ret <= 0)
|
if(ret <= 0)
|
||||||
@ -809,12 +816,22 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
|
|||||||
if(ret <= 0)
|
if(ret <= 0)
|
||||||
goto ex;
|
goto ex;
|
||||||
isoburn_igopt_attach_jte(sopts, xorriso->libjte_handle);
|
isoburn_igopt_attach_jte(sopts, xorriso->libjte_handle);
|
||||||
|
pad_by_libisofs= 1;
|
||||||
/* Padding to be done by libisofs, not by libburn */
|
|
||||||
isoburn_igopt_set_tail_blocks(sopts, (uint32_t) (xorriso->padding / 2048));
|
|
||||||
}
|
}
|
||||||
#endif /* Xorriso_with_libjtE */
|
#endif /* Xorriso_with_libjtE */
|
||||||
|
|
||||||
|
if(xorriso->do_padding_by_libisofs || pad_by_libisofs) {
|
||||||
|
/* Padding to be done by libisofs, not by libburn.
|
||||||
|
*/
|
||||||
|
padding= xorriso->padding / 2048;
|
||||||
|
if(xorriso->padding > padding * 2048)
|
||||||
|
padding++;
|
||||||
|
/*
|
||||||
|
fprintf(stderr, "XORRISO_DEBUG: isoburn_igopt_set_tail_blocks(%d)\n",
|
||||||
|
(int) padding);
|
||||||
|
*/
|
||||||
|
isoburn_igopt_set_tail_blocks(sopts, padding / 2048);
|
||||||
|
}
|
||||||
|
|
||||||
/* Make final abort check before starting expensive activities */
|
/* Make final abort check before starting expensive activities */
|
||||||
ret= Xorriso_eval_problem_status(xorriso, 1, 0);
|
ret= Xorriso_eval_problem_status(xorriso, 1, 0);
|
||||||
@ -2159,7 +2176,6 @@ int Xorriso_set_isolinux_options(struct XorrisO *xorriso,
|
|||||||
if(make_isohybrid_mbr) {
|
if(make_isohybrid_mbr) {
|
||||||
sprintf(xorriso->info_text, "Will write isohybrid MBR.");
|
sprintf(xorriso->info_text, "Will write isohybrid MBR.");
|
||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
|
||||||
xorriso->alignment= 512;
|
|
||||||
}
|
}
|
||||||
ret= el_torito_set_isolinux_options(bootimg,
|
ret= el_torito_set_isolinux_options(bootimg,
|
||||||
patch_table | (make_isohybrid_mbr << 1),0);
|
patch_table | (make_isohybrid_mbr << 1),0);
|
||||||
|
@ -295,10 +295,13 @@ struct XorrisO { /* the global context of xorriso */
|
|||||||
int speed; /* in libburn units : 1000 bytes/second , 0 = Max, -1 = Min */
|
int speed; /* in libburn units : 1000 bytes/second , 0 = Max, -1 = Min */
|
||||||
int fs; /* fifo size in 2048 byte chunks : at most 1 GB */
|
int fs; /* fifo size in 2048 byte chunks : at most 1 GB */
|
||||||
int padding; /* number of bytes to add after ISO 9660 image */
|
int padding; /* number of bytes to add after ISO 9660 image */
|
||||||
|
int do_padding_by_libisofs; /* 0= by libburn , 1= by libisofs */
|
||||||
|
|
||||||
int alignment; /* if > 0 : image size alignment in 2048 byt blocks */
|
int alignment; /* if > 0 : output size alignment in 2048 byte blocks.
|
||||||
/* <<< not sure whether to keep this after libisofs will have
|
This is always done by libburn, i.e. attached
|
||||||
learned to pad up MBR images to full MB */
|
outside the image. Eventual inner alignment of
|
||||||
|
the image end happens first.
|
||||||
|
*/
|
||||||
|
|
||||||
int do_stream_recording; /* 0=no, 1=yes, 2=for data, not for dir
|
int do_stream_recording; /* 0=no, 1=yes, 2=for data, not for dir
|
||||||
>=16 means yes with number as start LBA */
|
>=16 means yes with number as start LBA */
|
||||||
|
@ -1 +1 @@
|
|||||||
#define Xorriso_timestamP "2011.03.01.152159"
|
#define Xorriso_timestamP "2011.03.02.093009"
|
||||||
|
Loading…
Reference in New Issue
Block a user