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>