# HG changeset patch # User mas01cr # Date 1196353869 0 # Node ID 7562a833a9519191a47ee1bf9416911ae5ac0c09 # Parent 7c9feaceeab55e9c4b6b0683a81391eca562db07 Deal with x86-64 OS X vs Linux structure padding ABI. diff -r 7c9feaceeab5 -r 7562a833a951 audioDB.cpp --- a/audioDB.cpp Tue Nov 27 18:14:19 2007 +0000 +++ b/audioDB.cpp Thu Nov 29 16:31:09 2007 +0000 @@ -454,6 +454,7 @@ dbH->numFiles = 0; dbH->dim = 0; dbH->flags = 0; + dbH->headerSize = O2_HEADERSIZE; dbH->length = 0; dbH->fileTableOffset = ALIGN_PAGE_UP(O2_HEADERSIZE); dbH->trackTableOffset = ALIGN_PAGE_UP(dbH->fileTableOffset + O2_FILETABLESIZE*maxfiles); @@ -508,7 +509,11 @@ } if(dbH->version != O2_FORMAT_VERSION) { - error("database file has incorect version", dbName); + error("database file has incorrect version", dbName); + } + + if(dbH->headerSize != O2_HEADERSIZE) { + error("sizeof(dbTableHeader) unexpected: platform ABI mismatch?", dbName); } #define CHECKED_MMAP(type, var, start, length) \ diff -r 7c9feaceeab5 -r 7562a833a951 audioDB.h --- a/audioDB.h Tue Nov 27 18:14:19 2007 +0000 +++ b/audioDB.h Thu Nov 29 16:31:09 2007 +0000 @@ -50,7 +50,7 @@ #define O2_OLD_MAGIC ('O'|'2'<<8|'D'<<16|'B'<<24) #define O2_MAGIC ('o'|'2'<<8|'d'<<16|'b'<<24) -#define O2_FORMAT_VERSION (3U) +#define O2_FORMAT_VERSION (4U) #define O2_DEFAULT_POINTNN (10U) #define O2_DEFAULT_TRACKNN (10U) @@ -95,12 +95,13 @@ using namespace std; -typedef struct dbTableHeader{ +typedef struct dbTableHeader { uint32_t magic; uint32_t version; uint32_t numFiles; uint32_t dim; uint32_t flags; + uint32_t headerSize; off_t length; off_t fileTableOffset; off_t trackTableOffset;