Annotation of embedaddon/sqlite3/src/ctime.c, revision 1.1
1.1 ! misho 1: /*
! 2: ** 2010 February 23
! 3: **
! 4: ** The author disclaims copyright to this source code. In place of
! 5: ** a legal notice, here is a blessing:
! 6: **
! 7: ** May you do good and not evil.
! 8: ** May you find forgiveness for yourself and forgive others.
! 9: ** May you share freely, never taking more than you give.
! 10: **
! 11: *************************************************************************
! 12: **
! 13: ** This file implements routines used to report what compile-time options
! 14: ** SQLite was built with.
! 15: */
! 16:
! 17: #ifndef SQLITE_OMIT_COMPILEOPTION_DIAGS
! 18:
! 19: #include "sqliteInt.h"
! 20:
! 21: /*
! 22: ** An array of names of all compile-time options. This array should
! 23: ** be sorted A-Z.
! 24: **
! 25: ** This array looks large, but in a typical installation actually uses
! 26: ** only a handful of compile-time options, so most times this array is usually
! 27: ** rather short and uses little memory space.
! 28: */
! 29: static const char * const azCompileOpt[] = {
! 30:
! 31: /* These macros are provided to "stringify" the value of the define
! 32: ** for those options in which the value is meaningful. */
! 33: #define CTIMEOPT_VAL_(opt) #opt
! 34: #define CTIMEOPT_VAL(opt) CTIMEOPT_VAL_(opt)
! 35:
! 36: #ifdef SQLITE_32BIT_ROWID
! 37: "32BIT_ROWID",
! 38: #endif
! 39: #ifdef SQLITE_4_BYTE_ALIGNED_MALLOC
! 40: "4_BYTE_ALIGNED_MALLOC",
! 41: #endif
! 42: #ifdef SQLITE_CASE_SENSITIVE_LIKE
! 43: "CASE_SENSITIVE_LIKE",
! 44: #endif
! 45: #ifdef SQLITE_CHECK_PAGES
! 46: "CHECK_PAGES",
! 47: #endif
! 48: #ifdef SQLITE_COVERAGE_TEST
! 49: "COVERAGE_TEST",
! 50: #endif
! 51: #ifdef SQLITE_DEBUG
! 52: "DEBUG",
! 53: #endif
! 54: #ifdef SQLITE_DEFAULT_LOCKING_MODE
! 55: "DEFAULT_LOCKING_MODE=" CTIMEOPT_VAL(SQLITE_DEFAULT_LOCKING_MODE),
! 56: #endif
! 57: #ifdef SQLITE_DISABLE_DIRSYNC
! 58: "DISABLE_DIRSYNC",
! 59: #endif
! 60: #ifdef SQLITE_DISABLE_LFS
! 61: "DISABLE_LFS",
! 62: #endif
! 63: #ifdef SQLITE_ENABLE_ATOMIC_WRITE
! 64: "ENABLE_ATOMIC_WRITE",
! 65: #endif
! 66: #ifdef SQLITE_ENABLE_CEROD
! 67: "ENABLE_CEROD",
! 68: #endif
! 69: #ifdef SQLITE_ENABLE_COLUMN_METADATA
! 70: "ENABLE_COLUMN_METADATA",
! 71: #endif
! 72: #ifdef SQLITE_ENABLE_EXPENSIVE_ASSERT
! 73: "ENABLE_EXPENSIVE_ASSERT",
! 74: #endif
! 75: #ifdef SQLITE_ENABLE_FTS1
! 76: "ENABLE_FTS1",
! 77: #endif
! 78: #ifdef SQLITE_ENABLE_FTS2
! 79: "ENABLE_FTS2",
! 80: #endif
! 81: #ifdef SQLITE_ENABLE_FTS3
! 82: "ENABLE_FTS3",
! 83: #endif
! 84: #ifdef SQLITE_ENABLE_FTS3_PARENTHESIS
! 85: "ENABLE_FTS3_PARENTHESIS",
! 86: #endif
! 87: #ifdef SQLITE_ENABLE_FTS4
! 88: "ENABLE_FTS4",
! 89: #endif
! 90: #ifdef SQLITE_ENABLE_ICU
! 91: "ENABLE_ICU",
! 92: #endif
! 93: #ifdef SQLITE_ENABLE_IOTRACE
! 94: "ENABLE_IOTRACE",
! 95: #endif
! 96: #ifdef SQLITE_ENABLE_LOAD_EXTENSION
! 97: "ENABLE_LOAD_EXTENSION",
! 98: #endif
! 99: #ifdef SQLITE_ENABLE_LOCKING_STYLE
! 100: "ENABLE_LOCKING_STYLE=" CTIMEOPT_VAL(SQLITE_ENABLE_LOCKING_STYLE),
! 101: #endif
! 102: #ifdef SQLITE_ENABLE_MEMORY_MANAGEMENT
! 103: "ENABLE_MEMORY_MANAGEMENT",
! 104: #endif
! 105: #ifdef SQLITE_ENABLE_MEMSYS3
! 106: "ENABLE_MEMSYS3",
! 107: #endif
! 108: #ifdef SQLITE_ENABLE_MEMSYS5
! 109: "ENABLE_MEMSYS5",
! 110: #endif
! 111: #ifdef SQLITE_ENABLE_OVERSIZE_CELL_CHECK
! 112: "ENABLE_OVERSIZE_CELL_CHECK",
! 113: #endif
! 114: #ifdef SQLITE_ENABLE_RTREE
! 115: "ENABLE_RTREE",
! 116: #endif
! 117: #ifdef SQLITE_ENABLE_STAT3
! 118: "ENABLE_STAT3",
! 119: #endif
! 120: #ifdef SQLITE_ENABLE_UNLOCK_NOTIFY
! 121: "ENABLE_UNLOCK_NOTIFY",
! 122: #endif
! 123: #ifdef SQLITE_ENABLE_UPDATE_DELETE_LIMIT
! 124: "ENABLE_UPDATE_DELETE_LIMIT",
! 125: #endif
! 126: #ifdef SQLITE_HAS_CODEC
! 127: "HAS_CODEC",
! 128: #endif
! 129: #ifdef SQLITE_HAVE_ISNAN
! 130: "HAVE_ISNAN",
! 131: #endif
! 132: #ifdef SQLITE_HOMEGROWN_RECURSIVE_MUTEX
! 133: "HOMEGROWN_RECURSIVE_MUTEX",
! 134: #endif
! 135: #ifdef SQLITE_IGNORE_AFP_LOCK_ERRORS
! 136: "IGNORE_AFP_LOCK_ERRORS",
! 137: #endif
! 138: #ifdef SQLITE_IGNORE_FLOCK_LOCK_ERRORS
! 139: "IGNORE_FLOCK_LOCK_ERRORS",
! 140: #endif
! 141: #ifdef SQLITE_INT64_TYPE
! 142: "INT64_TYPE",
! 143: #endif
! 144: #ifdef SQLITE_LOCK_TRACE
! 145: "LOCK_TRACE",
! 146: #endif
! 147: #ifdef SQLITE_MAX_SCHEMA_RETRY
! 148: "MAX_SCHEMA_RETRY=" CTIMEOPT_VAL(SQLITE_MAX_SCHEMA_RETRY),
! 149: #endif
! 150: #ifdef SQLITE_MEMDEBUG
! 151: "MEMDEBUG",
! 152: #endif
! 153: #ifdef SQLITE_MIXED_ENDIAN_64BIT_FLOAT
! 154: "MIXED_ENDIAN_64BIT_FLOAT",
! 155: #endif
! 156: #ifdef SQLITE_NO_SYNC
! 157: "NO_SYNC",
! 158: #endif
! 159: #ifdef SQLITE_OMIT_ALTERTABLE
! 160: "OMIT_ALTERTABLE",
! 161: #endif
! 162: #ifdef SQLITE_OMIT_ANALYZE
! 163: "OMIT_ANALYZE",
! 164: #endif
! 165: #ifdef SQLITE_OMIT_ATTACH
! 166: "OMIT_ATTACH",
! 167: #endif
! 168: #ifdef SQLITE_OMIT_AUTHORIZATION
! 169: "OMIT_AUTHORIZATION",
! 170: #endif
! 171: #ifdef SQLITE_OMIT_AUTOINCREMENT
! 172: "OMIT_AUTOINCREMENT",
! 173: #endif
! 174: #ifdef SQLITE_OMIT_AUTOINIT
! 175: "OMIT_AUTOINIT",
! 176: #endif
! 177: #ifdef SQLITE_OMIT_AUTOMATIC_INDEX
! 178: "OMIT_AUTOMATIC_INDEX",
! 179: #endif
! 180: #ifdef SQLITE_OMIT_AUTORESET
! 181: "OMIT_AUTORESET",
! 182: #endif
! 183: #ifdef SQLITE_OMIT_AUTOVACUUM
! 184: "OMIT_AUTOVACUUM",
! 185: #endif
! 186: #ifdef SQLITE_OMIT_BETWEEN_OPTIMIZATION
! 187: "OMIT_BETWEEN_OPTIMIZATION",
! 188: #endif
! 189: #ifdef SQLITE_OMIT_BLOB_LITERAL
! 190: "OMIT_BLOB_LITERAL",
! 191: #endif
! 192: #ifdef SQLITE_OMIT_BTREECOUNT
! 193: "OMIT_BTREECOUNT",
! 194: #endif
! 195: #ifdef SQLITE_OMIT_BUILTIN_TEST
! 196: "OMIT_BUILTIN_TEST",
! 197: #endif
! 198: #ifdef SQLITE_OMIT_CAST
! 199: "OMIT_CAST",
! 200: #endif
! 201: #ifdef SQLITE_OMIT_CHECK
! 202: "OMIT_CHECK",
! 203: #endif
! 204: /* // redundant
! 205: ** #ifdef SQLITE_OMIT_COMPILEOPTION_DIAGS
! 206: ** "OMIT_COMPILEOPTION_DIAGS",
! 207: ** #endif
! 208: */
! 209: #ifdef SQLITE_OMIT_COMPLETE
! 210: "OMIT_COMPLETE",
! 211: #endif
! 212: #ifdef SQLITE_OMIT_COMPOUND_SELECT
! 213: "OMIT_COMPOUND_SELECT",
! 214: #endif
! 215: #ifdef SQLITE_OMIT_DATETIME_FUNCS
! 216: "OMIT_DATETIME_FUNCS",
! 217: #endif
! 218: #ifdef SQLITE_OMIT_DECLTYPE
! 219: "OMIT_DECLTYPE",
! 220: #endif
! 221: #ifdef SQLITE_OMIT_DEPRECATED
! 222: "OMIT_DEPRECATED",
! 223: #endif
! 224: #ifdef SQLITE_OMIT_DISKIO
! 225: "OMIT_DISKIO",
! 226: #endif
! 227: #ifdef SQLITE_OMIT_EXPLAIN
! 228: "OMIT_EXPLAIN",
! 229: #endif
! 230: #ifdef SQLITE_OMIT_FLAG_PRAGMAS
! 231: "OMIT_FLAG_PRAGMAS",
! 232: #endif
! 233: #ifdef SQLITE_OMIT_FLOATING_POINT
! 234: "OMIT_FLOATING_POINT",
! 235: #endif
! 236: #ifdef SQLITE_OMIT_FOREIGN_KEY
! 237: "OMIT_FOREIGN_KEY",
! 238: #endif
! 239: #ifdef SQLITE_OMIT_GET_TABLE
! 240: "OMIT_GET_TABLE",
! 241: #endif
! 242: #ifdef SQLITE_OMIT_INCRBLOB
! 243: "OMIT_INCRBLOB",
! 244: #endif
! 245: #ifdef SQLITE_OMIT_INTEGRITY_CHECK
! 246: "OMIT_INTEGRITY_CHECK",
! 247: #endif
! 248: #ifdef SQLITE_OMIT_LIKE_OPTIMIZATION
! 249: "OMIT_LIKE_OPTIMIZATION",
! 250: #endif
! 251: #ifdef SQLITE_OMIT_LOAD_EXTENSION
! 252: "OMIT_LOAD_EXTENSION",
! 253: #endif
! 254: #ifdef SQLITE_OMIT_LOCALTIME
! 255: "OMIT_LOCALTIME",
! 256: #endif
! 257: #ifdef SQLITE_OMIT_LOOKASIDE
! 258: "OMIT_LOOKASIDE",
! 259: #endif
! 260: #ifdef SQLITE_OMIT_MEMORYDB
! 261: "OMIT_MEMORYDB",
! 262: #endif
! 263: #ifdef SQLITE_OMIT_MERGE_SORT
! 264: "OMIT_MERGE_SORT",
! 265: #endif
! 266: #ifdef SQLITE_OMIT_OR_OPTIMIZATION
! 267: "OMIT_OR_OPTIMIZATION",
! 268: #endif
! 269: #ifdef SQLITE_OMIT_PAGER_PRAGMAS
! 270: "OMIT_PAGER_PRAGMAS",
! 271: #endif
! 272: #ifdef SQLITE_OMIT_PRAGMA
! 273: "OMIT_PRAGMA",
! 274: #endif
! 275: #ifdef SQLITE_OMIT_PROGRESS_CALLBACK
! 276: "OMIT_PROGRESS_CALLBACK",
! 277: #endif
! 278: #ifdef SQLITE_OMIT_QUICKBALANCE
! 279: "OMIT_QUICKBALANCE",
! 280: #endif
! 281: #ifdef SQLITE_OMIT_REINDEX
! 282: "OMIT_REINDEX",
! 283: #endif
! 284: #ifdef SQLITE_OMIT_SCHEMA_PRAGMAS
! 285: "OMIT_SCHEMA_PRAGMAS",
! 286: #endif
! 287: #ifdef SQLITE_OMIT_SCHEMA_VERSION_PRAGMAS
! 288: "OMIT_SCHEMA_VERSION_PRAGMAS",
! 289: #endif
! 290: #ifdef SQLITE_OMIT_SHARED_CACHE
! 291: "OMIT_SHARED_CACHE",
! 292: #endif
! 293: #ifdef SQLITE_OMIT_SUBQUERY
! 294: "OMIT_SUBQUERY",
! 295: #endif
! 296: #ifdef SQLITE_OMIT_TCL_VARIABLE
! 297: "OMIT_TCL_VARIABLE",
! 298: #endif
! 299: #ifdef SQLITE_OMIT_TEMPDB
! 300: "OMIT_TEMPDB",
! 301: #endif
! 302: #ifdef SQLITE_OMIT_TRACE
! 303: "OMIT_TRACE",
! 304: #endif
! 305: #ifdef SQLITE_OMIT_TRIGGER
! 306: "OMIT_TRIGGER",
! 307: #endif
! 308: #ifdef SQLITE_OMIT_TRUNCATE_OPTIMIZATION
! 309: "OMIT_TRUNCATE_OPTIMIZATION",
! 310: #endif
! 311: #ifdef SQLITE_OMIT_UTF16
! 312: "OMIT_UTF16",
! 313: #endif
! 314: #ifdef SQLITE_OMIT_VACUUM
! 315: "OMIT_VACUUM",
! 316: #endif
! 317: #ifdef SQLITE_OMIT_VIEW
! 318: "OMIT_VIEW",
! 319: #endif
! 320: #ifdef SQLITE_OMIT_VIRTUALTABLE
! 321: "OMIT_VIRTUALTABLE",
! 322: #endif
! 323: #ifdef SQLITE_OMIT_WAL
! 324: "OMIT_WAL",
! 325: #endif
! 326: #ifdef SQLITE_OMIT_WSD
! 327: "OMIT_WSD",
! 328: #endif
! 329: #ifdef SQLITE_OMIT_XFER_OPT
! 330: "OMIT_XFER_OPT",
! 331: #endif
! 332: #ifdef SQLITE_PERFORMANCE_TRACE
! 333: "PERFORMANCE_TRACE",
! 334: #endif
! 335: #ifdef SQLITE_PROXY_DEBUG
! 336: "PROXY_DEBUG",
! 337: #endif
! 338: #ifdef SQLITE_SECURE_DELETE
! 339: "SECURE_DELETE",
! 340: #endif
! 341: #ifdef SQLITE_SMALL_STACK
! 342: "SMALL_STACK",
! 343: #endif
! 344: #ifdef SQLITE_SOUNDEX
! 345: "SOUNDEX",
! 346: #endif
! 347: #ifdef SQLITE_TCL
! 348: "TCL",
! 349: #endif
! 350: #ifdef SQLITE_TEMP_STORE
! 351: "TEMP_STORE=" CTIMEOPT_VAL(SQLITE_TEMP_STORE),
! 352: #endif
! 353: #ifdef SQLITE_TEST
! 354: "TEST",
! 355: #endif
! 356: #ifdef SQLITE_THREADSAFE
! 357: "THREADSAFE=" CTIMEOPT_VAL(SQLITE_THREADSAFE),
! 358: #endif
! 359: #ifdef SQLITE_USE_ALLOCA
! 360: "USE_ALLOCA",
! 361: #endif
! 362: #ifdef SQLITE_ZERO_MALLOC
! 363: "ZERO_MALLOC"
! 364: #endif
! 365: };
! 366:
! 367: /*
! 368: ** Given the name of a compile-time option, return true if that option
! 369: ** was used and false if not.
! 370: **
! 371: ** The name can optionally begin with "SQLITE_" but the "SQLITE_" prefix
! 372: ** is not required for a match.
! 373: */
! 374: int sqlite3_compileoption_used(const char *zOptName){
! 375: int i, n;
! 376: if( sqlite3StrNICmp(zOptName, "SQLITE_", 7)==0 ) zOptName += 7;
! 377: n = sqlite3Strlen30(zOptName);
! 378:
! 379: /* Since ArraySize(azCompileOpt) is normally in single digits, a
! 380: ** linear search is adequate. No need for a binary search. */
! 381: for(i=0; i<ArraySize(azCompileOpt); i++){
! 382: if( (sqlite3StrNICmp(zOptName, azCompileOpt[i], n)==0)
! 383: && ( (azCompileOpt[i][n]==0) || (azCompileOpt[i][n]=='=') ) ) return 1;
! 384: }
! 385: return 0;
! 386: }
! 387:
! 388: /*
! 389: ** Return the N-th compile-time option string. If N is out of range,
! 390: ** return a NULL pointer.
! 391: */
! 392: const char *sqlite3_compileoption_get(int N){
! 393: if( N>=0 && N<ArraySize(azCompileOpt) ){
! 394: return azCompileOpt[N];
! 395: }
! 396: return 0;
! 397: }
! 398:
! 399: #endif /* SQLITE_OMIT_COMPILEOPTION_DIAGS */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>