/ Hex Artifact Content
Login

Artifact aee73ebaea1963e528b61408c01ba82f49fdf3dca9cbe940f3b0f3d9cec25942:


0000: 2f 2a 0a 20 2a 20 20 73 71 6c 69 74 65 33 5f 70  /*. *  sqlite3_p
0010: 72 69 76 61 74 65 2e 68 0a 20 2a 2f 0a 0a 23 69  rivate.h. */..#i
0020: 66 6e 64 65 66 20 5f 53 51 4c 49 54 45 33 5f 50  fndef _SQLITE3_P
0030: 52 49 56 41 54 45 5f 48 0a 23 64 65 66 69 6e 65  RIVATE_H.#define
0040: 20 5f 53 51 4c 49 54 45 33 5f 50 52 49 56 41 54   _SQLITE3_PRIVAT
0050: 45 5f 48 0a 0a 23 69 66 64 65 66 20 5f 5f 63 70  E_H..#ifdef __cp
0060: 6c 75 73 70 6c 75 73 0a 65 78 74 65 72 6e 20 22  lusplus.extern "
0070: 43 22 20 7b 0a 23 65 6e 64 69 66 0a 0a 23 64 65  C" {.#endif..#de
0080: 66 69 6e 65 20 53 51 4c 49 54 45 5f 4c 4f 43 4b  fine SQLITE_LOCK
0090: 53 54 41 54 45 5f 4f 46 46 20 20 20 20 30 0a 23  STATE_OFF    0.#
00a0: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 4c 4f  define SQLITE_LO
00b0: 43 4b 53 54 41 54 45 5f 4f 4e 20 20 20 20 20 31  CKSTATE_ON     1
00c0: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
00d0: 4c 4f 43 4b 53 54 41 54 45 5f 4e 4f 54 41 44 42  LOCKSTATE_NOTADB
00e0: 20 32 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54   2.#define SQLIT
00f0: 45 5f 4c 4f 43 4b 53 54 41 54 45 5f 45 52 52 4f  E_LOCKSTATE_ERRO
0100: 52 20 20 2d 31 0a 0a 23 64 65 66 69 6e 65 20 53  R  -1..#define S
0110: 51 4c 49 54 45 5f 4c 4f 43 4b 53 54 41 54 45 5f  QLITE_LOCKSTATE_
0120: 41 4e 59 50 49 44 20 2d 31 0a 0a 2f 2a 20 0a 2a  ANYPID -1../* .*
0130: 2a 20 54 65 73 74 20 61 20 66 69 6c 65 20 70 61  * Test a file pa
0140: 74 68 20 66 6f 72 20 73 71 6c 69 74 65 20 6c 6f  th for sqlite lo
0150: 63 6b 73 20 68 65 6c 64 20 62 79 20 61 20 70 72  cks held by a pr
0160: 6f 63 65 73 73 20 49 44 20 28 2d 31 20 3d 20 61  ocess ID (-1 = a
0170: 6e 79 20 50 49 44 29 2e 20 0a 2a 2a 20 52 65 74  ny PID). .** Ret
0180: 75 72 6e 73 20 6f 6e 65 20 6f 66 20 74 68 65 20  urns one of the 
0190: 66 6f 6c 6c 6f 77 69 6e 67 20 69 6e 74 65 67 65  following intege
01a0: 72 20 63 6f 64 65 73 3a 0a 2a 2a 20 0a 2a 2a 20  r codes:.** .** 
01b0: 20 20 53 51 4c 49 54 45 5f 4c 4f 43 4b 53 54 41    SQLITE_LOCKSTA
01c0: 54 45 5f 4f 46 46 20 20 20 20 6e 6f 20 61 63 74  TE_OFF    no act
01d0: 69 76 65 20 73 71 6c 69 74 65 20 66 69 6c 65 20  ive sqlite file 
01e0: 6c 6f 63 6b 73 20 6d 61 74 63 68 20 74 68 65 20  locks match the 
01f0: 73 70 65 63 69 66 69 65 64 20 70 69 64 0a 2a 2a  specified pid.**
0200: 20 20 20 53 51 4c 49 54 45 5f 4c 4f 43 4b 53 54     SQLITE_LOCKST
0210: 41 54 45 5f 4f 4e 20 20 20 20 20 61 63 74 69 76  ATE_ON     activ
0220: 65 20 73 71 6c 69 74 65 20 66 69 6c 65 20 6c 6f  e sqlite file lo
0230: 63 6b 73 20 6d 61 74 63 68 20 74 68 65 20 73 70  cks match the sp
0240: 65 63 69 66 69 65 64 20 70 69 64 0a 2a 2a 20 20  ecified pid.**  
0250: 20 53 51 4c 49 54 45 5f 4c 4f 43 4b 53 54 41 54   SQLITE_LOCKSTAT
0260: 45 5f 4e 4f 54 41 44 42 20 70 61 74 68 20 70 6f  E_NOTADB path po
0270: 69 6e 74 73 20 74 6f 20 61 20 66 69 6c 65 20 74  ints to a file t
0280: 68 61 74 20 69 73 20 6e 6f 74 20 61 6e 20 73 71  hat is not an sq
0290: 6c 69 74 65 20 64 62 20 66 69 6c 65 0a 2a 2a 20  lite db file.** 
02a0: 20 20 53 51 4c 49 54 45 5f 4c 4f 43 4b 53 54 41    SQLITE_LOCKSTA
02b0: 54 45 5f 45 52 52 4f 52 20 20 70 61 74 68 20 77  TE_ERROR  path w
02c0: 61 73 20 6e 6f 74 20 76 61 69 6c 64 20 6f 72 20  as not vaild or 
02d0: 77 61 73 20 75 6e 72 65 61 64 61 62 6c 65 0a 2a  was unreadable.*
02e0: 2a 0a 2a 2a 20 54 68 65 72 65 20 69 73 20 6e 6f  *.** There is no
02f0: 20 73 75 70 70 6f 72 74 20 66 6f 72 20 69 64 65   support for ide
0300: 6e 74 69 66 79 69 6e 67 20 64 62 20 66 69 6c 65  ntifying db file
0310: 73 20 65 6e 63 72 79 70 74 65 64 20 76 69 61 20  s encrypted via 
0320: 53 45 45 20 65 6e 63 72 79 70 74 69 6f 6e 0a 2a  SEE encryption.*
0330: 2a 20 63 75 72 72 65 6e 74 6c 79 2e 20 20 5a 65  * currently.  Ze
0340: 72 6f 20 62 79 74 65 20 66 69 6c 65 73 20 61 72  ro byte files ar
0350: 65 20 74 65 73 74 65 64 20 66 6f 72 20 73 71 6c  e tested for sql
0360: 69 74 65 20 6c 6f 63 6b 73 2c 20 62 75 74 20 69  ite locks, but i
0370: 66 20 6e 6f 20 73 71 6c 69 74 65 20 0a 2a 2a 20  f no sqlite .** 
0380: 6c 6f 63 6b 73 20 61 72 65 20 70 72 65 73 65 6e  locks are presen
0390: 74 20 74 68 65 6e 20 53 51 4c 49 54 45 5f 4c 4f  t then SQLITE_LO
03a0: 43 4b 53 54 41 54 45 5f 4e 4f 54 41 44 42 20 69  CKSTATE_NOTADB i
03b0: 73 20 72 65 74 75 72 6e 65 64 2e 0a 2a 2f 0a 65  s returned..*/.e
03c0: 78 74 65 72 6e 20 69 6e 74 20 5f 73 71 6c 69 74  xtern int _sqlit
03d0: 65 33 5f 6c 6f 63 6b 73 74 61 74 65 28 63 6f 6e  e3_lockstate(con
03e0: 73 74 20 63 68 61 72 20 2a 70 61 74 68 2c 20 70  st char *path, p
03f0: 69 64 5f 74 20 70 69 64 29 3b 0a 0a 2f 2a 0a 2a  id_t pid);../*.*
0400: 2a 20 54 65 73 74 20 61 6e 20 6f 70 65 6e 20 64  * Test an open d
0410: 61 74 61 62 61 73 65 20 63 6f 6e 6e 65 63 74 69  atabase connecti
0420: 6f 6e 20 66 6f 72 20 73 71 6c 69 74 65 20 6c 6f  on for sqlite lo
0430: 63 6b 73 20 68 65 6c 64 20 62 79 20 61 20 70 72  cks held by a pr
0440: 6f 63 65 73 73 20 49 44 2c 0a 2a 2a 20 69 66 20  ocess ID,.** if 
0450: 61 20 70 72 6f 63 65 73 73 20 68 61 73 20 61 6e  a process has an
0460: 20 6f 70 65 6e 20 64 61 74 61 62 61 73 65 20 63   open database c
0470: 6f 6e 6e 65 63 74 69 6f 6e 20 74 68 69 73 20 77  onnection this w
0480: 69 6c 6c 20 61 76 6f 69 64 20 74 72 61 73 68 69  ill avoid trashi
0490: 6e 67 20 66 69 6c 65 0a 2a 2a 20 6c 6f 63 6b 73  ng file.** locks
04a0: 20 62 79 20 72 65 2d 75 73 69 6e 67 20 6f 70 65   by re-using ope
04b0: 6e 20 66 69 6c 65 20 64 65 73 63 72 69 70 74 6f  n file descripto
04c0: 72 73 20 66 6f 72 20 74 68 65 20 64 61 74 61 62  rs for the datab
04d0: 61 73 65 20 66 69 6c 65 20 61 6e 64 20 73 75 70  ase file and sup
04e0: 70 6f 72 74 0a 2a 2a 20 66 69 6c 65 73 20 28 2d  port.** files (-
04f0: 73 68 6d 29 0a 2a 2f 0a 23 64 65 66 69 6e 65 20  shm).*/.#define 
0500: 53 51 4c 49 54 45 5f 46 43 4e 54 4c 5f 4c 4f 43  SQLITE_FCNTL_LOC
0510: 4b 53 54 41 54 45 5f 50 49 44 20 20 20 20 20 20  KSTATE_PID      
0520: 20 20 20 20 31 30 33 0a 0a 2f 2a 0a 2a 2a 20 50      103../*.** P
0530: 61 73 73 20 74 68 65 20 53 51 4c 49 54 45 5f 54  ass the SQLITE_T
0540: 52 55 4e 43 41 54 45 5f 44 41 54 41 42 41 53 45  RUNCATE_DATABASE
0550: 20 6f 70 65 72 61 74 69 6f 6e 20 63 6f 64 65 20   operation code 
0560: 74 6f 20 73 71 6c 69 74 65 33 5f 66 69 6c 65 5f  to sqlite3_file_
0570: 63 6f 6e 74 72 6f 6c 28 29 20 0a 2a 2a 20 74 6f  control() .** to
0580: 20 74 72 75 6e 63 61 74 65 20 61 20 64 61 74 61   truncate a data
0590: 62 61 73 65 20 61 6e 64 20 69 74 73 20 61 73 73  base and its ass
05a0: 6f 63 69 61 74 65 64 20 6a 6f 75 72 6e 61 6c 20  ociated journal 
05b0: 66 69 6c 65 20 74 6f 20 7a 65 72 6f 20 6c 65 6e  file to zero len
05c0: 67 74 68 2e 20 20 54 68 65 20 0a 2a 2a 20 53 51  gth.  The .** SQ
05d0: 4c 49 54 45 5f 54 52 55 4e 43 41 54 45 5f 2a 20  LITE_TRUNCATE_* 
05e0: 66 6c 61 67 73 20 72 65 70 72 65 73 65 6e 74 20  flags represent 
05f0: 6f 70 74 69 6f 6e 61 6c 20 66 6c 61 67 73 20 74  optional flags t
0600: 6f 20 73 61 66 65 6c 79 20 69 6e 69 74 69 61 6c  o safely initial
0610: 69 7a 65 20 61 6e 0a 2a 2a 20 65 6d 70 74 79 20  ize an.** empty 
0620: 64 61 74 61 62 61 73 65 20 69 6e 20 74 68 65 20  database in the 
0630: 70 6c 61 63 65 20 6f 66 20 74 68 65 20 74 72 75  place of the tru
0640: 6e 63 61 74 65 64 20 64 61 74 61 62 61 73 65 2c  ncated database,
0650: 20 74 68 65 20 66 6c 61 67 73 20 61 72 65 20 70   the flags are p
0660: 61 73 73 65 64 20 0a 2a 2a 20 69 6e 74 6f 20 73  assed .** into s
0670: 71 6c 69 74 65 33 5f 66 69 6c 65 5f 63 6f 6e 74  qlite3_file_cont
0680: 72 6f 6c 20 76 69 61 20 74 68 65 20 66 6f 75 72  rol via the four
0690: 74 68 20 61 72 67 75 6d 65 6e 74 20 75 73 69 6e  th argument usin
06a0: 67 20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61  g a pointer to a
06b0: 6e 20 69 6e 74 65 67 65 72 0a 2a 2a 20 63 6f 6e  n integer.** con
06c0: 66 69 67 75 72 65 64 20 77 69 74 68 20 74 68 65  figured with the
06d0: 20 4f 52 65 64 20 66 6c 61 67 73 2e 20 20 49 66   ORed flags.  If
06e0: 20 74 68 65 20 66 6f 75 72 74 68 20 61 72 67 75   the fourth argu
06f0: 6d 65 6e 74 20 69 73 20 4e 55 4c 4c 2c 20 74 68  ment is NULL, th
0700: 65 20 64 65 66 61 75 6c 74 20 0a 2a 2a 20 62 65  e default .** be
0710: 68 61 76 69 6f 72 20 69 73 20 61 70 70 6c 69 65  havior is applie
0720: 64 20 61 6e 64 20 74 68 65 20 64 61 74 61 62 61  d and the databa
0730: 73 65 20 66 69 6c 65 20 69 73 20 74 72 75 6e 63  se file is trunc
0740: 61 74 65 64 20 74 6f 20 7a 65 72 6f 20 62 79 74  ated to zero byt
0750: 65 73 2c 20 61 20 72 6f 6c 6c 62 61 63 6b 20 0a  es, a rollback .
0760: 2a 2a 20 6a 6f 75 72 6e 61 6c 20 28 69 66 20 70  ** journal (if p
0770: 72 65 73 65 6e 74 29 20 69 73 20 75 6e 6c 69 6e  resent) is unlin
0780: 6b 65 64 2c 20 61 20 57 41 4c 20 6a 6f 75 72 6e  ked, a WAL journ
0790: 61 6c 20 28 69 66 20 70 72 65 73 65 6e 74 29 20  al (if present) 
07a0: 69 73 20 74 72 75 6e 63 61 74 65 64 20 74 6f 20  is truncated to 
07b0: 7a 65 72 6f 20 0a 2a 2a 20 62 79 74 65 73 20 61  zero .** bytes a
07c0: 6e 64 20 74 68 65 20 66 69 72 73 74 20 66 65 77  nd the first few
07d0: 20 62 79 74 65 73 20 6f 66 20 74 68 65 20 2d 73   bytes of the -s
07e0: 68 6d 20 66 69 6c 65 20 69 73 20 73 63 72 61 6d  hm file is scram
07f0: 62 6c 65 64 20 74 6f 20 74 72 69 67 67 65 72 20  bled to trigger 
0800: 65 78 69 73 74 69 6e 67 0a 2a 2a 20 63 6f 6e 6e  existing.** conn
0810: 65 63 74 69 6f 6e 73 20 74 6f 20 72 65 62 75 69  ections to rebui
0820: 6c 64 20 74 68 65 20 69 6e 64 65 78 20 66 72 6f  ld the index fro
0830: 6d 20 74 68 65 20 64 61 74 61 62 61 73 65 20 66  m the database f
0840: 69 6c 65 20 63 6f 6e 74 65 6e 74 73 2e 0a 2a 2f  ile contents..*/
0850: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
0860: 46 43 4e 54 4c 5f 54 52 55 4e 43 41 54 45 5f 44  FCNTL_TRUNCATE_D
0870: 41 54 41 42 41 53 45 20 20 20 20 20 20 31 30 31  ATABASE      101
0880: 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f  .#define SQLITE_
0890: 54 52 55 4e 43 41 54 45 5f 44 41 54 41 42 41 53  TRUNCATE_DATABAS
08a0: 45 20 20 20 20 20 20 20 20 20 20 20 20 53 51 4c  E            SQL
08b0: 49 54 45 5f 46 43 4e 54 4c 5f 54 52 55 4e 43 41  ITE_FCNTL_TRUNCA
08c0: 54 45 5f 44 41 54 41 42 41 53 45 0a 23 64 65 66  TE_DATABASE.#def
08d0: 69 6e 65 20 53 51 4c 49 54 45 5f 54 52 55 4e 43  ine SQLITE_TRUNC
08e0: 41 54 45 5f 49 4e 49 54 49 41 4c 49 5a 45 5f 48  ATE_INITIALIZE_H
08f0: 45 41 44 45 52 5f 4d 41 53 4b 20 20 20 20 28 30  EADER_MASK    (0
0900: 78 37 46 3c 3c 30 29 0a 23 64 65 66 69 6e 65 20  x7F<<0).#define 
0910: 53 51 4c 49 54 45 5f 54 52 55 4e 43 41 54 45 5f  SQLITE_TRUNCATE_
0920: 4a 4f 55 52 4e 41 4c 4d 4f 44 45 5f 57 41 4c 20  JOURNALMODE_WAL 
0930: 20 20 20 20 20 20 20 20 20 20 28 30 78 31 3c 3c            (0x1<<
0940: 30 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49 54  0).#define SQLIT
0950: 45 5f 54 52 55 4e 43 41 54 45 5f 41 55 54 4f 56  E_TRUNCATE_AUTOV
0960: 41 43 55 55 4d 5f 4d 41 53 4b 20 20 20 20 20 20  ACUUM_MASK      
0970: 20 20 20 20 20 28 30 78 33 3c 3c 32 29 0a 23 64       (0x3<<2).#d
0980: 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 54 52 55  efine SQLITE_TRU
0990: 4e 43 41 54 45 5f 41 55 54 4f 56 41 43 55 55 4d  NCATE_AUTOVACUUM
09a0: 5f 4f 46 46 20 20 20 20 20 20 20 20 20 20 20 20  _OFF            
09b0: 28 30 78 31 3c 3c 32 29 0a 23 64 65 66 69 6e 65  (0x1<<2).#define
09c0: 20 53 51 4c 49 54 45 5f 54 52 55 4e 43 41 54 45   SQLITE_TRUNCATE
09d0: 5f 41 55 54 4f 56 41 43 55 55 4d 5f 46 55 4c 4c  _AUTOVACUUM_FULL
09e0: 20 20 20 20 20 20 20 20 20 20 20 28 30 78 32 3c             (0x2<
09f0: 3c 32 29 0a 23 64 65 66 69 6e 65 20 53 51 4c 49  <2).#define SQLI
0a00: 54 45 5f 54 52 55 4e 43 41 54 45 5f 41 55 54 4f  TE_TRUNCATE_AUTO
0a10: 56 41 43 55 55 4d 5f 49 4e 43 52 45 4d 45 4e 54  VACUUM_INCREMENT
0a20: 41 4c 20 20 20 20 28 30 78 33 3c 3c 32 29 0a 23  AL    (0x3<<2).#
0a30: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 54 52  define SQLITE_TR
0a40: 55 4e 43 41 54 45 5f 50 41 47 45 53 49 5a 45 5f  UNCATE_PAGESIZE_
0a50: 4d 41 53 4b 20 20 20 20 20 20 20 20 20 20 20 20  MASK            
0a60: 20 28 30 78 37 3c 3c 34 29 0a 23 64 65 66 69 6e   (0x7<<4).#defin
0a70: 65 20 53 51 4c 49 54 45 5f 54 52 55 4e 43 41 54  e SQLITE_TRUNCAT
0a80: 45 5f 50 41 47 45 53 49 5a 45 5f 31 30 32 34 20  E_PAGESIZE_1024 
0a90: 20 20 20 20 20 20 20 20 20 20 20 20 28 30 78 31              (0x1
0aa0: 3c 3c 34 29 0a 23 64 65 66 69 6e 65 20 53 51 4c  <<4).#define SQL
0ab0: 49 54 45 5f 54 52 55 4e 43 41 54 45 5f 50 41 47  ITE_TRUNCATE_PAG
0ac0: 45 53 49 5a 45 5f 32 30 34 38 20 20 20 20 20 20  ESIZE_2048      
0ad0: 20 20 20 20 20 20 20 28 30 78 32 3c 3c 34 29 0a         (0x2<<4).
0ae0: 23 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 54  #define SQLITE_T
0af0: 52 55 4e 43 41 54 45 5f 50 41 47 45 53 49 5a 45  RUNCATE_PAGESIZE
0b00: 5f 34 30 39 36 20 20 20 20 20 20 20 20 20 20 20  _4096           
0b10: 20 20 28 30 78 33 3c 3c 34 29 0a 23 64 65 66 69    (0x3<<4).#defi
0b20: 6e 65 20 53 51 4c 49 54 45 5f 54 52 55 4e 43 41  ne SQLITE_TRUNCA
0b30: 54 45 5f 50 41 47 45 53 49 5a 45 5f 38 31 39 32  TE_PAGESIZE_8192
0b40: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 30 78               (0x
0b50: 34 3c 3c 34 29 0a 23 64 65 66 69 6e 65 20 53 51  4<<4).#define SQ
0b60: 4c 49 54 45 5f 54 52 55 4e 43 41 54 45 5f 46 4f  LITE_TRUNCATE_FO
0b70: 52 43 45 20 20 20 20 20 20 20 20 20 20 20 20 20  RCE             
0b80: 20 20 20 20 20 20 20 20 28 30 78 31 3c 3c 37 29          (0x1<<7)
0b90: 0a 0a 2f 2a 0a 2a 2a 20 50 61 73 73 20 74 68 65  ../*.** Pass the
0ba0: 20 53 51 4c 49 54 45 5f 52 45 50 4c 41 43 45 5f   SQLITE_REPLACE_
0bb0: 44 41 54 41 42 41 53 45 20 6f 70 65 72 61 74 69  DATABASE operati
0bc0: 6f 6e 20 63 6f 64 65 20 74 6f 20 73 71 6c 69 74  on code to sqlit
0bd0: 65 33 5f 66 69 6c 65 5f 63 6f 6e 74 72 6f 6c 28  e3_file_control(
0be0: 29 0a 2a 2a 20 61 6e 64 20 61 20 73 71 6c 69 74  ).** and a sqlit
0bf0: 65 33 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e  e3 pointer to an
0c00: 6f 74 68 65 72 20 6f 70 65 6e 20 64 61 74 61 62  other open datab
0c10: 61 73 65 20 66 69 6c 65 20 74 6f 20 73 61 66 65  ase file to safe
0c20: 6c 79 20 63 6f 70 79 20 74 68 65 20 0a 2a 2a 20  ly copy the .** 
0c30: 63 6f 6e 74 65 6e 74 73 20 6f 66 20 74 68 61 74  contents of that
0c40: 20 64 61 74 61 62 61 73 65 20 66 69 6c 65 20 69   database file i
0c50: 6e 74 6f 20 74 68 65 20 72 65 63 65 69 76 69 6e  nto the receivin
0c60: 67 20 64 61 74 61 62 61 73 65 2e 0a 2a 2f 0a 23  g database..*/.#
0c70: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 46 43  define SQLITE_FC
0c80: 4e 54 4c 5f 52 45 50 4c 41 43 45 5f 44 41 54 41  NTL_REPLACE_DATA
0c90: 42 41 53 45 20 20 20 20 20 20 20 31 30 32 0a 23  BASE       102.#
0ca0: 64 65 66 69 6e 65 20 53 51 4c 49 54 45 5f 52 45  define SQLITE_RE
0cb0: 50 4c 41 43 45 5f 44 41 54 41 42 41 53 45 20 20  PLACE_DATABASE  
0cc0: 20 20 20 20 20 20 20 20 20 20 20 53 51 4c 49 54             SQLIT
0cd0: 45 5f 46 43 4e 54 4c 5f 52 45 50 4c 41 43 45 5f  E_FCNTL_REPLACE_
0ce0: 44 41 54 41 42 41 53 45 0a 0a 23 69 66 64 65 66  DATABASE..#ifdef
0cf0: 20 5f 5f 63 70 6c 75 73 70 6c 75 73 0a 7d 20 20   __cplusplus.}  
0d00: 2f 2a 20 45 6e 64 20 6f 66 20 74 68 65 20 27 65  /* End of the 'e
0d10: 78 74 65 72 6e 20 22 43 22 27 20 62 6c 6f 63 6b  xtern "C"' block
0d20: 20 2a 2f 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69   */.#endif.#endi
0d30: 66 0a                                            f.