Mercurial > hg > audiodb
changeset 228:acafe033b962 refactoring
Port from trunk/ the fix for linux/OS X ABI mismatches
(Use natural alignment for all fields in dbH).
author | mas01cr |
---|---|
date | Thu, 06 Dec 2007 15:28:40 +0000 |
parents | 083956accbce |
children | c7d1c11c9118 |
files | audioDB.h common.cpp create.cpp |
diffstat | 3 files changed, 9 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/audioDB.h Thu Dec 06 14:41:07 2007 +0000 +++ b/audioDB.h Thu Dec 06 15:28:40 2007 +0000 @@ -49,7 +49,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) @@ -98,12 +98,13 @@ var = (type) tmp; \ } -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;
--- a/common.cpp Thu Dec 06 14:41:07 2007 +0000 +++ b/common.cpp Thu Dec 06 15:28:40 2007 +0000 @@ -96,7 +96,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); } CHECKED_MMAP(char *, db, 0, getpagesize());
--- a/create.cpp Thu Dec 06 14:41:07 2007 +0000 +++ b/create.cpp Thu Dec 06 15:28:40 2007 +0000 @@ -34,6 +34,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);