[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