From 71f0814e52df8d862b2658fd3075c3020347d0fd Mon Sep 17 00:00:00 2001 From: Dave Chapman Date: Tue, 4 Aug 2009 20:03:17 +0000 Subject: Make ipodpatcher compile on *BSD and recent Linux distributions - htole16/htole32 are standard BSD functions, and they now also appear in glibc 2.9 or later on Linux. As the functions are so simple, we just rename to avoid a clash instead of attempting to use the library versions on some platforms. Same as fix provided in FS#10428 by Alyssa Milburn. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22164 a1c6a512-1295-4272-9138-f99709370657 --- rbutil/ipodpatcher/fat32format.c | 60 +++++++++++++++++++++------------------- 1 file changed, 32 insertions(+), 28 deletions(-) diff --git a/rbutil/ipodpatcher/fat32format.c b/rbutil/ipodpatcher/fat32format.c index 0cbfb00754..3dced355b6 100644 --- a/rbutil/ipodpatcher/fat32format.c +++ b/rbutil/ipodpatcher/fat32format.c @@ -54,9 +54,13 @@ static inline uint32_t swap32(uint32_t value) /* The following functions are not the most efficient, but are self-contained and don't require needing to know endianness of CPU at compile-time. + + Note that htole16/htole32 exist on some platforms, so for + simplicity we use different names. + */ -uint16_t htole16(uint16_t x) +static uint16_t rb_htole16(uint16_t x) { uint16_t test = 0x1234; unsigned char* p = (unsigned char*)&test; @@ -69,7 +73,7 @@ uint16_t htole16(uint16_t x) } } -uint32_t htole32(uint32_t x) +static uint32_t rb_htole32(uint32_t x) { uint32_t test = 0x12345678; unsigned char* p = (unsigned char*)&test; @@ -306,28 +310,28 @@ static void create_boot_sector(unsigned char* buf, pFAT32BootSect->sJmpBoot[1]=0x5A; pFAT32BootSect->sJmpBoot[2]=0x90; strcpy( pFAT32BootSect->sOEMName, "MSWIN4.1" ); - pFAT32BootSect->wBytsPerSec = htole16(BytesPerSect); + pFAT32BootSect->wBytsPerSec = rb_htole16(BytesPerSect); pFAT32BootSect->bSecPerClus = SectorsPerCluster ; - pFAT32BootSect->wRsvdSecCnt = htole16(ReservedSectCount); + pFAT32BootSect->wRsvdSecCnt = rb_htole16(ReservedSectCount); pFAT32BootSect->bNumFATs = NumFATs; - pFAT32BootSect->wRootEntCnt = htole16(0); - pFAT32BootSect->wTotSec16 = htole16(0); + pFAT32BootSect->wRootEntCnt = rb_htole16(0); + pFAT32BootSect->wTotSec16 = rb_htole16(0); pFAT32BootSect->bMedia = 0xF8; - pFAT32BootSect->wFATSz16 = htole16(0); - pFAT32BootSect->wSecPerTrk = htole16(ipod->sectors_per_track); - pFAT32BootSect->wNumHeads = htole16(ipod->num_heads); - pFAT32BootSect->dHiddSec = htole16(ipod->pinfo[partition].start); - pFAT32BootSect->dTotSec32 = htole32(TotalSectors); - pFAT32BootSect->dFATSz32 = htole32(FatSize); - pFAT32BootSect->wExtFlags = htole16(0); - pFAT32BootSect->wFSVer = htole16(0); - pFAT32BootSect->dRootClus = htole32(2); - pFAT32BootSect->wFSInfo = htole16(1); - pFAT32BootSect->wBkBootSec = htole16(BackupBootSect); + pFAT32BootSect->wFATSz16 = rb_htole16(0); + pFAT32BootSect->wSecPerTrk = rb_htole16(ipod->sectors_per_track); + pFAT32BootSect->wNumHeads = rb_htole16(ipod->num_heads); + pFAT32BootSect->dHiddSec = rb_htole16(ipod->pinfo[partition].start); + pFAT32BootSect->dTotSec32 = rb_htole32(TotalSectors); + pFAT32BootSect->dFATSz32 = rb_htole32(FatSize); + pFAT32BootSect->wExtFlags = rb_htole16(0); + pFAT32BootSect->wFSVer = rb_htole16(0); + pFAT32BootSect->dRootClus = rb_htole32(2); + pFAT32BootSect->wFSInfo = rb_htole16(1); + pFAT32BootSect->wBkBootSec = rb_htole16(BackupBootSect); pFAT32BootSect->bDrvNum = 0x80; pFAT32BootSect->Reserved1 = 0; pFAT32BootSect->bBootSig = 0x29; - pFAT32BootSect->dBS_VolID = htole32(VolumeId); + pFAT32BootSect->dBS_VolID = rb_htole32(VolumeId); memcpy(pFAT32BootSect->sVolLab, VolId, 11); memcpy(pFAT32BootSect->sBS_FilSysType, "FAT32 ", 8 ); @@ -340,15 +344,15 @@ static void create_fsinfo(unsigned char* buf) struct FAT_FSINFO* pFAT32FsInfo = (struct FAT_FSINFO*)buf; /* FSInfo sect */ - pFAT32FsInfo->dLeadSig = htole32(0x41615252); - pFAT32FsInfo->dStrucSig = htole32(0x61417272); - pFAT32FsInfo->dFree_Count = htole32((uint32_t) -1); - pFAT32FsInfo->dNxt_Free = htole32((uint32_t) -1); - pFAT32FsInfo->dTrailSig = htole32(0xaa550000); - pFAT32FsInfo->dFree_Count = htole32((UserAreaSize/SectorsPerCluster)-1); + pFAT32FsInfo->dLeadSig = rb_htole32(0x41615252); + pFAT32FsInfo->dStrucSig = rb_htole32(0x61417272); + pFAT32FsInfo->dFree_Count = rb_htole32((uint32_t) -1); + pFAT32FsInfo->dNxt_Free = rb_htole32((uint32_t) -1); + pFAT32FsInfo->dTrailSig = rb_htole32(0xaa550000); + pFAT32FsInfo->dFree_Count = rb_htole32((UserAreaSize/SectorsPerCluster)-1); /* clusters 0-1 reserved, we used cluster 2 for the root dir */ - pFAT32FsInfo->dNxt_Free = htole32(3); + pFAT32FsInfo->dNxt_Free = rb_htole32(3); } static void create_firstfatsector(unsigned char* buf) @@ -356,9 +360,9 @@ static void create_firstfatsector(unsigned char* buf) uint32_t* p = (uint32_t*)buf; /* We know the buffer is aligned */ /* First FAT Sector */ - p[0] = htole32(0x0ffffff8); /* Reserved cluster 1 media id in low byte */ - p[1] = htole32(0x0fffffff); /* Reserved cluster 2 EOC */ - p[2] = htole32(0x0fffffff); /* end of cluster chain for root dir */ + p[0] = rb_htole32(0x0ffffff8); /* Reserved cluster 1 media id in low byte */ + p[1] = rb_htole32(0x0fffffff); /* Reserved cluster 2 EOC */ + p[2] = rb_htole32(0x0fffffff); /* end of cluster chain for root dir */ } int format_partition(struct ipod_t* ipod, int partition) -- cgit v1.2.3