Extract space trimming code from ATA and use in USB and bootorder code.
authorKevin O'Connor <kevin@koconnor.net>
Sat, 8 Jan 2011 17:06:54 +0000 (12:06 -0500)
committerKevin O'Connor <kevin@koconnor.net>
Sat, 8 Jan 2011 17:06:54 +0000 (12:06 -0500)
Introduce function nullTrailingSpace() that nulls blank characters
from the end of a string.  Use this function in the ATA, USB MSC, and
bootorder code.

src/ata.c
src/boot.c
src/usb-msc.c
src/util.c
src/util.h

index e9a2aef158763c4a947078f11aba5e75ea278560..397e4022a7990e5fb1d78e0c24193d80428833e9 100644 (file)
--- a/src/ata.c
+++ b/src/ata.c
@@ -727,11 +727,7 @@ ata_extract_model(char *model, u32 size, u16 *buffer)
     for (i=0; i<size/2; i++)
         *(u16*)&model[i*2] = ntohs(buffer[27+i]);
     model[size] = 0x00;
-
-    // Trim trailing spaces from model name.
-    for (i=size-1; i>0 && model[i] == 0x20; i--)
-        model[i] = 0x00;
-
+    nullTrailingSpace(model);
     return model;
 }
 
index e5475a2f2f75e98eff75951fb4615d39d7f4a49d..b59794edb8e90b0fdb3baf2a694a0f435d494f4d 100644 (file)
@@ -51,6 +51,7 @@ loadBootOrder(void)
         f = strchr(f, '\n');
         if (f)
             *(f++) = '\0';
+        nullTrailingSpace(Bootorder[i]);
         dprintf(3, "%d: %s\n", i+1, Bootorder[i]);
         i++;
     } while (f);
index 58a5d144ae5d7d02026345314166757c74671690..1aa57d1bf91a85f9ba954ac8bb0d7fe51a8abc7a 100644 (file)
@@ -228,14 +228,16 @@ usb_msc_init(struct usb_pipe *pipe
         goto fail;
     char vendor[sizeof(data.vendor)+1], product[sizeof(data.product)+1];
     char rev[sizeof(data.rev)+1];
+    strtcpy(vendor, data.vendor, sizeof(vendor));
+    nullTrailingSpace(vendor);
+    strtcpy(product, data.product, sizeof(product));
+    nullTrailingSpace(product);
+    strtcpy(rev, data.rev, sizeof(rev));
+    nullTrailingSpace(rev);
     int pdt = data.pdt & 0x1f;
     int removable = !!(data.removable & 0x80);
-    dprintf(1, "USB MSC vendor='%s' product='%s' rev='%s'"
-            " type=%d removable=%d\n"
-            , strtcpy(vendor, data.vendor, sizeof(vendor))
-            , strtcpy(product, data.product, sizeof(product))
-            , strtcpy(rev, data.rev, sizeof(rev))
-            , pdt, removable);
+    dprintf(1, "USB MSC vendor='%s' product='%s' rev='%s' type=%d removable=%d\n"
+            , vendor, product, rev, pdt, removable);
     udrive_g->drive.removable = removable;
 
     if (pdt == USB_MSC_TYPE_CDROM) {
index 579a044e52626ac1b3583c65f3391827ab242c00..ed73d632f11e619d1e83fbba7d7c581f82adc481 100644 (file)
@@ -272,6 +272,16 @@ strchr(const char *s, int c)
     return NULL;
 }
 
+// Remove any trailing blank characters (spaces, new lines, carriage returns)
+void
+nullTrailingSpace(char *buf)
+{
+    int len = strlen(buf);
+    char *end = &buf[len-1];
+    while (end >= buf && *end <= ' ')
+        *(end--) = '\0';
+}
+
 /****************************************************************
  * Keyboard calls
  ****************************************************************/
index 7102c279853eb79aa740c9b2afde81c288d15812..17fc54a5eed54872a9bef6069525748141078f0a 100644 (file)
@@ -210,6 +210,7 @@ void iomemcpy(void *d, const void *s, u32 len);
 void *memmove(void *d, const void *s, size_t len);
 char *strtcpy(char *dest, const char *src, size_t len);
 char *strchr(const char *s, int c);
+void nullTrailingSpace(char *buf);
 int get_keystroke(int msec);
 
 // stacks.c