fix return value checks of cbfstool's writerom
authorStefan Reinauer <stepan@coresystems.de>
Thu, 24 Jun 2010 13:37:59 +0000 (13:37 +0000)
committerStefan Reinauer <stepan@openbios.org>
Thu, 24 Jun 2010 13:37:59 +0000 (13:37 +0000)
Signed-off-by: Stefan Reinauer <stepan@coresystems.de>
Acked-by: Stefan Reinauer <stepan@coresystems.de>
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@5644 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1

util/cbfstool/cbfstool.c
util/cbfstool/common.c
util/cbfstool/common.h

index 1d8b7c6b744f8e90abb71b510da214e592b27b65..4c3a8c925e5e6259c5abc1018d2d54dbfe873e95 100644 (file)
@@ -83,7 +83,8 @@ static int cbfs_add(int argc, char **argv)
        cbfsfile = create_cbfs_file(cbfsname, filedata, &filesize, type, &base);
        if (add_file_to_cbfs(cbfsfile, filesize, base))
                return 1;
-       writerom(romname, rom, romsize);
+       if (writerom(romname, rom, romsize))
+               return 1;
        return 0;
 }
 
@@ -131,7 +132,8 @@ static int cbfs_add_payload(int argc, char **argv)
                             CBFS_COMPONENT_PAYLOAD, &base);
        if (add_file_to_cbfs(cbfsfile, filesize, base))
                return 1;
-       writerom(romname, rom, romsize);
+       if (writerom(romname, rom, romsize))
+               return 1;
        return 0;
 }
 
@@ -180,7 +182,8 @@ static int cbfs_add_stage(int argc, char **argv)
 
        if (add_file_to_cbfs(cbfsfile, filesize, base))
                return 1;
-       writerom(romname, rom, romsize);
+       if (writerom(romname, rom, romsize))
+               return 1;
        return 0;
 }
 
index b071864b5c81923f9ed4772722e76976f7d2bc95..8478c5a492cc69005dc6acdc593db6fc9f4609ef 100644 (file)
@@ -90,11 +90,23 @@ void *loadrom(const char *filename)
        return romarea;
 }
 
-void writerom(const char *filename, void *start, uint32_t size)
+int writerom(const char *filename, void *start, uint32_t size)
 {
        FILE *file = fopen(filename, "wb");
-       fwrite(start, size, 1, file);
+       if (!file) {
+               fprintf(stderr, "Could not open '%s' for writing: ", filename);
+               perror("");
+               return 1;
+       }
+
+       if (fwrite(start, size, 1, file) != 1) {
+               fprintf(stderr, "Could not write to '%s': ", filename);
+               perror("");
+               return 1;
+       }
+
        fclose(file);
+       return 0;
 }
 
 int cbfs_file_header(uint32_t physaddr)
index eaf5e71f60d297656bd55b7346bf2eb141bf0588..8d1b4d845d2142f9adbee8352b58f05de1048697 100644 (file)
@@ -44,7 +44,7 @@ uint32_t getfilesize(const char *filename);
 void *loadfile(const char *filename, uint32_t * romsize_p, void *content,
               int place);
 void *loadrom(const char *filename);
-void writerom(const char *filename, void *start, uint32_t size);
+int writerom(const char *filename, void *start, uint32_t size);
 
 int iself(unsigned char *input);