summaryrefslogtreecommitdiffstats
path: root/src/main2.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/main2.c')
-rw-r--r--src/main2.c36
1 files changed, 19 insertions, 17 deletions
diff --git a/src/main2.c b/src/main2.c
index bb2c34e..558c30b 100644
--- a/src/main2.c
+++ b/src/main2.c
@@ -28,6 +28,7 @@
#include <fcntl.h>
#include <unistd.h>
+#include "global.h"
#include "image.h"
#include "fiasco2.h"
#include "device.h"
@@ -201,22 +202,22 @@ static void parse_image_arg(char * arg, struct image_list ** image_first) {
off_t len;
int fd = open(layout_file, O_RDONLY);
if ( fd < 0 ) {
- fprintf(stderr, "Cannot open layout file %s: %s\n", layout_file, strerror(errno));
+ ERROR(errno, "Cannot open layout file %s", layout_file);
exit(1);
}
len = lseek(fd, 0, SEEK_END);
if ( len == (off_t)-1 ) {
- fprintf(stderr, "Cannot get file size\n");
+ ERROR(errno, "Cannot get size of file %s", layout_file);
exit(1);
}
lseek(fd, 0, SEEK_SET);
layout = malloc(len);
if ( ! layout ) {
- fprintf(stderr, "Alloc error\n");
+ ALLOC_ERROR();
exit(1);
}
if ( read(fd, layout, len) != len ) {
- fprintf(stderr, "Cannot read layout file %s: %s\n", layout_file, strerror(errno));
+ ERROR(errno, "Cannot read %lu bytes from layout file %s", len, layout_file);
exit(1);
}
}
@@ -227,7 +228,7 @@ static void parse_image_arg(char * arg, struct image_list ** image_first) {
free(layout);
if ( ! image ) {
- fprintf(stderr, "Cannot load image file %s\n", file);
+ ERROR(0, "Cannot load image file %s", file);
exit(1);
}
@@ -331,10 +332,7 @@ int main(int argc, char **argv) {
while ( ( c = getopt(argc, argv, optstring) ) != -1 ) {
- switch(c) {
- case '?':
- fprintf(stderr, "error ?\n");
- break;
+ switch (c) {
case 'b':
dev_boot = 1;
dev_boot_arg = optarg;
@@ -460,8 +458,7 @@ int main(int argc, char **argv) {
break;
default:
- fprintf(stderr, "error c:%c\n", c);
- break;
+ return 1;
}
}
@@ -490,7 +487,7 @@ int main(int argc, char **argv) {
/* load images from files */
if ( image_first && image_fiasco ) {
- fprintf(stderr, "Cannot specify together normal images and fiasco images\n");
+ ERROR(0, "Cannot specify normal and fiasco images together");
ret = 1;
goto clean;
}
@@ -499,7 +496,7 @@ int main(int argc, char **argv) {
if ( image_fiasco ) {
fiasco_in = fiasco_alloc_from_file(image_fiasco_arg);
if ( ! fiasco_in )
- fprintf(stderr, "Cannot load fiasco image file %s\n", image_fiasco_arg);
+ ERROR(0, "Cannot load fiasco image file %s", image_fiasco_arg);
else
image_first = fiasco_in->first;
}
@@ -508,7 +505,7 @@ int main(int argc, char **argv) {
if ( filter_type ) {
enum image_type type = image_type_from_string(filter_type_arg);
if ( ! type ) {
- fprintf(stderr, "Unknown image type for filtering: %s\n", filter_type_arg);
+ ERROR(0, "Specified unknown image type for filtering: %s", filter_type_arg);
} else {
image_ptr = image_first;
while ( image_ptr ) {
@@ -527,7 +524,7 @@ int main(int argc, char **argv) {
if ( filter_device ) {
enum device device = device_from_string(filter_device_arg);
if ( ! device ) {
- fprintf(stderr, "Unknown device for filtering: %s\n", filter_device_arg);
+ ERROR(0, "Specified unknown device for filtering: %s", filter_device_arg);
} else {
image_ptr = image_first;
while ( image_ptr ) {
@@ -647,7 +644,7 @@ int main(int argc, char **argv) {
while ( image_ptr ) {
struct image_list * next = image_ptr->next;
if ( image_ptr->image->type == IMAGE_UNKNOWN || image_ptr->image->device == DEVICE_UNKNOWN ) {
- printf("!!Removing unknown image!!\n");
+ WARNING("Removing unknown image (specified by %s %s)", image_ptr->image->orig_filename ? "file" : "fiasco", image_ptr->image->orig_filename ? image_ptr->image->orig_filename : "image");
image_list_unlink(image_ptr);
free(image_ptr);
if ( image_ptr == image_first )
@@ -662,10 +659,15 @@ int main(int argc, char **argv) {
/* generate fiasco */
if ( fiasco_gen ) {
+ char * swver = strchr(fiasco_gen_arg, '%');
+ if ( swver )
+ *(swver++) = 0;
fiasco_out = fiasco_alloc_empty();
if ( ! fiasco_out ) {
- fprintf(stderr, "Cannot write images to fiasco file %s\n", fiasco_gen_arg);
+ ERROR(0, "Cannot write images to fiasco file %s", fiasco_gen_arg);
} else {
+ if ( swver )
+ strcpy(fiasco_out->swver, swver);
fiasco_out->first = image_first;
fiasco_write_to_file(fiasco_out, fiasco_gen_arg);
fiasco_out->first = NULL;