|
|
|
@ -15,6 +15,7 @@
|
|
|
|
|
|
|
|
|
|
#include <stdlib.h>
|
|
|
|
|
#include <string.h>
|
|
|
|
|
#include <limits.h>
|
|
|
|
|
|
|
|
|
|
int iso_file_src_cmp(const void *n1, const void *n2)
|
|
|
|
|
{
|
|
|
|
@ -243,7 +244,7 @@ int filesrc_writer_write_data(IsoImageWriter *writer)
|
|
|
|
|
Ecma119Image *t;
|
|
|
|
|
IsoFileSrc *file;
|
|
|
|
|
IsoFileSrc **filelist;
|
|
|
|
|
char *name;
|
|
|
|
|
char name[PATH_MAX];
|
|
|
|
|
char buffer[BLOCK_SIZE];
|
|
|
|
|
|
|
|
|
|
if (writer == NULL) {
|
|
|
|
@ -266,16 +267,15 @@ int filesrc_writer_write_data(IsoImageWriter *writer)
|
|
|
|
|
uint32_t nblocks = DIV_UP(iso_file_src_get_size(file), BLOCK_SIZE);
|
|
|
|
|
|
|
|
|
|
res = filesrc_open(file);
|
|
|
|
|
iso_stream_get_file_name(file->stream, name);
|
|
|
|
|
if (res < 0) {
|
|
|
|
|
/*
|
|
|
|
|
* UPS, very ugly error, the best we can do is just to write
|
|
|
|
|
* 0's to image
|
|
|
|
|
*/
|
|
|
|
|
name = iso_stream_get_name(file->stream);
|
|
|
|
|
iso_report_errfile(name, ISO_FILE_CANT_WRITE, 0, 0);
|
|
|
|
|
res = iso_msg_submit(t->image->id, ISO_FILE_CANT_WRITE, res,
|
|
|
|
|
"File \"%s\" can't be opened. Filling with 0s.", name);
|
|
|
|
|
free(name);
|
|
|
|
|
if (res < 0) {
|
|
|
|
|
return res; /* aborted due to error severity */
|
|
|
|
|
}
|
|
|
|
@ -289,12 +289,10 @@ int filesrc_writer_write_data(IsoImageWriter *writer)
|
|
|
|
|
}
|
|
|
|
|
continue;
|
|
|
|
|
} else if (res > 1) {
|
|
|
|
|
name = iso_stream_get_name(file->stream);
|
|
|
|
|
iso_report_errfile(name, ISO_FILE_CANT_WRITE, 0, 0);
|
|
|
|
|
res = iso_msg_submit(t->image->id, ISO_FILE_CANT_WRITE, 0,
|
|
|
|
|
"Size of file \"%s\" has changed. It will be %s", name,
|
|
|
|
|
(res == 2 ? "truncated" : "padded with 0's"));
|
|
|
|
|
free(name);
|
|
|
|
|
if (res < 0) {
|
|
|
|
|
filesrc_close(file);
|
|
|
|
|
return res; /* aborted due to error severity */
|
|
|
|
@ -302,9 +300,7 @@ int filesrc_writer_write_data(IsoImageWriter *writer)
|
|
|
|
|
}
|
|
|
|
|
#ifdef LIBISOFS_VERBOSE_DEBUG
|
|
|
|
|
else {
|
|
|
|
|
name = iso_stream_get_name(file->stream);
|
|
|
|
|
iso_msg_debug(t->image->id, "Writing file %s", name);
|
|
|
|
|
free(name);
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
@ -328,7 +324,6 @@ int filesrc_writer_write_data(IsoImageWriter *writer)
|
|
|
|
|
|
|
|
|
|
if (b < nblocks) {
|
|
|
|
|
/* premature end of file, due to error or eof */
|
|
|
|
|
char *name = iso_stream_get_name(file->stream);
|
|
|
|
|
iso_report_errfile(name, ISO_FILE_CANT_WRITE, 0, 0);
|
|
|
|
|
if (res < 0) {
|
|
|
|
|
/* error */
|
|
|
|
@ -339,7 +334,6 @@ int filesrc_writer_write_data(IsoImageWriter *writer)
|
|
|
|
|
res = iso_msg_submit(t->image->id, ISO_FILE_CANT_WRITE, 0,
|
|
|
|
|
"Premature end of file %s.", name);
|
|
|
|
|
}
|
|
|
|
|
free(name);
|
|
|
|
|
|
|
|
|
|
if (res < 0) {
|
|
|
|
|
return res; /* aborted due error severity */
|
|
|
|
|