Implemented support for eltorito on MS discs
This commit is contained in:
@ -119,10 +119,14 @@ int main(int argc, char **argv)
|
||||
if (!img) {
|
||||
err(1, "boot image patch is not valid");
|
||||
}
|
||||
bootimg = iso_volume_create_boot_catalog(volume, img, ELTORITO_NO_EMUL,
|
||||
bootimg = iso_volume_set_boot_image(volume, img, ELTORITO_NO_EMUL,
|
||||
boot, "boot.cat");
|
||||
el_torito_set_load_size(bootimg, 4);
|
||||
el_torito_set_write_boot_info(bootimg);
|
||||
el_torito_patch_isolinux_image(bootimg);
|
||||
|
||||
/* Or just this for hidden img
|
||||
* iso_volume_set_boot_image_hidden(volume, boot_img, ELTORITO_NO_EMUL);
|
||||
*/
|
||||
}
|
||||
|
||||
volset = iso_volset_new( volume, "VOLSETID" );
|
||||
@ -138,8 +142,8 @@ int main(int argc, char **argv)
|
||||
memset(&opts, 0, sizeof(struct ecma119_source_opts));
|
||||
opts.level = level;
|
||||
opts.flags = flags;
|
||||
opts.relaxed_constraints = 0;//constraints;
|
||||
opts.input_charset = NULL;//"UTF-8";
|
||||
opts.relaxed_constraints = 0;
|
||||
opts.input_charset = NULL;
|
||||
opts.ouput_charset = "UTF-8";
|
||||
|
||||
src = iso_source_new_ecma119(volset, &opts);
|
||||
|
@ -165,8 +165,9 @@ int main(int argc, char **argv)
|
||||
wopts.relaxed_constraints = 0;
|
||||
wopts.input_charset = "UTF-8";
|
||||
wopts.ouput_charset = "UTF-8";
|
||||
wopts.ms_block = ropts.size;
|
||||
wopts.overwrite = malloc(32*2048);
|
||||
/* round up to 32kb aligment = 16 block*/
|
||||
wopts.ms_block = ((ropts.size + 15) / 16 ) * 16;
|
||||
wopts.overwrite = calloc(32, 2048);
|
||||
|
||||
wsrc = iso_source_new_ecma119(volset, &wopts);
|
||||
|
||||
@ -193,7 +194,7 @@ int main(int argc, char **argv)
|
||||
burn_write_opts_set_underrun_proof(burn_options, 1);
|
||||
|
||||
//mmm, check for 32K alignment?
|
||||
burn_write_opts_set_start_byte(burn_options, ropts.size * 2048);
|
||||
burn_write_opts_set_start_byte(burn_options, wopts.ms_block * 2048);
|
||||
|
||||
if (burn_write_opts_auto_write_type(burn_options, target_disc,
|
||||
reasons, 0) == BURN_WRITE_NONE) {
|
||||
|
@ -64,11 +64,30 @@ print_dir(struct iso_tree_node_dir *dir, int level)
|
||||
print_permissions(iso_tree_node_get_permissions(node));
|
||||
printf(" %s -> %s \n", iso_tree_node_get_name(node),
|
||||
iso_tree_node_symlink_get_dest((struct iso_tree_node_symlink*)node) );
|
||||
}
|
||||
} else {
|
||||
/* boot catalog */
|
||||
printf("%s-[C] ", sp);
|
||||
print_permissions(iso_tree_node_get_permissions(node));
|
||||
printf(" %s\n", iso_tree_node_get_name(node) );
|
||||
}
|
||||
}
|
||||
iso_tree_iter_free(iter);
|
||||
}
|
||||
|
||||
static void
|
||||
check_el_torito(struct iso_volume *volume)
|
||||
{
|
||||
struct iso_tree_node *cat, *img;
|
||||
|
||||
if (iso_volume_get_boot_image(volume, &img, &cat)) {
|
||||
|
||||
printf("\nEL-TORITO INFORMATION\n");
|
||||
printf("=====================\n\n");
|
||||
printf("Catalog: %s\n", iso_tree_node_get_name(cat) );
|
||||
printf("Image: %s\n", iso_tree_node_get_name(img) );
|
||||
}
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
struct ecma119_read_opts opts;
|
||||
@ -131,6 +150,8 @@ int main(int argc, char **argv)
|
||||
|
||||
print_dir(iso_volume_get_root(volume), 0);
|
||||
|
||||
check_el_torito(volume);
|
||||
|
||||
printf("\n\n");
|
||||
|
||||
data_source_free(src);
|
||||
|
Reference in New Issue
Block a user