[syslinux] [PATCH] Replace lendian_{short, int} with the appropriate functions from endian.h

Justus Winter winter at pre-sense.de
Tue Mar 1 04:41:40 PST 2011


---
 utils/isohybrid.c |   52 ++++++++++++----------------------------------------
 1 files changed, 12 insertions(+), 40 deletions(-)

diff --git a/utils/isohybrid.c b/utils/isohybrid.c
index 7ee9a7f..34ec8a6 100644
--- a/utils/isohybrid.c
+++ b/utils/isohybrid.c
@@ -36,6 +36,7 @@
 #include <unistd.h>
 #include <sys/stat.h>
 #include <inttypes.h>
+#include <endian.h>
 
 #include "isohybrid.h"
 
@@ -201,35 +202,6 @@ check_option(int argc, char *argv[])
 }
 
 
-uint16_t
-lendian_short(const uint16_t s)
-{
-    uint16_t r = 1;
-
-    if (*(uint8_t *)&r)
-        return s;
-
-    r = (s & 0x00FF) << 8 | (s & 0xFF00) >> 8;
-
-    return r;
-}
-
-
-uint32_t
-lendian_int(const uint32_t s)
-{
-    uint32_t r = 1;
-
-    if (*(uint8_t *)&r)
-        return s;
-
-    r = (s & 0x000000FF) << 24 | (s & 0xFF000000) >> 24
-        | (s & 0x0000FF00) << 8 | (s & 0x00FF0000) >> 8;
-
-    return r;
-}
-
-
 int
 check_banner(const uint8_t *buf)
 {
@@ -243,7 +215,7 @@ check_banner(const uint8_t *buf)
     buf += sizeof(banner) - 1;
     memcpy(&catoffset, buf, sizeof(catoffset));
 
-    catoffset = lendian_int(catoffset);
+    catoffset = le32toh(catoffset);
 
     return 0;
 }
@@ -259,7 +231,7 @@ check_catalogue(const uint8_t *buf)
         ve[i] = 0;
         memcpy(&ve[i], buf, sizeof(ve[i]));
 
-        ve[i] = lendian_short(ve[i]);
+        ve[i] = le32toh(ve[i]);
 
         buf += 2;
         cs += ve[i];
@@ -281,22 +253,22 @@ read_catalogue(const uint8_t *buf)
     memcpy(&de_media, buf++, 1);
 
     memcpy(&de_seg, buf, 2);
-    de_seg = lendian_short(de_seg);
+    de_seg = le16toh(de_seg);
     buf += 2;
 
     memcpy(&de_sys, buf++, 1);
     memcpy(&de_mbz1, buf++, 1);
 
     memcpy(&de_count, buf, 2);
-    de_count = lendian_short(de_count);
+    de_count = le16toh(de_count);
     buf += 2;
 
     memcpy(&de_lba, buf, 4);
-    de_lba = lendian_int(de_lba);
+    de_lba = le32toh(de_lba);
     buf += 4;
 
     memcpy(&de_mbz2, buf, 2);
-    de_mbz2 = lendian_short(de_mbz2);
+    de_mbz2 = le16toh(de_mbz2);
     buf += 2;
 
     if (de_boot != 0x88 || de_media != 0
@@ -335,7 +307,7 @@ initialise_mbr(uint8_t *mbr)
     memcpy(mbr, &isohdpfx[hd0 + 3 * partok], MBRSIZE);
     mbr += MBRSIZE;                                 /* offset 432 */
 
-    tmp = lendian_int(de_lba * 4);
+    tmp = htole32(de_lba * 4);
     memcpy(mbr, &tmp, sizeof(tmp));
     mbr += sizeof(tmp);                             /* offset 436 */
 
@@ -343,7 +315,7 @@ initialise_mbr(uint8_t *mbr)
     memcpy(mbr, &tmp, sizeof(tmp));
     mbr += sizeof(tmp);                             /* offset 440 */
 
-    tmp = lendian_int(id);
+    tmp = htole32(id);
     memcpy(mbr, &tmp, sizeof(tmp));
     mbr += sizeof(tmp);                             /* offset 444 */
 
@@ -379,10 +351,10 @@ initialise_mbr(uint8_t *mbr)
             mbr[6] = esect;
             mbr[7] = ecyle;
 
-            tmp = lendian_int(offset);
+            tmp = htole32(offset);
             memcpy(&mbr[8], &tmp, sizeof(tmp));
 
-            tmp = lendian_int(psize);
+            tmp = htole32(psize);
             memcpy(&mbr[12], &tmp, sizeof(tmp));
         }
         mbr += 16;
@@ -517,7 +489,7 @@ main(int argc, char *argv[])
 	if (fread(&id, 1, 4, fp) != 4)
 	    err(1, "%s: read error", argv[0]);
 
-        id = lendian_int(id);
+        id = le32toh(id);
         if (!id)
         {
             if (mode & VERBOSE)
-- 
1.7.2.3




More information about the Syslinux mailing list