Added pack-flag -p
authorkmh <kmh@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Thu, 1 Feb 2001 11:29:42 +0000 (11:29 +0000)
committerkmh <kmh@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Thu, 1 Feb 2001 11:29:42 +0000 (11:29 +0000)
git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@553 4a8a32a2-be11-0410-ad9d-d568d2c75423

support/makebin/makebin.c

index f650b3d2e4e793df5a2bbd9ad1dcbd2828fd99ee..c44c6c079ec6576660e058f5af7652ac286f3f5a 100644 (file)
@@ -25,20 +25,25 @@ int getbyte(char **p)
 int main(int argc, char **argv)
 {
     int opt;
-    int size = 32768;
+    int size = 32768, pack = 0, real_size = 0;
     BYTE *rom;
     char line[256];
     char *p;
 
-    while ((opt = getopt(argc, argv, "s:h"))!=-1) {
+    while ((opt = getopt(argc, argv, "ps:h"))!=-1) {
        switch (opt) {
        case 's':
            size = atoi(optarg);
            break;
        case 'h':
            printf("makebin: convert a Intel IHX file to binary.\n"
-                  "Usage: %s [-s romsize] [-h]\n", argv[0]);
+                  "Usage: %s [-p] [-s romsize] [-h]\n", argv[0]);
            return 0;
+       case 'p':
+           pack = 1;
+           break;
+       default:
+           return 1;
        }
     }
     rom = malloc(size);
@@ -64,7 +69,15 @@ int main(int argc, char **argv)
            if (addr < size)
                rom[addr++] = getbyte(&p);
        }
+
+       if (addr > real_size)
+           real_size = addr;
     }
-    fwrite(rom, 1, size, stdout);
+
+    if (pack)
+        fwrite(rom, 1, real_size, stdout);
+    else
+        fwrite(rom, 1, size, stdout);
+    
     return 0;
 }