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);