| OLD | NEW |
| (Empty) |
| 1 Index: src/sqliteInt.h | |
| 2 =================================================================== | |
| 3 --- src/sqliteInt.h (revision 87306) | |
| 4 +++ src/sqliteInt.h (working copy) | |
| 5 @@ -2522,6 +2522,16 @@ | |
| 6 #endif | |
| 7 | |
| 8 /* | |
| 9 +** The CoreServices.h and CoreFoundation.h headers are needed for excluding a | |
| 10 +** -journal file from Time Machine backups when its associated database has | |
| 11 +** previously been excluded by the client code. | |
| 12 +*/ | |
| 13 +#if defined(__APPLE__) | |
| 14 +#include <CoreServices/CoreServices.h> | |
| 15 +#include <CoreFoundation/CoreFoundation.h> | |
| 16 +#endif | |
| 17 + | |
| 18 +/* | |
| 19 ** The following macros mimic the standard library functions toupper(), | |
| 20 ** isspace(), isalnum(), isdigit() and isxdigit(), respectively. The | |
| 21 ** sqlite versions only work for ASCII characters, regardless of locale. | |
| 22 Index: src/pager.c | |
| 23 =================================================================== | |
| 24 --- src/pager.c (revision 87306) | |
| 25 +++ src/pager.c (working copy) | |
| 26 @@ -5130,7 +5130,21 @@ | |
| 27 } | |
| 28 } | |
| 29 | |
| 30 +#if defined(__APPLE__) | |
| 31 /* | |
| 32 +** Create and return a CFURLRef given a cstring containing the path to a file. | |
| 33 +*/ | |
| 34 +static CFURLRef create_cfurl_from_cstring(const char* filePath){ | |
| 35 + CFStringRef urlString = CFStringCreateWithFileSystemRepresentation( | |
| 36 + kCFAllocatorDefault, filePath); | |
| 37 + CFURLRef urlRef = CFURLCreateWithFileSystemPath(kCFAllocatorDefault, | |
| 38 + urlString, kCFURLPOSIXPathStyle, FALSE); | |
| 39 + CFRelease(urlString); | |
| 40 + return urlRef; | |
| 41 +} | |
| 42 +#endif | |
| 43 + | |
| 44 +/* | |
| 45 ** This function is called at the start of every write transaction. | |
| 46 ** There must already be a RESERVED or EXCLUSIVE lock on the database | |
| 47 ** file when this routine is called. | |
| 48 @@ -5189,6 +5203,24 @@ | |
| 49 #else | |
| 50 rc = sqlite3OsOpen(pVfs, pPager->zJournal, pPager->jfd, flags, 0); | |
| 51 #endif | |
| 52 +#if defined(__APPLE__) | |
| 53 + /* Set the TimeMachine exclusion metadata for the journal if it has | |
| 54 + ** been set for the database. Only do this for unix-type vfs | |
| 55 + ** implementations. */ | |
| 56 + if( rc==SQLITE_OK && pPager->zFilename!=NULL | |
| 57 + && strlen(pPager->zFilename)>0 | |
| 58 + && strncmp(pVfs->zName, "unix", 4)==0 | |
| 59 + && ( pVfs->zName[4]=='-' || pVfs->zName[4]=='\0' ) ){ | |
| 60 + CFURLRef database = create_cfurl_from_cstring(pPager->zFilename); | |
| 61 + if( CSBackupIsItemExcluded(database, NULL) ){ | |
| 62 + CFURLRef journal = create_cfurl_from_cstring(pPager->zJournal); | |
| 63 + /* Ignore errors from the following exclusion call. */ | |
| 64 + CSBackupSetItemExcluded(journal, TRUE, FALSE); | |
| 65 + CFRelease(journal); | |
| 66 + } | |
| 67 + CFRelease(database); | |
| 68 + } | |
| 69 +#endif | |
| 70 } | |
| 71 assert( rc!=SQLITE_OK || isOpen(pPager->jfd) ); | |
| 72 } | |
| 73 Index: ext/fts3/fts3_porter.c | |
| 74 =================================================================== | |
| 75 --- ext/fts3/fts3_porter.c (revision 87306) | |
| 76 +++ ext/fts3/fts3_porter.c (working copy) | |
| 77 @@ -129,7 +129,7 @@ | |
| 78 /* | |
| 79 ** Vowel or consonant | |
| 80 */ | |
| 81 -static const char cType[] = { | |
| 82 +static const char vOrCType[] = { | |
| 83 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, | |
| 84 1, 1, 1, 2, 1 | |
| 85 }; | |
| 86 @@ -153,7 +153,7 @@ | |
| 87 char x = *z; | |
| 88 if( x==0 ) return 0; | |
| 89 assert( x>='a' && x<='z' ); | |
| 90 - j = cType[x-'a']; | |
| 91 + j = vOrCType[x-'a']; | |
| 92 if( j<2 ) return j; | |
| 93 return z[1]==0 || isVowel(z + 1); | |
| 94 } | |
| 95 @@ -162,7 +162,7 @@ | |
| 96 char x = *z; | |
| 97 if( x==0 ) return 0; | |
| 98 assert( x>='a' && x<='z' ); | |
| 99 - j = cType[x-'a']; | |
| 100 + j = vOrCType[x-'a']; | |
| 101 if( j<2 ) return 1-j; | |
| 102 return isConsonant(z + 1); | |
| 103 } | |
| OLD | NEW |