Fossil SCM
Backout [77d37d910b], which puts back the "fossil sqlite3" command when compiled with --disable-internal-sqlite. Take over matching "shell.c" from SQLite, but relax SQLite version check, otherwise "fossil sqlite3" doesn't work (that was the reason for taking out "fossil sqlite3" in the first place, but at least OpenBSD wants to support it). See: [https://www.mail-archive.com/[email protected]/msg14185.html]
Commit
d68cd57a9dcf5aafdb3c88bbdf88a42df234dcfa
Parent
64096c726997b1c…
4 files changed
+2
-2
+2
-1
+6
-6
-3
+2
-2
| --- src/main.mk | ||
| +++ src/main.mk | ||
| @@ -392,21 +392,21 @@ | ||
| 392 | 392 | # The USE_SYSTEM_SQLITE variable may be undefined, set to 0, or set |
| 393 | 393 | # to 1. If it is set to 1, then there is no need to build or link |
| 394 | 394 | # the sqlite3.o object. Instead, the system sqlite will be linked |
| 395 | 395 | # using -lsqlite3. |
| 396 | 396 | SQLITE3_OBJ.1 = |
| 397 | -SQLITE3_OBJ.0 = $(OBJDIR)/sqlite3.o $(OBJDIR)/shell.o | |
| 397 | +SQLITE3_OBJ.0 = $(OBJDIR)/sqlite3.o | |
| 398 | 398 | SQLITE3_OBJ. = $(SQLITE3_OBJ.0) |
| 399 | 399 | |
| 400 | 400 | # The FOSSIL_ENABLE_TCL variable may be undefined, set to 0, or set to 1. |
| 401 | 401 | # If it is set to 1, then we need to build the Tcl integration code and |
| 402 | 402 | # link to the Tcl library. |
| 403 | 403 | TCL_OBJ.0 = |
| 404 | 404 | TCL_OBJ.1 = $(OBJDIR)/th_tcl.o |
| 405 | 405 | TCL_OBJ. = $(TCL_OBJ.0) |
| 406 | 406 | |
| 407 | -EXTRAOBJ = $(SQLITE3_OBJ.$(USE_SYSTEM_SQLITE)) $(OBJDIR)/th.o $(OBJDIR)/th_lang.o $(TCL_OBJ.$(FOSSIL_ENABLE_TCL)) $(OBJDIR)/cson_amalgamation.o | |
| 407 | +EXTRAOBJ = $(SQLITE3_OBJ.$(USE_SYSTEM_SQLITE)) $(OBJDIR)/shell.o $(OBJDIR)/th.o $(OBJDIR)/th_lang.o $(TCL_OBJ.$(FOSSIL_ENABLE_TCL)) $(OBJDIR)/cson_amalgamation.o | |
| 408 | 408 | |
| 409 | 409 | $(APPNAME): $(OBJDIR)/headers $(OBJ) $(EXTRAOBJ) |
| 410 | 410 | $(TCC) -o $(APPNAME) $(OBJ) $(EXTRAOBJ) $(LIB) |
| 411 | 411 | |
| 412 | 412 | # This rule prevents make from using its default rules to try build |
| 413 | 413 |
| --- src/main.mk | |
| +++ src/main.mk | |
| @@ -392,21 +392,21 @@ | |
| 392 | # The USE_SYSTEM_SQLITE variable may be undefined, set to 0, or set |
| 393 | # to 1. If it is set to 1, then there is no need to build or link |
| 394 | # the sqlite3.o object. Instead, the system sqlite will be linked |
| 395 | # using -lsqlite3. |
| 396 | SQLITE3_OBJ.1 = |
| 397 | SQLITE3_OBJ.0 = $(OBJDIR)/sqlite3.o $(OBJDIR)/shell.o |
| 398 | SQLITE3_OBJ. = $(SQLITE3_OBJ.0) |
| 399 | |
| 400 | # The FOSSIL_ENABLE_TCL variable may be undefined, set to 0, or set to 1. |
| 401 | # If it is set to 1, then we need to build the Tcl integration code and |
| 402 | # link to the Tcl library. |
| 403 | TCL_OBJ.0 = |
| 404 | TCL_OBJ.1 = $(OBJDIR)/th_tcl.o |
| 405 | TCL_OBJ. = $(TCL_OBJ.0) |
| 406 | |
| 407 | EXTRAOBJ = $(SQLITE3_OBJ.$(USE_SYSTEM_SQLITE)) $(OBJDIR)/th.o $(OBJDIR)/th_lang.o $(TCL_OBJ.$(FOSSIL_ENABLE_TCL)) $(OBJDIR)/cson_amalgamation.o |
| 408 | |
| 409 | $(APPNAME): $(OBJDIR)/headers $(OBJ) $(EXTRAOBJ) |
| 410 | $(TCC) -o $(APPNAME) $(OBJ) $(EXTRAOBJ) $(LIB) |
| 411 | |
| 412 | # This rule prevents make from using its default rules to try build |
| 413 |
| --- src/main.mk | |
| +++ src/main.mk | |
| @@ -392,21 +392,21 @@ | |
| 392 | # The USE_SYSTEM_SQLITE variable may be undefined, set to 0, or set |
| 393 | # to 1. If it is set to 1, then there is no need to build or link |
| 394 | # the sqlite3.o object. Instead, the system sqlite will be linked |
| 395 | # using -lsqlite3. |
| 396 | SQLITE3_OBJ.1 = |
| 397 | SQLITE3_OBJ.0 = $(OBJDIR)/sqlite3.o |
| 398 | SQLITE3_OBJ. = $(SQLITE3_OBJ.0) |
| 399 | |
| 400 | # The FOSSIL_ENABLE_TCL variable may be undefined, set to 0, or set to 1. |
| 401 | # If it is set to 1, then we need to build the Tcl integration code and |
| 402 | # link to the Tcl library. |
| 403 | TCL_OBJ.0 = |
| 404 | TCL_OBJ.1 = $(OBJDIR)/th_tcl.o |
| 405 | TCL_OBJ. = $(TCL_OBJ.0) |
| 406 | |
| 407 | EXTRAOBJ = $(SQLITE3_OBJ.$(USE_SYSTEM_SQLITE)) $(OBJDIR)/shell.o $(OBJDIR)/th.o $(OBJDIR)/th_lang.o $(TCL_OBJ.$(FOSSIL_ENABLE_TCL)) $(OBJDIR)/cson_amalgamation.o |
| 408 | |
| 409 | $(APPNAME): $(OBJDIR)/headers $(OBJ) $(EXTRAOBJ) |
| 410 | $(TCC) -o $(APPNAME) $(OBJ) $(EXTRAOBJ) $(LIB) |
| 411 | |
| 412 | # This rule prevents make from using its default rules to try build |
| 413 |
+2
-1
| --- src/makemake.tcl | ||
| +++ src/makemake.tcl | ||
| @@ -261,11 +261,11 @@ | ||
| 261 | 261 | # The USE_SYSTEM_SQLITE variable may be undefined, set to 0, or set |
| 262 | 262 | # to 1. If it is set to 1, then there is no need to build or link |
| 263 | 263 | # the sqlite3.o object. Instead, the system sqlite will be linked |
| 264 | 264 | # using -lsqlite3. |
| 265 | 265 | SQLITE3_OBJ.1 = |
| 266 | -SQLITE3_OBJ.0 = $(OBJDIR)/sqlite3.o $(OBJDIR)/shell.o | |
| 266 | +SQLITE3_OBJ.0 = $(OBJDIR)/sqlite3.o | |
| 267 | 267 | SQLITE3_OBJ. = $(SQLITE3_OBJ.0) |
| 268 | 268 | |
| 269 | 269 | # The FOSSIL_ENABLE_TCL variable may be undefined, set to 0, or set to 1. |
| 270 | 270 | # If it is set to 1, then we need to build the Tcl integration code and |
| 271 | 271 | # link to the Tcl library. |
| @@ -273,10 +273,11 @@ | ||
| 273 | 273 | TCL_OBJ.1 = $(OBJDIR)/th_tcl.o |
| 274 | 274 | TCL_OBJ. = $(TCL_OBJ.0) |
| 275 | 275 | |
| 276 | 276 | EXTRAOBJ = \ |
| 277 | 277 | $(SQLITE3_OBJ.$(USE_SYSTEM_SQLITE)) \ |
| 278 | + $(OBJDIR)/shell.o \ | |
| 278 | 279 | $(OBJDIR)/th.o \ |
| 279 | 280 | $(OBJDIR)/th_lang.o \ |
| 280 | 281 | $(TCL_OBJ.$(FOSSIL_ENABLE_TCL)) \ |
| 281 | 282 | $(OBJDIR)/cson_amalgamation.o |
| 282 | 283 | |
| 283 | 284 |
| --- src/makemake.tcl | |
| +++ src/makemake.tcl | |
| @@ -261,11 +261,11 @@ | |
| 261 | # The USE_SYSTEM_SQLITE variable may be undefined, set to 0, or set |
| 262 | # to 1. If it is set to 1, then there is no need to build or link |
| 263 | # the sqlite3.o object. Instead, the system sqlite will be linked |
| 264 | # using -lsqlite3. |
| 265 | SQLITE3_OBJ.1 = |
| 266 | SQLITE3_OBJ.0 = $(OBJDIR)/sqlite3.o $(OBJDIR)/shell.o |
| 267 | SQLITE3_OBJ. = $(SQLITE3_OBJ.0) |
| 268 | |
| 269 | # The FOSSIL_ENABLE_TCL variable may be undefined, set to 0, or set to 1. |
| 270 | # If it is set to 1, then we need to build the Tcl integration code and |
| 271 | # link to the Tcl library. |
| @@ -273,10 +273,11 @@ | |
| 273 | TCL_OBJ.1 = $(OBJDIR)/th_tcl.o |
| 274 | TCL_OBJ. = $(TCL_OBJ.0) |
| 275 | |
| 276 | EXTRAOBJ = \ |
| 277 | $(SQLITE3_OBJ.$(USE_SYSTEM_SQLITE)) \ |
| 278 | $(OBJDIR)/th.o \ |
| 279 | $(OBJDIR)/th_lang.o \ |
| 280 | $(TCL_OBJ.$(FOSSIL_ENABLE_TCL)) \ |
| 281 | $(OBJDIR)/cson_amalgamation.o |
| 282 | |
| 283 |
| --- src/makemake.tcl | |
| +++ src/makemake.tcl | |
| @@ -261,11 +261,11 @@ | |
| 261 | # The USE_SYSTEM_SQLITE variable may be undefined, set to 0, or set |
| 262 | # to 1. If it is set to 1, then there is no need to build or link |
| 263 | # the sqlite3.o object. Instead, the system sqlite will be linked |
| 264 | # using -lsqlite3. |
| 265 | SQLITE3_OBJ.1 = |
| 266 | SQLITE3_OBJ.0 = $(OBJDIR)/sqlite3.o |
| 267 | SQLITE3_OBJ. = $(SQLITE3_OBJ.0) |
| 268 | |
| 269 | # The FOSSIL_ENABLE_TCL variable may be undefined, set to 0, or set to 1. |
| 270 | # If it is set to 1, then we need to build the Tcl integration code and |
| 271 | # link to the Tcl library. |
| @@ -273,10 +273,11 @@ | |
| 273 | TCL_OBJ.1 = $(OBJDIR)/th_tcl.o |
| 274 | TCL_OBJ. = $(TCL_OBJ.0) |
| 275 | |
| 276 | EXTRAOBJ = \ |
| 277 | $(SQLITE3_OBJ.$(USE_SYSTEM_SQLITE)) \ |
| 278 | $(OBJDIR)/shell.o \ |
| 279 | $(OBJDIR)/th.o \ |
| 280 | $(OBJDIR)/th_lang.o \ |
| 281 | $(TCL_OBJ.$(FOSSIL_ENABLE_TCL)) \ |
| 282 | $(OBJDIR)/cson_amalgamation.o |
| 283 | |
| 284 |
+6
-6
| --- src/shell.c | ||
| +++ src/shell.c | ||
| @@ -1175,11 +1175,11 @@ | ||
| 1175 | 1175 | ** all opcodes that occur between the p2 jump destination and the opcode |
| 1176 | 1176 | ** itself by 2 spaces. |
| 1177 | 1177 | ** |
| 1178 | 1178 | ** * For each "Goto", if the jump destination is earlier in the program |
| 1179 | 1179 | ** and ends on one of: |
| 1180 | -** Yield SeekGt SeekLt RowSetRead | |
| 1180 | +** Yield SeekGt SeekLt RowSetRead Rewind | |
| 1181 | 1181 | ** then indent all opcodes between the earlier instruction |
| 1182 | 1182 | ** and "Goto" by 2 spaces. |
| 1183 | 1183 | */ |
| 1184 | 1184 | static void explain_data_prepare(struct callback_data *p, sqlite3_stmt *pSql){ |
| 1185 | 1185 | const char *zSql; /* The text of the SQL statement */ |
| @@ -1187,11 +1187,11 @@ | ||
| 1187 | 1187 | int *abYield = 0; /* True if op is an OP_Yield */ |
| 1188 | 1188 | int nAlloc = 0; /* Allocated size of p->aiIndent[], abYield */ |
| 1189 | 1189 | int iOp; /* Index of operation in p->aiIndent[] */ |
| 1190 | 1190 | |
| 1191 | 1191 | const char *azNext[] = { "Next", "Prev", "VPrev", "VNext", "SorterNext", 0 }; |
| 1192 | - const char *azYield[] = { "Yield", "SeekLt", "SeekGt", "RowSetRead", 0 }; | |
| 1192 | + const char *azYield[] = { "Yield", "SeekLt", "SeekGt", "RowSetRead", "Rewind", 0 }; | |
| 1193 | 1193 | const char *azGoto[] = { "Goto", 0 }; |
| 1194 | 1194 | |
| 1195 | 1195 | /* Try to figure out if this is really an EXPLAIN statement. If this |
| 1196 | 1196 | ** cannot be verified, return early. */ |
| 1197 | 1197 | zSql = sqlite3_sql(pSql); |
| @@ -1224,11 +1224,11 @@ | ||
| 1224 | 1224 | |
| 1225 | 1225 | if( str_in_array(zOp, azNext) ){ |
| 1226 | 1226 | for(i=p2op; i<iOp; i++) p->aiIndent[i] += 2; |
| 1227 | 1227 | } |
| 1228 | 1228 | if( str_in_array(zOp, azGoto) && p2op<p->nIndent && abYield[p2op] ){ |
| 1229 | - for(i=p2op; i<iOp; i++) p->aiIndent[i] += 2; | |
| 1229 | + for(i=p2op+1; i<iOp; i++) p->aiIndent[i] += 2; | |
| 1230 | 1230 | } |
| 1231 | 1231 | } |
| 1232 | 1232 | |
| 1233 | 1233 | p->iIndent = 0; |
| 1234 | 1234 | sqlite3_free(abYield); |
| @@ -3301,13 +3301,13 @@ | ||
| 3301 | 3301 | const char *zInitFile = 0; |
| 3302 | 3302 | char *zFirstCmd = 0; |
| 3303 | 3303 | int i; |
| 3304 | 3304 | int rc = 0; |
| 3305 | 3305 | |
| 3306 | - if( strcmp(sqlite3_sourceid(),SQLITE_SOURCE_ID)!=0 ){ | |
| 3307 | - fprintf(stderr, "SQLite header and source version mismatch\n%s\n%s\n", | |
| 3308 | - sqlite3_sourceid(), SQLITE_SOURCE_ID); | |
| 3306 | + if( sqlite3_libversion_number()<3008003 ){ | |
| 3307 | + fprintf(stderr, "Unsuitable SQLite version %s, must be at least 3.8.3", | |
| 3308 | + sqlite3_libversion()); | |
| 3309 | 3309 | exit(1); |
| 3310 | 3310 | } |
| 3311 | 3311 | Argv0 = argv[0]; |
| 3312 | 3312 | main_init(&data); |
| 3313 | 3313 | stdin_is_interactive = isatty(0); |
| 3314 | 3314 |
| --- src/shell.c | |
| +++ src/shell.c | |
| @@ -1175,11 +1175,11 @@ | |
| 1175 | ** all opcodes that occur between the p2 jump destination and the opcode |
| 1176 | ** itself by 2 spaces. |
| 1177 | ** |
| 1178 | ** * For each "Goto", if the jump destination is earlier in the program |
| 1179 | ** and ends on one of: |
| 1180 | ** Yield SeekGt SeekLt RowSetRead |
| 1181 | ** then indent all opcodes between the earlier instruction |
| 1182 | ** and "Goto" by 2 spaces. |
| 1183 | */ |
| 1184 | static void explain_data_prepare(struct callback_data *p, sqlite3_stmt *pSql){ |
| 1185 | const char *zSql; /* The text of the SQL statement */ |
| @@ -1187,11 +1187,11 @@ | |
| 1187 | int *abYield = 0; /* True if op is an OP_Yield */ |
| 1188 | int nAlloc = 0; /* Allocated size of p->aiIndent[], abYield */ |
| 1189 | int iOp; /* Index of operation in p->aiIndent[] */ |
| 1190 | |
| 1191 | const char *azNext[] = { "Next", "Prev", "VPrev", "VNext", "SorterNext", 0 }; |
| 1192 | const char *azYield[] = { "Yield", "SeekLt", "SeekGt", "RowSetRead", 0 }; |
| 1193 | const char *azGoto[] = { "Goto", 0 }; |
| 1194 | |
| 1195 | /* Try to figure out if this is really an EXPLAIN statement. If this |
| 1196 | ** cannot be verified, return early. */ |
| 1197 | zSql = sqlite3_sql(pSql); |
| @@ -1224,11 +1224,11 @@ | |
| 1224 | |
| 1225 | if( str_in_array(zOp, azNext) ){ |
| 1226 | for(i=p2op; i<iOp; i++) p->aiIndent[i] += 2; |
| 1227 | } |
| 1228 | if( str_in_array(zOp, azGoto) && p2op<p->nIndent && abYield[p2op] ){ |
| 1229 | for(i=p2op; i<iOp; i++) p->aiIndent[i] += 2; |
| 1230 | } |
| 1231 | } |
| 1232 | |
| 1233 | p->iIndent = 0; |
| 1234 | sqlite3_free(abYield); |
| @@ -3301,13 +3301,13 @@ | |
| 3301 | const char *zInitFile = 0; |
| 3302 | char *zFirstCmd = 0; |
| 3303 | int i; |
| 3304 | int rc = 0; |
| 3305 | |
| 3306 | if( strcmp(sqlite3_sourceid(),SQLITE_SOURCE_ID)!=0 ){ |
| 3307 | fprintf(stderr, "SQLite header and source version mismatch\n%s\n%s\n", |
| 3308 | sqlite3_sourceid(), SQLITE_SOURCE_ID); |
| 3309 | exit(1); |
| 3310 | } |
| 3311 | Argv0 = argv[0]; |
| 3312 | main_init(&data); |
| 3313 | stdin_is_interactive = isatty(0); |
| 3314 |
| --- src/shell.c | |
| +++ src/shell.c | |
| @@ -1175,11 +1175,11 @@ | |
| 1175 | ** all opcodes that occur between the p2 jump destination and the opcode |
| 1176 | ** itself by 2 spaces. |
| 1177 | ** |
| 1178 | ** * For each "Goto", if the jump destination is earlier in the program |
| 1179 | ** and ends on one of: |
| 1180 | ** Yield SeekGt SeekLt RowSetRead Rewind |
| 1181 | ** then indent all opcodes between the earlier instruction |
| 1182 | ** and "Goto" by 2 spaces. |
| 1183 | */ |
| 1184 | static void explain_data_prepare(struct callback_data *p, sqlite3_stmt *pSql){ |
| 1185 | const char *zSql; /* The text of the SQL statement */ |
| @@ -1187,11 +1187,11 @@ | |
| 1187 | int *abYield = 0; /* True if op is an OP_Yield */ |
| 1188 | int nAlloc = 0; /* Allocated size of p->aiIndent[], abYield */ |
| 1189 | int iOp; /* Index of operation in p->aiIndent[] */ |
| 1190 | |
| 1191 | const char *azNext[] = { "Next", "Prev", "VPrev", "VNext", "SorterNext", 0 }; |
| 1192 | const char *azYield[] = { "Yield", "SeekLt", "SeekGt", "RowSetRead", "Rewind", 0 }; |
| 1193 | const char *azGoto[] = { "Goto", 0 }; |
| 1194 | |
| 1195 | /* Try to figure out if this is really an EXPLAIN statement. If this |
| 1196 | ** cannot be verified, return early. */ |
| 1197 | zSql = sqlite3_sql(pSql); |
| @@ -1224,11 +1224,11 @@ | |
| 1224 | |
| 1225 | if( str_in_array(zOp, azNext) ){ |
| 1226 | for(i=p2op; i<iOp; i++) p->aiIndent[i] += 2; |
| 1227 | } |
| 1228 | if( str_in_array(zOp, azGoto) && p2op<p->nIndent && abYield[p2op] ){ |
| 1229 | for(i=p2op+1; i<iOp; i++) p->aiIndent[i] += 2; |
| 1230 | } |
| 1231 | } |
| 1232 | |
| 1233 | p->iIndent = 0; |
| 1234 | sqlite3_free(abYield); |
| @@ -3301,13 +3301,13 @@ | |
| 3301 | const char *zInitFile = 0; |
| 3302 | char *zFirstCmd = 0; |
| 3303 | int i; |
| 3304 | int rc = 0; |
| 3305 | |
| 3306 | if( sqlite3_libversion_number()<3008003 ){ |
| 3307 | fprintf(stderr, "Unsuitable SQLite version %s, must be at least 3.8.3", |
| 3308 | sqlite3_libversion()); |
| 3309 | exit(1); |
| 3310 | } |
| 3311 | Argv0 = argv[0]; |
| 3312 | main_init(&data); |
| 3313 | stdin_is_interactive = isatty(0); |
| 3314 |
-3
| --- src/sqlcmd.c | ||
| +++ src/sqlcmd.c | ||
| @@ -19,11 +19,10 @@ | ||
| 19 | 19 | ** shell against the repository database. The command-line shell itself |
| 20 | 20 | ** is a copy of the "shell.c" code from SQLite. This file contains logic |
| 21 | 21 | ** to initialize the code in shell.c. |
| 22 | 22 | */ |
| 23 | 23 | #include "config.h" |
| 24 | -#if !defined(USE_SYSTEM_SQLITE) || !USE_SYSTEM_SQLITE | |
| 25 | 24 | #include "sqlcmd.h" |
| 26 | 25 | #include <zlib.h> |
| 27 | 26 | |
| 28 | 27 | /* |
| 29 | 28 | ** Implementation of the "content(X)" SQL function. Return the complete |
| @@ -155,7 +154,5 @@ | ||
| 155 | 154 | */ |
| 156 | 155 | void fossil_open(const char **pzRepoName){ |
| 157 | 156 | sqlite3_auto_extension((void(*)(void))sqlcmd_autoinit); |
| 158 | 157 | *pzRepoName = g.zRepositoryName; |
| 159 | 158 | } |
| 160 | - | |
| 161 | -#endif /* !USE_SYSTEM_SQLITE */ | |
| 162 | 159 |
| --- src/sqlcmd.c | |
| +++ src/sqlcmd.c | |
| @@ -19,11 +19,10 @@ | |
| 19 | ** shell against the repository database. The command-line shell itself |
| 20 | ** is a copy of the "shell.c" code from SQLite. This file contains logic |
| 21 | ** to initialize the code in shell.c. |
| 22 | */ |
| 23 | #include "config.h" |
| 24 | #if !defined(USE_SYSTEM_SQLITE) || !USE_SYSTEM_SQLITE |
| 25 | #include "sqlcmd.h" |
| 26 | #include <zlib.h> |
| 27 | |
| 28 | /* |
| 29 | ** Implementation of the "content(X)" SQL function. Return the complete |
| @@ -155,7 +154,5 @@ | |
| 155 | */ |
| 156 | void fossil_open(const char **pzRepoName){ |
| 157 | sqlite3_auto_extension((void(*)(void))sqlcmd_autoinit); |
| 158 | *pzRepoName = g.zRepositoryName; |
| 159 | } |
| 160 | |
| 161 | #endif /* !USE_SYSTEM_SQLITE */ |
| 162 |
| --- src/sqlcmd.c | |
| +++ src/sqlcmd.c | |
| @@ -19,11 +19,10 @@ | |
| 19 | ** shell against the repository database. The command-line shell itself |
| 20 | ** is a copy of the "shell.c" code from SQLite. This file contains logic |
| 21 | ** to initialize the code in shell.c. |
| 22 | */ |
| 23 | #include "config.h" |
| 24 | #include "sqlcmd.h" |
| 25 | #include <zlib.h> |
| 26 | |
| 27 | /* |
| 28 | ** Implementation of the "content(X)" SQL function. Return the complete |
| @@ -155,7 +154,5 @@ | |
| 154 | */ |
| 155 | void fossil_open(const char **pzRepoName){ |
| 156 | sqlite3_auto_extension((void(*)(void))sqlcmd_autoinit); |
| 157 | *pzRepoName = g.zRepositoryName; |
| 158 | } |
| 159 |