changeset 210:7562a833a951

Deal with x86-64 OS X vs Linux structure padding ABI.
author mas01cr
date Thu, 29 Nov 2007 16:31:09 +0000
parents 7c9feaceeab5
children 3a81da6fb1d7
files audioDB.cpp audioDB.h
diffstat 2 files changed, 9 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- 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) \
--- 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;