@@ -409,6 +409,7 @@ int sqlite3PagerTrace=1; /* True to enable tracing */
409409/*
410410** A macro used for invoking the codec if there is one
411411*/
412+ /* BEGIN SQLCIPHER */
412413#ifdef SQLITE_HAS_CODEC
413414# define CODEC1 (P ,D ,N ,X ,E ) \
414415 if( P->xCodec && P->xCodec(P->pCodec,D,N,X)==0 ){ E; }
@@ -419,6 +420,7 @@ int sqlite3PagerTrace=1; /* True to enable tracing */
419420# define CODEC1 (P ,D ,N ,X ,E ) /* NO-OP */
420421# define CODEC2 (P ,D ,N ,X ,E ,O ) O=(char*)D
421422#endif
423+ /* END SQLCIPHER */
422424
423425/*
424426** The maximum allowed sector size. 64KiB. If the xSectorsize() method
@@ -705,12 +707,14 @@ struct Pager {
705707#endif
706708 void (* xReiniter )(DbPage * ); /* Call this routine when reloading pages */
707709 int (* xGet )(Pager * ,Pgno ,DbPage * * ,int ); /* Routine to fetch a patch */
710+ /* BEGIN SQLCIPHER */
708711#ifdef SQLITE_HAS_CODEC
709712 void * (* xCodec )(void * ,void * ,Pgno ,int ); /* Routine for en/decoding data */
710713 void (* xCodecSizeChng )(void * ,int ,int ); /* Notify of page size changes */
711714 void (* xCodecFree )(void * ); /* Destructor for the codec */
712715 void * pCodec ; /* First argument to xCodec... methods */
713716#endif
717+ /* END SQLCIPHER */
714718 char * pTmpSpace ; /* Pager.pageSize bytes of space for tmp use */
715719 PCache * pPCache ; /* Pointer to page cache object */
716720#ifndef SQLITE_OMIT_WAL
@@ -837,9 +841,11 @@ static const unsigned char aJournalMagic[] = {
837841int sqlite3PagerDirectReadOk (Pager * pPager , Pgno pgno ){
838842 if ( pPager -> fd -> pMethods == 0 ) return 0 ;
839843 if ( sqlite3PCacheIsDirty (pPager -> pPCache ) ) return 0 ;
844+ /* BEGIN SQLCIPHER */
840845#ifdef SQLITE_HAS_CODEC
841846 if ( pPager -> xCodec != 0 ) return 0 ;
842847#endif
848+ /* END SQLCIPHER */
843849#ifndef SQLITE_OMIT_WAL
844850 if ( pPager -> pWal ){
845851 u32 iRead = 0 ;
@@ -1074,9 +1080,11 @@ static void setGetterMethod(Pager *pPager){
10741080 pPager -> xGet = getPageError ;
10751081#if SQLITE_MAX_MMAP_SIZE > 0
10761082 }else if ( USEFETCH (pPager )
1083+ /* BEGIN SQLCIPHER */
10771084#ifdef SQLITE_HAS_CODEC
10781085 && pPager -> xCodec == 0
10791086#endif
1087+ /* END SQLCIPHER */
10801088 ){
10811089 pPager -> xGet = getPageMMap ;
10821090#endif /* SQLITE_MAX_MMAP_SIZE>0 */
@@ -2229,6 +2237,7 @@ static u32 pager_cksum(Pager *pPager, const u8 *aData){
22292237** Report the current page size and number of reserved bytes back
22302238** to the codec.
22312239*/
2240+ /* BEGIN SQLCIPHER */
22322241#ifdef SQLITE_HAS_CODEC
22332242static void pagerReportSize (Pager * pPager ){
22342243 if ( pPager -> xCodecSizeChng ){
@@ -2239,7 +2248,9 @@ static void pagerReportSize(Pager *pPager){
22392248#else
22402249# define pagerReportSize (X ) /* No-op if we do not support a codec */
22412250#endif
2251+ /* END SQLCIPHER */
22422252
2253+ /* BEGIN SQLCIPHER */
22432254#ifdef SQLITE_HAS_CODEC
22442255/*
22452256** Make sure the number of reserved bits is the same in the destination
@@ -2253,6 +2264,7 @@ void sqlite3PagerAlignReserve(Pager *pDest, Pager *pSrc){
22532264 }
22542265}
22552266#endif
2267+ /* END SQLCIPHER */
22562268
22572269/*
22582270** Read a single page from either the journal file (if isMainJrnl==1) or
@@ -2305,11 +2317,13 @@ static int pager_playback_one_page(
23052317 char * aData ; /* Temporary storage for the page */
23062318 sqlite3_file * jfd ; /* The file descriptor for the journal file */
23072319 int isSynced ; /* True if journal page is synced */
2320+ /* BEGIN SQLCIPHER */
23082321#ifdef SQLITE_HAS_CODEC
23092322 /* The jrnlEnc flag is true if Journal pages should be passed through
23102323 ** the codec. It is false for pure in-memory journals. */
23112324 const int jrnlEnc = (isMainJrnl || pPager -> subjInMemory == 0 );
23122325#endif
2326+ /* END SQLCIPHER */
23132327
23142328 assert ( (isMainJrnl & ~1 )== 0 ); /* isMainJrnl is 0 or 1 */
23152329 assert ( (isSavepnt & ~1 )== 0 ); /* isSavepnt is 0 or 1 */
@@ -2440,26 +2454,30 @@ static int pager_playback_one_page(
24402454 ** is if the data was just read from an in-memory sub-journal. In that
24412455 ** case it must be encrypted here before it is copied into the database
24422456 ** file. */
2457+ /* BEGIN SQLCIPHER */
24432458#ifdef SQLITE_HAS_CODEC
24442459 if ( !jrnlEnc ){
24452460 CODEC2 (pPager , aData , pgno , 7 , rc = SQLITE_NOMEM_BKPT , aData );
24462461 rc = sqlite3OsWrite (pPager -> fd , (u8 * )aData , pPager -> pageSize , ofst );
24472462 CODEC1 (pPager , aData , pgno , 3 , rc = SQLITE_NOMEM_BKPT );
24482463 }else
24492464#endif
2465+ /* END SQLCIPHER */
24502466 rc = sqlite3OsWrite (pPager -> fd , (u8 * )aData , pPager -> pageSize , ofst );
24512467
24522468 if ( pgno > pPager -> dbFileSize ){
24532469 pPager -> dbFileSize = pgno ;
24542470 }
24552471 if ( pPager -> pBackup ){
2472+ /* BEGIN SQLCIPHER */
24562473#ifdef SQLITE_HAS_CODEC
24572474 if ( jrnlEnc ){
24582475 CODEC1 (pPager , aData , pgno , 3 , rc = SQLITE_NOMEM_BKPT );
24592476 sqlite3BackupUpdate (pPager -> pBackup , pgno , (u8 * )aData );
24602477 CODEC2 (pPager , aData , pgno , 7 , rc = SQLITE_NOMEM_BKPT ,aData );
24612478 }else
24622479#endif
2480+ /* END SQLCIPHER */
24632481 sqlite3BackupUpdate (pPager -> pBackup , pgno , (u8 * )aData );
24642482 }
24652483 }else if ( !isMainJrnl && pPg == 0 ){
@@ -2512,9 +2530,11 @@ static int pager_playback_one_page(
25122530 }
25132531
25142532 /* Decode the page just read from disk */
2533+ /* BEGIN SQLCIPHER */
25152534#if SQLITE_HAS_CODEC
25162535 if ( jrnlEnc ){ CODEC1 (pPager , pData , pPg -> pgno , 3 , rc = SQLITE_NOMEM_BKPT ); }
25172536#endif
2537+ /* END SQLCIPHER */
25182538 sqlite3PcacheRelease (pPg );
25192539 }
25202540 return rc ;
@@ -4219,9 +4239,11 @@ int sqlite3PagerClose(Pager *pPager, sqlite3 *db){
42194239 sqlite3PageFree (pTmp );
42204240 sqlite3PcacheClose (pPager -> pPCache );
42214241
4242+ /* BEGIN SQLCIPHER */
42224243#ifdef SQLITE_HAS_CODEC
42234244 if ( pPager -> xCodecFree ) pPager -> xCodecFree (pPager -> pCodec );
42244245#endif
4246+ /* END SQLCIPHER */
42254247
42264248 assert ( !pPager -> aSavepoint && !pPager -> pInJournal );
42274249 assert ( !isOpen (pPager -> jfd ) && !isOpen (pPager -> sjfd ) );
@@ -4564,11 +4586,13 @@ static int subjournalPage(PgHdr *pPg){
45644586 i64 offset = (i64 )pPager -> nSubRec * (4 + pPager -> pageSize );
45654587 char * pData2 ;
45664588
4589+ /* BEGIN SQLCIPHER */
45674590#if SQLITE_HAS_CODEC
45684591 if ( !pPager -> subjInMemory ){
45694592 CODEC2 (pPager , pData , pPg -> pgno , 7 , return SQLITE_NOMEM_BKPT , pData2 );
45704593 }else
45714594#endif
4595+ /* END SQLCIPHER */
45724596 pData2 = pData ;
45734597 PAGERTRACE (("STMT-JOURNAL %d page %d\n" , PAGERID (pPager ), pPg -> pgno ));
45744598 rc = write32bits (pPager -> sjfd , offset , pPg -> pgno );
@@ -5671,9 +5695,11 @@ static int getPageMMap(
56715695 );
56725696
56735697 assert ( USEFETCH (pPager ) );
5698+ /* BEGIN SQLCIPHER */
56745699#ifdef SQLITE_HAS_CODEC
56755700 assert ( pPager -> xCodec == 0 );
56765701#endif
5702+ /* END SQLCIPHER */
56775703
56785704 /* Optimization note: Adding the "pgno<=1" term before "pgno==0" here
56795705 ** allows the compiler optimizer to reuse the results of the "pgno>1"
@@ -7115,6 +7141,7 @@ const char *sqlite3PagerJournalname(Pager *pPager){
71157141 return pPager -> zJournal ;
71167142}
71177143
7144+ /* BEGIN SQLCIPHER */
71187145#ifdef SQLITE_HAS_CODEC
71197146/*
71207147** Set or retrieve the codec for this pager
@@ -7162,6 +7189,7 @@ int sqlite3PagerState(Pager *pPager){
71627189 return pPager -> eState ;
71637190}
71647191#endif /* SQLITE_HAS_CODEC */
7192+ /* END SQLCIPHER */
71657193
71667194#ifndef SQLITE_OMIT_AUTOVACUUM
71677195/*
0 commit comments