hdparm: shrink rodata by ~250 bytes
authorvda <vda@69ca8d6d-28ef-0310-b511-8ec308f3f277>
Thu, 16 Aug 2007 10:37:49 +0000 (10:37 +0000)
committervda <vda@69ca8d6d-28ef-0310-b511-8ec308f3f277>
Thu, 16 Aug 2007 10:37:49 +0000 (10:37 +0000)
git-svn-id: svn://busybox.net/trunk/busybox@19526 69ca8d6d-28ef-0310-b511-8ec308f3f277

coreutils/dos2unix.c
libbb/getopt32.c
miscutils/hdparm.c

index 00688aa..1bfdf0c 100644 (file)
@@ -91,7 +91,7 @@ int dos2unix_main(int argc, char **argv)
        }
 
        /* -u convert to unix, -d convert to dos */
-       opt_complementary = "u--d:d--u"; /* mutally exclusive */
+       opt_complementary = "u--d:d--u"; /* mutually exclusive */
        o = getopt32(argc, argv, "du");
 
        /* Do the conversion requested by an argument else do the default
index c099569..3e1299f 100644 (file)
@@ -211,7 +211,7 @@ Special characters:
 
         For example:
         The cut applet must have only one type of list specified, so
-        -b, -c and -f are mutally exclusive and should raise an error
+        -b, -c and -f are mutually exclusive and should raise an error
         if specified together.  In this case you must set
         opt_complementary = "b--cf:c--bf:f--bc".  If two of the
         mutually exclusive options are found, getopt32 will call
index c47cc4e..b3c2408 100644 (file)
@@ -1416,62 +1416,33 @@ static void interpret_standby(unsigned standby)
        printf(")\n");
 }
 
-struct xfermode_entry {
-       int val;
-       const char *name;
+static const uint8_t xfermode_val[] ALIGN1 = {
+        8,      9,     10,     11,     12,     13,     14,     15,
+       16,     17,     18,     19,     20,     21,     22,     23,
+       32,     33,     34,     35,     36,     37,     38,     39,
+       64,     65,     66,     67,     68,     69,     70,     71
 };
-
-static const struct xfermode_entry xfermode_table[] = {
-       { 8,    "pio0" },
-       { 9,    "pio1" },
-       { 10,   "pio2" },
-       { 11,   "pio3" },
-       { 12,   "pio4" },
-       { 13,   "pio5" },
-       { 14,   "pio6" },
-       { 15,   "pio7" },
-       { 16,   "sdma0" },
-       { 17,   "sdma1" },
-       { 18,   "sdma2" },
-       { 19,   "sdma3" },
-       { 20,   "sdma4" },
-       { 21,   "sdma5" },
-       { 22,   "sdma6" },
-       { 23,   "sdma7" },
-       { 32,   "mdma0" },
-       { 33,   "mdma1" },
-       { 34,   "mdma2" },
-       { 35,   "mdma3" },
-       { 36,   "mdma4" },
-       { 37,   "mdma5" },
-       { 38,   "mdma6" },
-       { 39,   "mdma7" },
-       { 64,   "udma0" },
-       { 65,   "udma1" },
-       { 66,   "udma2" },
-       { 67,   "udma3" },
-       { 68,   "udma4" },
-       { 69,   "udma5" },
-       { 70,   "udma6" },
-       { 71,   "udma7" },
-       { 0, NULL }
+/* NB: we save size by _not_ storing terninating NUL! */
+static const char xfermode_name[][5] ALIGN1 = {
+       "pio0", "pio1", "pio2", "pio3", "pio4", "pio5", "pio6", "pio7",
+       "sdma0","sdma1","sdma2","sdma3","sdma4","sdma5","sdma6","sdma7",
+       "mdma0","mdma1","mdma2","mdma3","mdma4","mdma5","mdma6","mdma7",
+       "udma0","udma1","udma2","udma3","udma4","udma5","udma6","udma7"
 };
 
-static int translate_xfermode(char * name)
+static int translate_xfermode(const char *name)
 {
-       const struct xfermode_entry *tmp;
-       char *endptr;
-       int val = -1;
+       int val, i;
 
-       for (tmp = xfermode_table; tmp->name != NULL; ++tmp) {
-               if (!strcmp(name, tmp->name))
-                       return tmp->val;
+       for (i = 0; i < ARRAY_SIZE(xfermode_val); i++) {
+               if (!strncmp(name, xfermode_name[i], 5))
+                       if (strlen(name) <= 5)
+                               return xfermode_val[i];
        }
-
-       val = strtol(name, &endptr, 10);
-       if (*endptr == '\0')
+       /* Negative numbers are invalid and are caught later */
+       val = bb_strtoi(name, NULL, 10);
+       if (!errno)
                return val;
-
        return -1;
 }
 
@@ -1483,13 +1454,13 @@ static void interpret_xfermode(unsigned xfermode)
        else if (xfermode == 1)
                printf("default PIO mode, disable IORDY");
        else if (xfermode >= 8 && xfermode <= 15)
-               printf("PIO flow control mode%u", xfermode-8);
+               printf("PIO flow control mode%u", xfermode - 8);
        else if (xfermode >= 16 && xfermode <= 23)
-               printf("singleword DMA mode%u", xfermode-16);
+               printf("singleword DMA mode%u", xfermode - 16);
        else if (xfermode >= 32 && xfermode <= 39)
-               printf("multiword DMA mode%u", xfermode-32);
+               printf("multiword DMA mode%u", xfermode - 32);
        else if (xfermode >= 64 && xfermode <= 71)
-               printf("UltraDMA mode%u", xfermode-64);
+               printf("UltraDMA mode%u", xfermode - 64);
        else
                printf("Unknown");
        printf(")\n");