Fossil SCM
Add the "sqlite3" command providing an sqlite3 command-line shell. Ticket [b18338c226f6fb4899b]
Commit
8c723318d27cc521d09aebed2a755ba4861d3f01
Parent
067a90a903d5a72…
4 files changed
+24
+7
-2
+13
-2
+4
+24
| --- src/main.c | ||
| +++ src/main.c | ||
| @@ -1146,5 +1146,29 @@ | ||
| 1146 | 1146 | } |
| 1147 | 1147 | db_close(); |
| 1148 | 1148 | win32_http_server(iPort, mxPort, zBrowserCmd, zStopperFile, zNotFound, flags); |
| 1149 | 1149 | #endif |
| 1150 | 1150 | } |
| 1151 | + | |
| 1152 | +/* | |
| 1153 | +** COMMAND: sqlite3 | |
| 1154 | +** | |
| 1155 | +** Usage: %fossil sqlite3 ?DATABASE? ?OPTIONS? | |
| 1156 | +** | |
| 1157 | +** Run the standalone sqlite3 command-line shell on DATABASE with OPTIONS. | |
| 1158 | +** If DATABASE is omitted, then the repository that serves the working | |
| 1159 | +** directory is opened. | |
| 1160 | +*/ | |
| 1161 | +void sqlite3_cmd(void){ | |
| 1162 | + extern int sqlite3_shell(int, char**); | |
| 1163 | + sqlite3_shell(g.argc-1, g.argv+1); | |
| 1164 | +} | |
| 1165 | + | |
| 1166 | +/* | |
| 1167 | +** This routine is called by the patched sqlite3 command-line shell in order | |
| 1168 | +** to load the name and database connection for the open Fossil database. | |
| 1169 | +*/ | |
| 1170 | +void fossil_open(sqlite3 **pDb, const char **pzRepoName){ | |
| 1171 | + db_must_be_within_tree(); | |
| 1172 | + *pDb = 0; | |
| 1173 | + *pzRepoName = g.zRepositoryName; | |
| 1174 | +} | |
| 1151 | 1175 |
| --- src/main.c | |
| +++ src/main.c | |
| @@ -1146,5 +1146,29 @@ | |
| 1146 | } |
| 1147 | db_close(); |
| 1148 | win32_http_server(iPort, mxPort, zBrowserCmd, zStopperFile, zNotFound, flags); |
| 1149 | #endif |
| 1150 | } |
| 1151 |
| --- src/main.c | |
| +++ src/main.c | |
| @@ -1146,5 +1146,29 @@ | |
| 1146 | } |
| 1147 | db_close(); |
| 1148 | win32_http_server(iPort, mxPort, zBrowserCmd, zStopperFile, zNotFound, flags); |
| 1149 | #endif |
| 1150 | } |
| 1151 | |
| 1152 | /* |
| 1153 | ** COMMAND: sqlite3 |
| 1154 | ** |
| 1155 | ** Usage: %fossil sqlite3 ?DATABASE? ?OPTIONS? |
| 1156 | ** |
| 1157 | ** Run the standalone sqlite3 command-line shell on DATABASE with OPTIONS. |
| 1158 | ** If DATABASE is omitted, then the repository that serves the working |
| 1159 | ** directory is opened. |
| 1160 | */ |
| 1161 | void sqlite3_cmd(void){ |
| 1162 | extern int sqlite3_shell(int, char**); |
| 1163 | sqlite3_shell(g.argc-1, g.argv+1); |
| 1164 | } |
| 1165 | |
| 1166 | /* |
| 1167 | ** This routine is called by the patched sqlite3 command-line shell in order |
| 1168 | ** to load the name and database connection for the open Fossil database. |
| 1169 | */ |
| 1170 | void fossil_open(sqlite3 **pDb, const char **pzRepoName){ |
| 1171 | db_must_be_within_tree(); |
| 1172 | *pDb = 0; |
| 1173 | *pzRepoName = g.zRepositoryName; |
| 1174 | } |
| 1175 |
+7
-2
| --- src/main.mk | ||
| +++ src/main.mk | ||
| @@ -264,12 +264,14 @@ | ||
| 264 | 264 | VERSION.h: $(SRCDIR)/../manifest.uuid $(SRCDIR)/../manifest |
| 265 | 265 | awk '{ printf "#define MANIFEST_UUID \"%s\"\n", $$1}' $(SRCDIR)/../manifest.uuid >VERSION.h |
| 266 | 266 | awk '{ printf "#define MANIFEST_VERSION \"[%.10s]\"\n", $$1}' $(SRCDIR)/../manifest.uuid >>VERSION.h |
| 267 | 267 | awk '$$1=="D"{printf "#define MANIFEST_DATE \"%s %s\"\n", substr($$2,1,10),substr($$2,12)}' $(SRCDIR)/../manifest >>VERSION.h |
| 268 | 268 | |
| 269 | -$(APPNAME): headers $(OBJ) $(OBJDIR)/sqlite3.o $(OBJDIR)/th.o $(OBJDIR)/th_lang.o | |
| 270 | - $(TCC) -o $(APPNAME) $(OBJ) $(OBJDIR)/sqlite3.o $(OBJDIR)/th.o $(OBJDIR)/th_lang.o $(LIB) | |
| 269 | +EXTRAOBJ = $(OBJDIR)/sqlite3.o $(OBJDIR)/shell.o $(OBJDIR)/th.o $(OBJDIR)/th_lang.o | |
| 270 | + | |
| 271 | +$(APPNAME): headers $(OBJ) $(EXTRAOBJ) | |
| 272 | + $(TCC) -o $(APPNAME) $(OBJ) $(EXTRAOBJ) $(LIB) | |
| 271 | 273 | |
| 272 | 274 | # This rule prevents make from using its default rules to try build |
| 273 | 275 | # an executable named "manifest" out of the file named "manifest.c" |
| 274 | 276 | # |
| 275 | 277 | $(SRCDIR)/../manifest: |
| @@ -792,11 +794,14 @@ | ||
| 792 | 794 | |
| 793 | 795 | zip.h: headers |
| 794 | 796 | $(OBJDIR)/sqlite3.o: $(SRCDIR)/sqlite3.c |
| 795 | 797 | $(XTCC) -DSQLITE_OMIT_LOAD_EXTENSION=1 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -Dlocaltime=fossil_localtime -DSQLITE_ENABLE_LOCKING_STYLE=0 -c $(SRCDIR)/sqlite3.c -o $(OBJDIR)/sqlite3.o |
| 796 | 798 | |
| 799 | +$(OBJDIR)/shell.o: $(SRCDIR)/shell.c | |
| 800 | + $(XTCC) -Dmain=sqlite3_shell -DSQLITE_OMIT_LOAD_EXTENSION=1 -c $(SRCDIR)/shell.c -o $(OBJDIR)/shell.o | |
| 801 | + | |
| 797 | 802 | $(OBJDIR)/th.o: $(SRCDIR)/th.c |
| 798 | 803 | $(XTCC) -I$(SRCDIR) -c $(SRCDIR)/th.c -o $(OBJDIR)/th.o |
| 799 | 804 | |
| 800 | 805 | $(OBJDIR)/th_lang.o: $(SRCDIR)/th_lang.c |
| 801 | 806 | $(XTCC) -I$(SRCDIR) -c $(SRCDIR)/th_lang.c -o $(OBJDIR)/th_lang.o |
| 802 | 807 | |
| 803 | 808 |
| --- src/main.mk | |
| +++ src/main.mk | |
| @@ -264,12 +264,14 @@ | |
| 264 | VERSION.h: $(SRCDIR)/../manifest.uuid $(SRCDIR)/../manifest |
| 265 | awk '{ printf "#define MANIFEST_UUID \"%s\"\n", $$1}' $(SRCDIR)/../manifest.uuid >VERSION.h |
| 266 | awk '{ printf "#define MANIFEST_VERSION \"[%.10s]\"\n", $$1}' $(SRCDIR)/../manifest.uuid >>VERSION.h |
| 267 | awk '$$1=="D"{printf "#define MANIFEST_DATE \"%s %s\"\n", substr($$2,1,10),substr($$2,12)}' $(SRCDIR)/../manifest >>VERSION.h |
| 268 | |
| 269 | $(APPNAME): headers $(OBJ) $(OBJDIR)/sqlite3.o $(OBJDIR)/th.o $(OBJDIR)/th_lang.o |
| 270 | $(TCC) -o $(APPNAME) $(OBJ) $(OBJDIR)/sqlite3.o $(OBJDIR)/th.o $(OBJDIR)/th_lang.o $(LIB) |
| 271 | |
| 272 | # This rule prevents make from using its default rules to try build |
| 273 | # an executable named "manifest" out of the file named "manifest.c" |
| 274 | # |
| 275 | $(SRCDIR)/../manifest: |
| @@ -792,11 +794,14 @@ | |
| 792 | |
| 793 | zip.h: headers |
| 794 | $(OBJDIR)/sqlite3.o: $(SRCDIR)/sqlite3.c |
| 795 | $(XTCC) -DSQLITE_OMIT_LOAD_EXTENSION=1 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -Dlocaltime=fossil_localtime -DSQLITE_ENABLE_LOCKING_STYLE=0 -c $(SRCDIR)/sqlite3.c -o $(OBJDIR)/sqlite3.o |
| 796 | |
| 797 | $(OBJDIR)/th.o: $(SRCDIR)/th.c |
| 798 | $(XTCC) -I$(SRCDIR) -c $(SRCDIR)/th.c -o $(OBJDIR)/th.o |
| 799 | |
| 800 | $(OBJDIR)/th_lang.o: $(SRCDIR)/th_lang.c |
| 801 | $(XTCC) -I$(SRCDIR) -c $(SRCDIR)/th_lang.c -o $(OBJDIR)/th_lang.o |
| 802 | |
| 803 |
| --- src/main.mk | |
| +++ src/main.mk | |
| @@ -264,12 +264,14 @@ | |
| 264 | VERSION.h: $(SRCDIR)/../manifest.uuid $(SRCDIR)/../manifest |
| 265 | awk '{ printf "#define MANIFEST_UUID \"%s\"\n", $$1}' $(SRCDIR)/../manifest.uuid >VERSION.h |
| 266 | awk '{ printf "#define MANIFEST_VERSION \"[%.10s]\"\n", $$1}' $(SRCDIR)/../manifest.uuid >>VERSION.h |
| 267 | awk '$$1=="D"{printf "#define MANIFEST_DATE \"%s %s\"\n", substr($$2,1,10),substr($$2,12)}' $(SRCDIR)/../manifest >>VERSION.h |
| 268 | |
| 269 | EXTRAOBJ = $(OBJDIR)/sqlite3.o $(OBJDIR)/shell.o $(OBJDIR)/th.o $(OBJDIR)/th_lang.o |
| 270 | |
| 271 | $(APPNAME): headers $(OBJ) $(EXTRAOBJ) |
| 272 | $(TCC) -o $(APPNAME) $(OBJ) $(EXTRAOBJ) $(LIB) |
| 273 | |
| 274 | # This rule prevents make from using its default rules to try build |
| 275 | # an executable named "manifest" out of the file named "manifest.c" |
| 276 | # |
| 277 | $(SRCDIR)/../manifest: |
| @@ -792,11 +794,14 @@ | |
| 794 | |
| 795 | zip.h: headers |
| 796 | $(OBJDIR)/sqlite3.o: $(SRCDIR)/sqlite3.c |
| 797 | $(XTCC) -DSQLITE_OMIT_LOAD_EXTENSION=1 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_FILE_FORMAT=4 -Dlocaltime=fossil_localtime -DSQLITE_ENABLE_LOCKING_STYLE=0 -c $(SRCDIR)/sqlite3.c -o $(OBJDIR)/sqlite3.o |
| 798 | |
| 799 | $(OBJDIR)/shell.o: $(SRCDIR)/shell.c |
| 800 | $(XTCC) -Dmain=sqlite3_shell -DSQLITE_OMIT_LOAD_EXTENSION=1 -c $(SRCDIR)/shell.c -o $(OBJDIR)/shell.o |
| 801 | |
| 802 | $(OBJDIR)/th.o: $(SRCDIR)/th.c |
| 803 | $(XTCC) -I$(SRCDIR) -c $(SRCDIR)/th.c -o $(OBJDIR)/th.o |
| 804 | |
| 805 | $(OBJDIR)/th_lang.o: $(SRCDIR)/th_lang.c |
| 806 | $(XTCC) -I$(SRCDIR) -c $(SRCDIR)/th_lang.c -o $(OBJDIR)/th_lang.o |
| 807 | |
| 808 |
+13
-2
| --- src/makemake.tcl | ||
| +++ src/makemake.tcl | ||
| @@ -148,12 +148,18 @@ | ||
| 148 | 148 | $(SRCDIR)/../manifest.uuid >>VERSION.h |
| 149 | 149 | awk '$$1=="D"{printf "#define MANIFEST_DATE \"%s %s\"\n",\ |
| 150 | 150 | substr($$2,1,10),substr($$2,12)}' \ |
| 151 | 151 | $(SRCDIR)/../manifest >>VERSION.h |
| 152 | 152 | |
| 153 | -$(APPNAME): headers $(OBJ) $(OBJDIR)/sqlite3.o $(OBJDIR)/th.o $(OBJDIR)/th_lang.o | |
| 154 | - $(TCC) -o $(APPNAME) $(OBJ) $(OBJDIR)/sqlite3.o $(OBJDIR)/th.o $(OBJDIR)/th_lang.o $(LIB) | |
| 153 | +EXTRAOBJ = \ | |
| 154 | + $(OBJDIR)/sqlite3.o \ | |
| 155 | + $(OBJDIR)/shell.o \ | |
| 156 | + $(OBJDIR)/th.o \ | |
| 157 | + $(OBJDIR)/th_lang.o | |
| 158 | + | |
| 159 | +$(APPNAME): headers $(OBJ) $(EXTRAOBJ) | |
| 160 | + $(TCC) -o $(APPNAME) $(OBJ) $(EXTRAOBJ) $(LIB) | |
| 155 | 161 | |
| 156 | 162 | # This rule prevents make from using its default rules to try build |
| 157 | 163 | # an executable named "manifest" out of the file named "manifest.c" |
| 158 | 164 | # |
| 159 | 165 | $(SRCDIR)/../manifest: |
| @@ -201,10 +207,15 @@ | ||
| 201 | 207 | #append opt " -DSQLITE_ENABLE_FTS3=1" |
| 202 | 208 | append opt " -Dlocaltime=fossil_localtime" |
| 203 | 209 | append opt " -DSQLITE_ENABLE_LOCKING_STYLE=0" |
| 204 | 210 | puts "\t\$(XTCC) $opt -c \$(SRCDIR)/sqlite3.c -o \$(OBJDIR)/sqlite3.o\n" |
| 205 | 211 | |
| 212 | +puts "\$(OBJDIR)/shell.o:\t\$(SRCDIR)/shell.c" | |
| 213 | +set opt {-Dmain=sqlite3_shell} | |
| 214 | +append opt " -DSQLITE_OMIT_LOAD_EXTENSION=1" | |
| 215 | +puts "\t\$(XTCC) $opt -c \$(SRCDIR)/shell.c -o \$(OBJDIR)/shell.o\n" | |
| 216 | + | |
| 206 | 217 | puts "\$(OBJDIR)/th.o:\t\$(SRCDIR)/th.c" |
| 207 | 218 | puts "\t\$(XTCC) -I\$(SRCDIR) -c \$(SRCDIR)/th.c -o \$(OBJDIR)/th.o\n" |
| 208 | 219 | |
| 209 | 220 | puts "\$(OBJDIR)/th_lang.o:\t\$(SRCDIR)/th_lang.c" |
| 210 | 221 | puts "\t\$(XTCC) -I\$(SRCDIR) -c \$(SRCDIR)/th_lang.c -o \$(OBJDIR)/th_lang.o\n" |
| 211 | 222 | |
| 212 | 223 | ADDED src/shell.c |
| --- src/makemake.tcl | |
| +++ src/makemake.tcl | |
| @@ -148,12 +148,18 @@ | |
| 148 | $(SRCDIR)/../manifest.uuid >>VERSION.h |
| 149 | awk '$$1=="D"{printf "#define MANIFEST_DATE \"%s %s\"\n",\ |
| 150 | substr($$2,1,10),substr($$2,12)}' \ |
| 151 | $(SRCDIR)/../manifest >>VERSION.h |
| 152 | |
| 153 | $(APPNAME): headers $(OBJ) $(OBJDIR)/sqlite3.o $(OBJDIR)/th.o $(OBJDIR)/th_lang.o |
| 154 | $(TCC) -o $(APPNAME) $(OBJ) $(OBJDIR)/sqlite3.o $(OBJDIR)/th.o $(OBJDIR)/th_lang.o $(LIB) |
| 155 | |
| 156 | # This rule prevents make from using its default rules to try build |
| 157 | # an executable named "manifest" out of the file named "manifest.c" |
| 158 | # |
| 159 | $(SRCDIR)/../manifest: |
| @@ -201,10 +207,15 @@ | |
| 201 | #append opt " -DSQLITE_ENABLE_FTS3=1" |
| 202 | append opt " -Dlocaltime=fossil_localtime" |
| 203 | append opt " -DSQLITE_ENABLE_LOCKING_STYLE=0" |
| 204 | puts "\t\$(XTCC) $opt -c \$(SRCDIR)/sqlite3.c -o \$(OBJDIR)/sqlite3.o\n" |
| 205 | |
| 206 | puts "\$(OBJDIR)/th.o:\t\$(SRCDIR)/th.c" |
| 207 | puts "\t\$(XTCC) -I\$(SRCDIR) -c \$(SRCDIR)/th.c -o \$(OBJDIR)/th.o\n" |
| 208 | |
| 209 | puts "\$(OBJDIR)/th_lang.o:\t\$(SRCDIR)/th_lang.c" |
| 210 | puts "\t\$(XTCC) -I\$(SRCDIR) -c \$(SRCDIR)/th_lang.c -o \$(OBJDIR)/th_lang.o\n" |
| 211 | |
| 212 | DDED src/shell.c |
| --- src/makemake.tcl | |
| +++ src/makemake.tcl | |
| @@ -148,12 +148,18 @@ | |
| 148 | $(SRCDIR)/../manifest.uuid >>VERSION.h |
| 149 | awk '$$1=="D"{printf "#define MANIFEST_DATE \"%s %s\"\n",\ |
| 150 | substr($$2,1,10),substr($$2,12)}' \ |
| 151 | $(SRCDIR)/../manifest >>VERSION.h |
| 152 | |
| 153 | EXTRAOBJ = \ |
| 154 | $(OBJDIR)/sqlite3.o \ |
| 155 | $(OBJDIR)/shell.o \ |
| 156 | $(OBJDIR)/th.o \ |
| 157 | $(OBJDIR)/th_lang.o |
| 158 | |
| 159 | $(APPNAME): headers $(OBJ) $(EXTRAOBJ) |
| 160 | $(TCC) -o $(APPNAME) $(OBJ) $(EXTRAOBJ) $(LIB) |
| 161 | |
| 162 | # This rule prevents make from using its default rules to try build |
| 163 | # an executable named "manifest" out of the file named "manifest.c" |
| 164 | # |
| 165 | $(SRCDIR)/../manifest: |
| @@ -201,10 +207,15 @@ | |
| 207 | #append opt " -DSQLITE_ENABLE_FTS3=1" |
| 208 | append opt " -Dlocaltime=fossil_localtime" |
| 209 | append opt " -DSQLITE_ENABLE_LOCKING_STYLE=0" |
| 210 | puts "\t\$(XTCC) $opt -c \$(SRCDIR)/sqlite3.c -o \$(OBJDIR)/sqlite3.o\n" |
| 211 | |
| 212 | puts "\$(OBJDIR)/shell.o:\t\$(SRCDIR)/shell.c" |
| 213 | set opt {-Dmain=sqlite3_shell} |
| 214 | append opt " -DSQLITE_OMIT_LOAD_EXTENSION=1" |
| 215 | puts "\t\$(XTCC) $opt -c \$(SRCDIR)/shell.c -o \$(OBJDIR)/shell.o\n" |
| 216 | |
| 217 | puts "\$(OBJDIR)/th.o:\t\$(SRCDIR)/th.c" |
| 218 | puts "\t\$(XTCC) -I\$(SRCDIR) -c \$(SRCDIR)/th.c -o \$(OBJDIR)/th.o\n" |
| 219 | |
| 220 | puts "\$(OBJDIR)/th_lang.o:\t\$(SRCDIR)/th_lang.c" |
| 221 | puts "\t\$(XTCC) -I\$(SRCDIR) -c \$(SRCDIR)/th_lang.c -o \$(OBJDIR)/th_lang.o\n" |
| 222 | |
| 223 | DDED src/shell.c |
+4
| --- a/src/shell.c | ||
| +++ b/src/shell.c | ||
| @@ -0,0 +1,4 @@ | ||
| 1 | +; | |
| 2 | + datVReader C#ifde;AllocPAGE**lseif(cannot close database \"%s\"rc++rc; | |
| 3 | +} | |
| 4 | +sqlite3**, db, |
| --- a/src/shell.c | |
| +++ b/src/shell.c | |
| @@ -0,0 +1,4 @@ | |
| --- a/src/shell.c | |
| +++ b/src/shell.c | |
| @@ -0,0 +1,4 @@ | |
| 1 | ; |
| 2 | datVReader C#ifde;AllocPAGE**lseif(cannot close database \"%s\"rc++rc; |
| 3 | } |
| 4 | sqlite3**, db, |