Ended the special out-of-loop handling of eltorito_writer_compute_data_blocks()
This commit is contained in:
parent
2d3bbe51ed
commit
27277914c6
@ -2184,10 +2184,6 @@ int ecma119_image_new(IsoImage *src, IsoWriteOpts *opts, Ecma119Image **img)
|
||||
for (i = 0; i < (int) target->nwriters; ++i) {
|
||||
IsoImageWriter *writer = target->writers[i];
|
||||
|
||||
/* Delaying boot image patching until new LBA is known */
|
||||
if (i == el_torito_writer_index)
|
||||
continue;
|
||||
|
||||
/* Exposing address of data start to IsoWriteOpts and memorizing
|
||||
this address for all files which have no block address:
|
||||
symbolic links, device files, empty data files.
|
||||
@ -2206,14 +2202,9 @@ int ecma119_image_new(IsoImage *src, IsoWriteOpts *opts, Ecma119Image **img)
|
||||
}
|
||||
}
|
||||
|
||||
/* Now perform delayed image patching and System Area preparations */
|
||||
if (el_torito_writer_index >= 0) {
|
||||
IsoImageWriter *writer = target->writers[el_torito_writer_index];
|
||||
ret = writer->compute_data_blocks(writer);
|
||||
if (ret < 0) {
|
||||
ret = iso_patch_eltoritos(target);
|
||||
if (ret < 0)
|
||||
goto target_cleanup;
|
||||
}
|
||||
}
|
||||
if (((target->system_area_options & 0xfc) >> 2) == 2) {
|
||||
ret = iso_read_mipsel_elf(target, 0);
|
||||
if (ret < 0)
|
||||
|
@ -1102,7 +1102,8 @@ int make_boot_info_table(uint8_t *buf, uint32_t pvd_lba,
|
||||
* 1 on success, 0 error (but continue), < 0 error
|
||||
*/
|
||||
static
|
||||
int patch_boot_image(uint8_t *buf, Ecma119Image *t, size_t imgsize, int idx)
|
||||
int patch_boot_info_table(uint8_t *buf, Ecma119Image *t,
|
||||
size_t imgsize, int idx)
|
||||
{
|
||||
int ret;
|
||||
|
||||
@ -1116,27 +1117,15 @@ int patch_boot_image(uint8_t *buf, Ecma119Image *t, size_t imgsize, int idx)
|
||||
return ret;
|
||||
}
|
||||
|
||||
static
|
||||
int eltorito_writer_compute_data_blocks(IsoImageWriter *writer)
|
||||
/* Patch the boot images if indicated */
|
||||
int iso_patch_eltoritos(Ecma119Image *t)
|
||||
{
|
||||
/*
|
||||
* We have nothing to write, but if we need to patch an isolinux image,
|
||||
* this is a good place to do so.
|
||||
*/
|
||||
Ecma119Image *t;
|
||||
int ret, idx;
|
||||
size_t size;
|
||||
uint8_t *buf;
|
||||
IsoStream *new = NULL;
|
||||
IsoStream *original = NULL;
|
||||
|
||||
if (writer == NULL) {
|
||||
return ISO_NULL_POINTER;
|
||||
}
|
||||
|
||||
t = writer->target;
|
||||
|
||||
/* Patch the boot image info tables if indicated */
|
||||
for (idx = 0; idx < t->catalog->num_bootimages; idx++) {
|
||||
if (!(t->catalog->bootimages[idx]->isolinux_options & 0x01))
|
||||
continue;
|
||||
@ -1162,7 +1151,7 @@ int eltorito_writer_compute_data_blocks(IsoImageWriter *writer)
|
||||
}
|
||||
|
||||
/* ok, patch the read buffer */
|
||||
ret = patch_boot_image(buf, t, size, idx);
|
||||
ret = patch_boot_info_table(buf, t, size, idx);
|
||||
if (ret < 0) {
|
||||
return ret;
|
||||
}
|
||||
@ -1179,6 +1168,16 @@ int eltorito_writer_compute_data_blocks(IsoImageWriter *writer)
|
||||
return ISO_SUCCESS;
|
||||
}
|
||||
|
||||
static
|
||||
int eltorito_writer_compute_data_blocks(IsoImageWriter *writer)
|
||||
{
|
||||
/*
|
||||
* We have nothing to write.
|
||||
*/
|
||||
return ISO_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Write the Boot Record Volume Descriptor (ECMA-119, 8.2)
|
||||
*/
|
||||
|
@ -151,5 +151,8 @@ int eltorito_writer_create(Ecma119Image *target);
|
||||
int make_boot_info_table(uint8_t *buf, uint32_t pvd_lba,
|
||||
uint32_t boot_lba, uint32_t imgsize);
|
||||
|
||||
/* Patch the boot images if indicated.
|
||||
*/
|
||||
int iso_patch_eltoritos(Ecma119Image *t);
|
||||
|
||||
#endif /* LIBISO_ELTORITO_H */
|
||||
|
Loading…
Reference in New Issue
Block a user