tools: firmware-utils: fix compiler warnings
[openwrt/openwrt.git] / tools / firmware-utils / src / imagetag.c
index c15ffd72d6f73fbc5f157786308326326e6cb758..6a46a7ebd995a95822ffa7acc63f668e95b9e6e0 100644 (file)
@@ -15,6 +15,7 @@
 #include <unistd.h>
 #include <sys/stat.h>
 #include <netinet/in.h>
+#include <inttypes.h>
 
 #include "bcm_tag.h"
 #include "imagetag_cmdline.h"
@@ -83,7 +84,8 @@ int tagfile(const char *kernel, const char *rootfs, const char *bin, \
        struct kernelhdr khdr;
        FILE *kernelfile = NULL, *rootfsfile = NULL, *binfile = NULL, *cfefile = NULL;
        size_t cfeoff, cfelen, kerneloff, kernellen, rootfsoff, rootfslen, \
-         read, imagelen, rootfsoffpadlen = 0, kernelfslen, kerneloffpadlen = 0, oldrootfslen;
+         read, imagelen, rootfsoffpadlen = 0, kernelfslen, kerneloffpadlen = 0, oldrootfslen, \
+         rootfsend;
        uint8_t readbuf[1024];
        uint32_t imagecrc = IMAGETAG_CRC_START;
        uint32_t kernelcrc = IMAGETAG_CRC_START;
@@ -157,11 +159,17 @@ int tagfile(const char *kernel, const char *rootfs, const char *bin, \
                kernellen += sizeof(khdr);        
          }
          
-         /* Build the rootfs address and length (start and end do need to be aligned on flash erase block boundaries */
+         /* Build the rootfs address and length */
          rootfsoff = kerneloff + kernellen;
-         rootfsoff = (rootfsoff % block_size) > 0 ? (((rootfsoff / block_size) + 1) * block_size) : rootfsoff;
-         rootfslen = getlen(rootfsfile);
-         rootfslen = ( (rootfslen % block_size) > 0 ? (((rootfslen / block_size) + 1) * block_size) : rootfslen );
+         /* align the start if requested */
+         if (args->align_rootfs_flag)
+               rootfsoff = (rootfsoff % block_size) > 0 ? (((rootfsoff / block_size) + 1) * block_size) : rootfsoff;
+
+         /* align the end */
+         rootfsend = rootfsoff + getlen(rootfsfile);
+         if ((rootfsend % block_size) > 0)
+               rootfsend = (((rootfsend / block_size) + 1) * block_size);
+         rootfslen = rootfsend - rootfsoff;
          imagelen = rootfsoff + rootfslen - kerneloff + sizeof(deadcode);
          rootfsoffpadlen = rootfsoff - (kerneloff + kernellen);
          
@@ -297,7 +305,7 @@ int tagfile(const char *kernel, const char *rootfs, const char *bin, \
        sprintf(tag.totalLength, "%lu", imagelen);
 
        if (args->cfe_given) {
-         sprintf(tag.cfeAddress, "%lu", flash_start);
+         sprintf(tag.cfeAddress, "%" PRIu32, flash_start);
          sprintf(tag.cfeLength, "%lu", cfelen);
        } else {
          /* We don't include CFE */
@@ -338,7 +346,7 @@ int tagfile(const char *kernel, const char *rootfs, const char *bin, \
        }
 
        if (args->altinfo_given) {
-         strncpy(&tag.information1[0], args->altinfo_arg, ALTTAGINFO_LEN);
+         strncpy(tag.information1, args->altinfo_arg, TAGINFO1_LEN);
        }
 
        if (args->second_image_flag_given) {
@@ -390,7 +398,7 @@ int main(int argc, char **argv)
 
        kernel = rootfs = bin = NULL;
 
-       if (cmdline_parser(argc, argv, &parsed_args)) {
+       if (imagetag_cmdline(argc, argv, &parsed_args)) {
          exit(1);
        }