Fossil SCM

Add the "sqlite3" command providing an sqlite3 command-line shell. Ticket [b18338c226f6fb4899b]

drh 2010-10-29 19:06 trunk
Commit 8c723318d27cc521d09aebed2a755ba4861d3f01
+24
--- src/main.c
+++ src/main.c
@@ -1146,5 +1146,29 @@
11461146
}
11471147
db_close();
11481148
win32_http_server(iPort, mxPort, zBrowserCmd, zStopperFile, zNotFound, flags);
11491149
#endif
11501150
}
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
+}
11511175
--- 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 @@
264264
VERSION.h: $(SRCDIR)/../manifest.uuid $(SRCDIR)/../manifest
265265
awk '{ printf "#define MANIFEST_UUID \"%s\"\n", $$1}' $(SRCDIR)/../manifest.uuid >VERSION.h
266266
awk '{ printf "#define MANIFEST_VERSION \"[%.10s]\"\n", $$1}' $(SRCDIR)/../manifest.uuid >>VERSION.h
267267
awk '$$1=="D"{printf "#define MANIFEST_DATE \"%s %s\"\n", substr($$2,1,10),substr($$2,12)}' $(SRCDIR)/../manifest >>VERSION.h
268268
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)
271273
272274
# This rule prevents make from using its default rules to try build
273275
# an executable named "manifest" out of the file named "manifest.c"
274276
#
275277
$(SRCDIR)/../manifest:
@@ -792,11 +794,14 @@
792794
793795
zip.h: headers
794796
$(OBJDIR)/sqlite3.o: $(SRCDIR)/sqlite3.c
795797
$(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
796798
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
+
797802
$(OBJDIR)/th.o: $(SRCDIR)/th.c
798803
$(XTCC) -I$(SRCDIR) -c $(SRCDIR)/th.c -o $(OBJDIR)/th.o
799804
800805
$(OBJDIR)/th_lang.o: $(SRCDIR)/th_lang.c
801806
$(XTCC) -I$(SRCDIR) -c $(SRCDIR)/th_lang.c -o $(OBJDIR)/th_lang.o
802807
803808
--- 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 @@
148148
$(SRCDIR)/../manifest.uuid >>VERSION.h
149149
awk '$$1=="D"{printf "#define MANIFEST_DATE \"%s %s\"\n",\
150150
substr($$2,1,10),substr($$2,12)}' \
151151
$(SRCDIR)/../manifest >>VERSION.h
152152
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)
155161
156162
# This rule prevents make from using its default rules to try build
157163
# an executable named "manifest" out of the file named "manifest.c"
158164
#
159165
$(SRCDIR)/../manifest:
@@ -201,10 +207,15 @@
201207
#append opt " -DSQLITE_ENABLE_FTS3=1"
202208
append opt " -Dlocaltime=fossil_localtime"
203209
append opt " -DSQLITE_ENABLE_LOCKING_STYLE=0"
204210
puts "\t\$(XTCC) $opt -c \$(SRCDIR)/sqlite3.c -o \$(OBJDIR)/sqlite3.o\n"
205211
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
+
206217
puts "\$(OBJDIR)/th.o:\t\$(SRCDIR)/th.c"
207218
puts "\t\$(XTCC) -I\$(SRCDIR) -c \$(SRCDIR)/th.c -o \$(OBJDIR)/th.o\n"
208219
209220
puts "\$(OBJDIR)/th_lang.o:\t\$(SRCDIR)/th_lang.c"
210221
puts "\t\$(XTCC) -I\$(SRCDIR) -c \$(SRCDIR)/th_lang.c -o \$(OBJDIR)/th_lang.o\n"
211222
212223
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
--- 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,

Keyboard Shortcuts

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