The effect of SQLITE_ENABLE_LOCKING_STYLE=1 on platforms other than VXWORKS or OSX is documented to enable the flock locking style, which is available just fine on Linux and Cygwin. So this should work fine:
$ gcc -c -DSQLITE_ENABLE_LOCKING_STYLE=1 -DSQLITE_OS_UNIX=1 sqlite3.c sqlite3.c: In function ‘unixOpen’: sqlite3.c:28619:17: error: storage size of ‘fsInfo’ isn’t known sqlite3.c:28812:35: error: ‘MNT_LOCAL’ undeclared (first use in this function) sqlite3.c:28812:35: note: each undeclared identifier is reported only once for each function it appears in I believe the inlined patch (see below) properly fixes this, although it's only tested on Linux and Cygwin, not on VXWORKS and OSX Regards, Jan Nijtmans Index: src/os_unix.c ================================================================== --- src/os_unix.c +++ src/os_unix.c @@ -227,14 +227,14 @@ #endif #ifdef __QNXNTO__ int sectorSize; /* Device sector size */ int deviceCharacteristics; /* Precomputed device characteristics */ #endif -#if SQLITE_ENABLE_LOCKING_STYLE +#if SQLITE_ENABLE_LOCKING_STYLE && defined(__APPLE__) int openFlags; /* The flags specified at open() */ #endif -#if SQLITE_ENABLE_LOCKING_STYLE || defined(__APPLE__) +#if defined(__APPLE__) || SQLITE_ENABLE_LOCKING_STYLE && OS_VXWORKS unsigned fsFlags; /* cached details from statfs() */ #endif #if OS_VXWORKS struct vxworksFileId *pId; /* Unique file ID */ #endif @@ -5565,14 +5565,14 @@ int isExclusive = (flags & SQLITE_OPEN_EXCLUSIVE); int isDelete = (flags & SQLITE_OPEN_DELETEONCLOSE); int isCreate = (flags & SQLITE_OPEN_CREATE); int isReadonly = (flags & SQLITE_OPEN_READONLY); int isReadWrite = (flags & SQLITE_OPEN_READWRITE); -#if SQLITE_ENABLE_LOCKING_STYLE +#if SQLITE_ENABLE_LOCKING_STYLE && (OS_VXWORKS || defined(__APPLE__)) int isAutoProxy = (flags & SQLITE_OPEN_AUTOPROXY); #endif -#if defined(__APPLE__) || SQLITE_ENABLE_LOCKING_STYLE +#if defined(__APPLE__) || SQLITE_ENABLE_LOCKING_STYLE && OS_VXWORKS struct statfs fsInfo; #endif /* If creating a master or main-file journal, this function will open ** a file-descriptor on the directory too. The first time unixSync() @@ -5709,20 +5709,20 @@ zPath = zName; #else osUnlink(zName); #endif } -#if SQLITE_ENABLE_LOCKING_STYLE +#if SQLITE_ENABLE_LOCKING_STYLE && defined(__APPLE__) else{ p->openFlags = openFlags; } #endif noLock = eType!=SQLITE_OPEN_MAIN_DB; -#if defined(__APPLE__) || SQLITE_ENABLE_LOCKING_STYLE +#if defined(__APPLE__) || SQLITE_ENABLE_LOCKING_STYLE && OS_VXWORKS if( fstatfs(fd, &fsInfo) == -1 ){ ((unixFile*)pFile)->lastErrno = errno; robust_close(p, fd, __LINE__); return SQLITE_IOERR_ACCESS; } @@ -5736,11 +5736,11 @@ if( isReadonly ) ctrlFlags |= UNIXFILE_RDONLY; if( noLock ) ctrlFlags |= UNIXFILE_NOLOCK; if( syncDir ) ctrlFlags |= UNIXFILE_DIRSYNC; if( flags & SQLITE_OPEN_URI ) ctrlFlags |= UNIXFILE_URI; -#if SQLITE_ENABLE_LOCKING_STYLE +#if SQLITE_ENABLE_LOCKING_STYLE && (OS_VXWORKS || defined(__APPLE__)) #if SQLITE_PREFER_PROXY_LOCKING isAutoProxy = 1; #endif if( isAutoProxy && (zPath!=NULL) && (!noLock) && pVfs->xOpen ){ char *envforce = getenv("SQLITE_FORCE_PROXY_LOCKING"); _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users