Fossil SCM

Enable the 'sqlite' command to work with SEE.

mistachkin 2017-05-29 02:37 UTC trunk
Commit 564edc69aa4c5c50dd420eb762a525c7c9cbd57efe506fe2ccd877b8a0ffd69b
+1 -1
--- src/main.mk
+++ src/main.mk
@@ -569,11 +569,11 @@
569569
SQLITE3_SHELL_SRC.0 = shell.c
570570
SQLITE3_SHELL_SRC.1 = shell-see.c
571571
SQLITE3_SHELL_SRC. = shell.c
572572
SQLITE3_SHELL_SRC = $(SRCDIR)/$(SQLITE3_SHELL_SRC.$(USE_SEE))
573573
SEE_FLAGS.0 =
574
-SEE_FLAGS.1 = -DSQLITE_HAS_CODEC
574
+SEE_FLAGS.1 = -DSQLITE_HAS_CODEC -DSQLITE_SHELL_DBKEY_PROC=fossil_key
575575
SEE_FLAGS. =
576576
SEE_FLAGS = $(SEE_FLAGS.$(USE_SEE))
577577
578578
579579
EXTRAOBJ = \
580580
--- src/main.mk
+++ src/main.mk
@@ -569,11 +569,11 @@
569 SQLITE3_SHELL_SRC.0 = shell.c
570 SQLITE3_SHELL_SRC.1 = shell-see.c
571 SQLITE3_SHELL_SRC. = shell.c
572 SQLITE3_SHELL_SRC = $(SRCDIR)/$(SQLITE3_SHELL_SRC.$(USE_SEE))
573 SEE_FLAGS.0 =
574 SEE_FLAGS.1 = -DSQLITE_HAS_CODEC
575 SEE_FLAGS. =
576 SEE_FLAGS = $(SEE_FLAGS.$(USE_SEE))
577
578
579 EXTRAOBJ = \
580
--- src/main.mk
+++ src/main.mk
@@ -569,11 +569,11 @@
569 SQLITE3_SHELL_SRC.0 = shell.c
570 SQLITE3_SHELL_SRC.1 = shell-see.c
571 SQLITE3_SHELL_SRC. = shell.c
572 SQLITE3_SHELL_SRC = $(SRCDIR)/$(SQLITE3_SHELL_SRC.$(USE_SEE))
573 SEE_FLAGS.0 =
574 SEE_FLAGS.1 = -DSQLITE_HAS_CODEC -DSQLITE_SHELL_DBKEY_PROC=fossil_key
575 SEE_FLAGS. =
576 SEE_FLAGS = $(SEE_FLAGS.$(USE_SEE))
577
578
579 EXTRAOBJ = \
580
--- src/makemake.tcl
+++ src/makemake.tcl
@@ -387,11 +387,11 @@
387387
SQLITE3_SHELL_SRC.0 = shell.c
388388
SQLITE3_SHELL_SRC.1 = shell-see.c
389389
SQLITE3_SHELL_SRC. = shell.c
390390
SQLITE3_SHELL_SRC = $(SRCDIR)/$(SQLITE3_SHELL_SRC.$(USE_SEE))
391391
SEE_FLAGS.0 =
392
-SEE_FLAGS.1 = -DSQLITE_HAS_CODEC
392
+SEE_FLAGS.1 = -DSQLITE_HAS_CODEC -DSQLITE_SHELL_DBKEY_PROC=fossil_key
393393
SEE_FLAGS. =
394394
SEE_FLAGS = $(SEE_FLAGS.$(USE_SEE))
395395
}]
396396
397397
writeln [string map [list <<<NEXT_LINE>>> \\] {
@@ -1072,11 +1072,11 @@
10721072
SQLITE3_SHELL_SRC.0 = shell.c
10731073
SQLITE3_SHELL_SRC.1 = shell-see.c
10741074
SQLITE3_SHELL_SRC. = shell.c
10751075
SQLITE3_SHELL_SRC = $(SRCDIR)/$(SQLITE3_SHELL_SRC.$(USE_SEE))
10761076
SEE_FLAGS.0 =
1077
-SEE_FLAGS.1 = -DSQLITE_HAS_CODEC
1077
+SEE_FLAGS.1 = -DSQLITE_HAS_CODEC -DSQLITE_SHELL_DBKEY_PROC=fossil_key
10781078
SEE_FLAGS. =
10791079
SEE_FLAGS = $(SEE_FLAGS.$(USE_SEE))
10801080
}
10811081
10821082
writeln [string map [list <<<NEXT_LINE>>> \\] {
@@ -1850,11 +1850,11 @@
18501850
18511851
codecheck1$E: $(SRCDIR)\codecheck1.c
18521852
$(BCC) $**
18531853
18541854
!if $(USE_SEE)!=0
1855
-SEE_FLAGS = /DSQLITE_HAS_CODEC=1
1855
+SEE_FLAGS = /DSQLITE_HAS_CODEC=1 /DSQLITE_SHELL_DBKEY_PROC=fossil_key
18561856
SQLITE3_SHELL_SRC = $(SRCDIR)\shell-see.c
18571857
SQLITE3_SRC = $(SRCDIR)\sqlite3-see.c
18581858
!else
18591859
SEE_FLAGS =
18601860
SQLITE3_SHELL_SRC = $(SRCDIR)\shell.c
18611861
--- src/makemake.tcl
+++ src/makemake.tcl
@@ -387,11 +387,11 @@
387 SQLITE3_SHELL_SRC.0 = shell.c
388 SQLITE3_SHELL_SRC.1 = shell-see.c
389 SQLITE3_SHELL_SRC. = shell.c
390 SQLITE3_SHELL_SRC = $(SRCDIR)/$(SQLITE3_SHELL_SRC.$(USE_SEE))
391 SEE_FLAGS.0 =
392 SEE_FLAGS.1 = -DSQLITE_HAS_CODEC
393 SEE_FLAGS. =
394 SEE_FLAGS = $(SEE_FLAGS.$(USE_SEE))
395 }]
396
397 writeln [string map [list <<<NEXT_LINE>>> \\] {
@@ -1072,11 +1072,11 @@
1072 SQLITE3_SHELL_SRC.0 = shell.c
1073 SQLITE3_SHELL_SRC.1 = shell-see.c
1074 SQLITE3_SHELL_SRC. = shell.c
1075 SQLITE3_SHELL_SRC = $(SRCDIR)/$(SQLITE3_SHELL_SRC.$(USE_SEE))
1076 SEE_FLAGS.0 =
1077 SEE_FLAGS.1 = -DSQLITE_HAS_CODEC
1078 SEE_FLAGS. =
1079 SEE_FLAGS = $(SEE_FLAGS.$(USE_SEE))
1080 }
1081
1082 writeln [string map [list <<<NEXT_LINE>>> \\] {
@@ -1850,11 +1850,11 @@
1850
1851 codecheck1$E: $(SRCDIR)\codecheck1.c
1852 $(BCC) $**
1853
1854 !if $(USE_SEE)!=0
1855 SEE_FLAGS = /DSQLITE_HAS_CODEC=1
1856 SQLITE3_SHELL_SRC = $(SRCDIR)\shell-see.c
1857 SQLITE3_SRC = $(SRCDIR)\sqlite3-see.c
1858 !else
1859 SEE_FLAGS =
1860 SQLITE3_SHELL_SRC = $(SRCDIR)\shell.c
1861
--- src/makemake.tcl
+++ src/makemake.tcl
@@ -387,11 +387,11 @@
387 SQLITE3_SHELL_SRC.0 = shell.c
388 SQLITE3_SHELL_SRC.1 = shell-see.c
389 SQLITE3_SHELL_SRC. = shell.c
390 SQLITE3_SHELL_SRC = $(SRCDIR)/$(SQLITE3_SHELL_SRC.$(USE_SEE))
391 SEE_FLAGS.0 =
392 SEE_FLAGS.1 = -DSQLITE_HAS_CODEC -DSQLITE_SHELL_DBKEY_PROC=fossil_key
393 SEE_FLAGS. =
394 SEE_FLAGS = $(SEE_FLAGS.$(USE_SEE))
395 }]
396
397 writeln [string map [list <<<NEXT_LINE>>> \\] {
@@ -1072,11 +1072,11 @@
1072 SQLITE3_SHELL_SRC.0 = shell.c
1073 SQLITE3_SHELL_SRC.1 = shell-see.c
1074 SQLITE3_SHELL_SRC. = shell.c
1075 SQLITE3_SHELL_SRC = $(SRCDIR)/$(SQLITE3_SHELL_SRC.$(USE_SEE))
1076 SEE_FLAGS.0 =
1077 SEE_FLAGS.1 = -DSQLITE_HAS_CODEC -DSQLITE_SHELL_DBKEY_PROC=fossil_key
1078 SEE_FLAGS. =
1079 SEE_FLAGS = $(SEE_FLAGS.$(USE_SEE))
1080 }
1081
1082 writeln [string map [list <<<NEXT_LINE>>> \\] {
@@ -1850,11 +1850,11 @@
1850
1851 codecheck1$E: $(SRCDIR)\codecheck1.c
1852 $(BCC) $**
1853
1854 !if $(USE_SEE)!=0
1855 SEE_FLAGS = /DSQLITE_HAS_CODEC=1 /DSQLITE_SHELL_DBKEY_PROC=fossil_key
1856 SQLITE3_SHELL_SRC = $(SRCDIR)\shell-see.c
1857 SQLITE3_SRC = $(SRCDIR)\sqlite3-see.c
1858 !else
1859 SEE_FLAGS =
1860 SQLITE3_SHELL_SRC = $(SRCDIR)\shell.c
1861
+30 -2
--- src/sqlcmd.c
+++ src/sqlcmd.c
@@ -151,17 +151,20 @@
151151
search_sql_setup(db);
152152
foci_register(db);
153153
g.repositoryOpen = 1;
154154
g.db = db;
155155
sqlite3_db_config(db, SQLITE_DBCONFIG_MAINDBNAME, "repository");
156
+ db_set_key(db, g.zRepositoryName);
156157
if( g.zLocalDbName ){
157
- char *zSql = sqlite3_mprintf("ATTACH %Q AS 'localdb'", g.zLocalDbName);
158
+ char *zSql = sqlite3_mprintf("ATTACH %Q AS 'localdb' KEY ''",
159
+ g.zLocalDbName);
158160
sqlite3_exec(db, zSql, 0, 0, 0);
159161
sqlite3_free(zSql);
160162
}
161163
if( g.zConfigDbName ){
162
- char *zSql = sqlite3_mprintf("ATTACH %Q AS 'configdb'", g.zConfigDbName);
164
+ char *zSql = sqlite3_mprintf("ATTACH %Q AS 'configdb' KEY ''",
165
+ g.zConfigDbName);
163166
sqlite3_exec(db, zSql, 0, 0, 0);
164167
sqlite3_free(zSql);
165168
}
166169
return SQLITE_OK;
167170
}
@@ -179,10 +182,35 @@
179182
*/
180183
void fossil_open(const char **pzRepoName){
181184
sqlite3_auto_extension((void(*)(void))sqlcmd_autoinit);
182185
*pzRepoName = g.zRepositoryName;
183186
}
187
+
188
+#if USE_SEE
189
+/*
190
+** This routine is called by the patched sqlite3 command-line shell in order
191
+** to load the encryption key for the open Fossil database. The memory that
192
+** is pointed to by the value placed in pzKey must be obtained from SQLite.
193
+*/
194
+void fossil_key(const char **pzKey, int *pnKey){
195
+ char *zSavedKey = db_get_saved_encryption_key();
196
+ char *zKey;
197
+ size_t savedKeySize = db_get_saved_encryption_key_size();
198
+ size_t nByte;
199
+
200
+ if( zSavedKey==0 || savedKeySize==0 ) return;
201
+ nByte = savedKeySize * sizeof(char);
202
+ zKey = sqlite3_malloc( (int)nByte );
203
+ if( zKey ){
204
+ memcpy(zKey, zSavedKey, nByte);
205
+ *pzKey = zKey;
206
+ *pnKey = (int)strlen(zKey);
207
+ }else{
208
+ fossil_fatal("failed to allocate %u bytes for key", nByte);
209
+ }
210
+}
211
+#endif
184212
185213
/*
186214
** This routine closes the Fossil databases and/or invalidates the global
187215
** state variables that keep track of them.
188216
*/
189217
--- src/sqlcmd.c
+++ src/sqlcmd.c
@@ -151,17 +151,20 @@
151 search_sql_setup(db);
152 foci_register(db);
153 g.repositoryOpen = 1;
154 g.db = db;
155 sqlite3_db_config(db, SQLITE_DBCONFIG_MAINDBNAME, "repository");
 
156 if( g.zLocalDbName ){
157 char *zSql = sqlite3_mprintf("ATTACH %Q AS 'localdb'", g.zLocalDbName);
 
158 sqlite3_exec(db, zSql, 0, 0, 0);
159 sqlite3_free(zSql);
160 }
161 if( g.zConfigDbName ){
162 char *zSql = sqlite3_mprintf("ATTACH %Q AS 'configdb'", g.zConfigDbName);
 
163 sqlite3_exec(db, zSql, 0, 0, 0);
164 sqlite3_free(zSql);
165 }
166 return SQLITE_OK;
167 }
@@ -179,10 +182,35 @@
179 */
180 void fossil_open(const char **pzRepoName){
181 sqlite3_auto_extension((void(*)(void))sqlcmd_autoinit);
182 *pzRepoName = g.zRepositoryName;
183 }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
184
185 /*
186 ** This routine closes the Fossil databases and/or invalidates the global
187 ** state variables that keep track of them.
188 */
189
--- src/sqlcmd.c
+++ src/sqlcmd.c
@@ -151,17 +151,20 @@
151 search_sql_setup(db);
152 foci_register(db);
153 g.repositoryOpen = 1;
154 g.db = db;
155 sqlite3_db_config(db, SQLITE_DBCONFIG_MAINDBNAME, "repository");
156 db_set_key(db, g.zRepositoryName);
157 if( g.zLocalDbName ){
158 char *zSql = sqlite3_mprintf("ATTACH %Q AS 'localdb' KEY ''",
159 g.zLocalDbName);
160 sqlite3_exec(db, zSql, 0, 0, 0);
161 sqlite3_free(zSql);
162 }
163 if( g.zConfigDbName ){
164 char *zSql = sqlite3_mprintf("ATTACH %Q AS 'configdb' KEY ''",
165 g.zConfigDbName);
166 sqlite3_exec(db, zSql, 0, 0, 0);
167 sqlite3_free(zSql);
168 }
169 return SQLITE_OK;
170 }
@@ -179,10 +182,35 @@
182 */
183 void fossil_open(const char **pzRepoName){
184 sqlite3_auto_extension((void(*)(void))sqlcmd_autoinit);
185 *pzRepoName = g.zRepositoryName;
186 }
187
188 #if USE_SEE
189 /*
190 ** This routine is called by the patched sqlite3 command-line shell in order
191 ** to load the encryption key for the open Fossil database. The memory that
192 ** is pointed to by the value placed in pzKey must be obtained from SQLite.
193 */
194 void fossil_key(const char **pzKey, int *pnKey){
195 char *zSavedKey = db_get_saved_encryption_key();
196 char *zKey;
197 size_t savedKeySize = db_get_saved_encryption_key_size();
198 size_t nByte;
199
200 if( zSavedKey==0 || savedKeySize==0 ) return;
201 nByte = savedKeySize * sizeof(char);
202 zKey = sqlite3_malloc( (int)nByte );
203 if( zKey ){
204 memcpy(zKey, zSavedKey, nByte);
205 *pzKey = zKey;
206 *pnKey = (int)strlen(zKey);
207 }else{
208 fossil_fatal("failed to allocate %u bytes for key", nByte);
209 }
210 }
211 #endif
212
213 /*
214 ** This routine closes the Fossil databases and/or invalidates the global
215 ** state variables that keep track of them.
216 */
217
--- win/Makefile.mingw
+++ win/Makefile.mingw
@@ -980,11 +980,11 @@
980980
SQLITE3_SHELL_SRC.0 = shell.c
981981
SQLITE3_SHELL_SRC.1 = shell-see.c
982982
SQLITE3_SHELL_SRC. = shell.c
983983
SQLITE3_SHELL_SRC = $(SRCDIR)/$(SQLITE3_SHELL_SRC.$(USE_SEE))
984984
SEE_FLAGS.0 =
985
-SEE_FLAGS.1 = -DSQLITE_HAS_CODEC
985
+SEE_FLAGS.1 = -DSQLITE_HAS_CODEC -DSQLITE_SHELL_DBKEY_PROC=fossil_key
986986
SEE_FLAGS. =
987987
SEE_FLAGS = $(SEE_FLAGS.$(USE_SEE))
988988
989989
990990
EXTRAOBJ = \
991991
--- win/Makefile.mingw
+++ win/Makefile.mingw
@@ -980,11 +980,11 @@
980 SQLITE3_SHELL_SRC.0 = shell.c
981 SQLITE3_SHELL_SRC.1 = shell-see.c
982 SQLITE3_SHELL_SRC. = shell.c
983 SQLITE3_SHELL_SRC = $(SRCDIR)/$(SQLITE3_SHELL_SRC.$(USE_SEE))
984 SEE_FLAGS.0 =
985 SEE_FLAGS.1 = -DSQLITE_HAS_CODEC
986 SEE_FLAGS. =
987 SEE_FLAGS = $(SEE_FLAGS.$(USE_SEE))
988
989
990 EXTRAOBJ = \
991
--- win/Makefile.mingw
+++ win/Makefile.mingw
@@ -980,11 +980,11 @@
980 SQLITE3_SHELL_SRC.0 = shell.c
981 SQLITE3_SHELL_SRC.1 = shell-see.c
982 SQLITE3_SHELL_SRC. = shell.c
983 SQLITE3_SHELL_SRC = $(SRCDIR)/$(SQLITE3_SHELL_SRC.$(USE_SEE))
984 SEE_FLAGS.0 =
985 SEE_FLAGS.1 = -DSQLITE_HAS_CODEC -DSQLITE_SHELL_DBKEY_PROC=fossil_key
986 SEE_FLAGS. =
987 SEE_FLAGS = $(SEE_FLAGS.$(USE_SEE))
988
989
990 EXTRAOBJ = \
991
--- win/Makefile.mingw.mistachkin
+++ win/Makefile.mingw.mistachkin
@@ -980,11 +980,11 @@
980980
SQLITE3_SHELL_SRC.0 = shell.c
981981
SQLITE3_SHELL_SRC.1 = shell-see.c
982982
SQLITE3_SHELL_SRC. = shell.c
983983
SQLITE3_SHELL_SRC = $(SRCDIR)/$(SQLITE3_SHELL_SRC.$(USE_SEE))
984984
SEE_FLAGS.0 =
985
-SEE_FLAGS.1 = -DSQLITE_HAS_CODEC
985
+SEE_FLAGS.1 = -DSQLITE_HAS_CODEC -DSQLITE_SHELL_DBKEY_PROC=fossil_key
986986
SEE_FLAGS. =
987987
SEE_FLAGS = $(SEE_FLAGS.$(USE_SEE))
988988
989989
990990
EXTRAOBJ = \
991991
--- win/Makefile.mingw.mistachkin
+++ win/Makefile.mingw.mistachkin
@@ -980,11 +980,11 @@
980 SQLITE3_SHELL_SRC.0 = shell.c
981 SQLITE3_SHELL_SRC.1 = shell-see.c
982 SQLITE3_SHELL_SRC. = shell.c
983 SQLITE3_SHELL_SRC = $(SRCDIR)/$(SQLITE3_SHELL_SRC.$(USE_SEE))
984 SEE_FLAGS.0 =
985 SEE_FLAGS.1 = -DSQLITE_HAS_CODEC
986 SEE_FLAGS. =
987 SEE_FLAGS = $(SEE_FLAGS.$(USE_SEE))
988
989
990 EXTRAOBJ = \
991
--- win/Makefile.mingw.mistachkin
+++ win/Makefile.mingw.mistachkin
@@ -980,11 +980,11 @@
980 SQLITE3_SHELL_SRC.0 = shell.c
981 SQLITE3_SHELL_SRC.1 = shell-see.c
982 SQLITE3_SHELL_SRC. = shell.c
983 SQLITE3_SHELL_SRC = $(SRCDIR)/$(SQLITE3_SHELL_SRC.$(USE_SEE))
984 SEE_FLAGS.0 =
985 SEE_FLAGS.1 = -DSQLITE_HAS_CODEC -DSQLITE_SHELL_DBKEY_PROC=fossil_key
986 SEE_FLAGS. =
987 SEE_FLAGS = $(SEE_FLAGS.$(USE_SEE))
988
989
990 EXTRAOBJ = \
991
--- win/Makefile.msc
+++ win/Makefile.msc
@@ -867,11 +867,11 @@
867867
868868
codecheck1$E: $(SRCDIR)\codecheck1.c
869869
$(BCC) $**
870870
871871
!if $(USE_SEE)!=0
872
-SEE_FLAGS = /DSQLITE_HAS_CODEC=1
872
+SEE_FLAGS = /DSQLITE_HAS_CODEC=1 /DSQLITE_SHELL_DBKEY_PROC=fossil_key
873873
SQLITE3_SHELL_SRC = $(SRCDIR)\shell-see.c
874874
SQLITE3_SRC = $(SRCDIR)\sqlite3-see.c
875875
!else
876876
SEE_FLAGS =
877877
SQLITE3_SHELL_SRC = $(SRCDIR)\shell.c
878878
--- win/Makefile.msc
+++ win/Makefile.msc
@@ -867,11 +867,11 @@
867
868 codecheck1$E: $(SRCDIR)\codecheck1.c
869 $(BCC) $**
870
871 !if $(USE_SEE)!=0
872 SEE_FLAGS = /DSQLITE_HAS_CODEC=1
873 SQLITE3_SHELL_SRC = $(SRCDIR)\shell-see.c
874 SQLITE3_SRC = $(SRCDIR)\sqlite3-see.c
875 !else
876 SEE_FLAGS =
877 SQLITE3_SHELL_SRC = $(SRCDIR)\shell.c
878
--- win/Makefile.msc
+++ win/Makefile.msc
@@ -867,11 +867,11 @@
867
868 codecheck1$E: $(SRCDIR)\codecheck1.c
869 $(BCC) $**
870
871 !if $(USE_SEE)!=0
872 SEE_FLAGS = /DSQLITE_HAS_CODEC=1 /DSQLITE_SHELL_DBKEY_PROC=fossil_key
873 SQLITE3_SHELL_SRC = $(SRCDIR)\shell-see.c
874 SQLITE3_SRC = $(SRCDIR)\sqlite3-see.c
875 !else
876 SEE_FLAGS =
877 SQLITE3_SHELL_SRC = $(SRCDIR)\shell.c
878

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button