aboutsummaryrefslogtreecommitdiff
path: root/mptest/mptest.c
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2013-04-06 18:35:07 +0000
committerdrh <drh@noemail.net>2013-04-06 18:35:07 +0000
commite348fc7fe8433fe5f8dcb36317cf0e3661bb7f19 (patch)
treee91b96d9009337e6cdc211308850b74cb7d739a6 /mptest/mptest.c
parent8f35eb024e9308621c31c9571e8f969d31e63735 (diff)
downloadsqlite-e348fc7fe8433fe5f8dcb36317cf0e3661bb7f19.tar.gz
sqlite-e348fc7fe8433fe5f8dcb36317cf0e3661bb7f19.zip
Fix the --source command so that its argument is relative to the script.
Verify that the SQLite header and library match. Print SQLite version and compile-time configuration information on startup. FossilOrigin-Name: 15cb0db7583c3a24cbea0c72576047a93fba0801
Diffstat (limited to 'mptest/mptest.c')
-rw-r--r--mptest/mptest.c33
1 files changed, 29 insertions, 4 deletions
diff --git a/mptest/mptest.c b/mptest/mptest.c
index 768a73ed7..d2fdb6439 100644
--- a/mptest/mptest.c
+++ b/mptest/mptest.c
@@ -22,7 +22,6 @@
** Recommended options:
**
** -DHAVE_USLEEP
-** -DSQLITE_MAX_SCHEMA_RETRY=100
** -DSQLITE_NO_SYNC
** -DSQLITE_THREADSAFE=0
** -DSQLITE_OMIT_LOAD_EXTENSION
@@ -824,11 +823,21 @@ static void runScript(
** Run a subscript from a separate file.
*/
if( strcmp(zCmd, "source")==0 ){
- char *zNewFile = azArg[0];
- char *zNewScript = readFile(zNewFile);
+ char *zNewFile, *zNewScript;
+ char *zToDel = 0;
+ zNewFile = azArg[0];
+ if( zNewFile[0]!='/' ){
+ int k;
+ for(k=(int)strlen(zFilename)-1; k>=0 && zFilename[k]!='/'; k--){}
+ if( k>0 ){
+ zNewFile = zToDel = sqlite3_mprintf("%.*s/%s", k,zFilename,zNewFile);
+ }
+ }
+ zNewScript = readFile(zNewFile);
if( g.iTrace ) logMessage("begin script [%s]\n", zNewFile);
runScript(0, 0, zNewScript, zNewFile);
sqlite3_free(zNewScript);
+ sqlite3_free(zToDel);
if( g.iTrace ) logMessage("end script [%s]\n", zNewFile);
}else
@@ -987,17 +996,26 @@ static void unrecognizedArguments(
int main(int argc, char **argv){
const char *zClient;
int iClient;
- int n;
+ int n, i;
int openFlags = SQLITE_OPEN_READWRITE;
int rc;
char *zScript;
int taskId;
const char *zTrace;
+ const char *zCOption;
g.argv0 = argv[0];
g.iTrace = 1;
if( argc<2 ) usage(argv[0]);
g.zDbFile = argv[1];
+ if( strglob("*.test", g.zDbFile) ) usage(argv[0]);
+ if( strcmp(sqlite3_sourceid(), SQLITE_SOURCE_ID)!=0 ){
+ fprintf(stderr, "SQLite library and header mismatch\n"
+ "Library: %s\n"
+ "Header: %s\n",
+ sqlite3_sourceid(), SQLITE_SOURCE_ID);
+ exit(1);
+ }
n = argc-2;
sqlite3_snprintf(sizeof(g.zName), g.zName, "mptest");
g.zVfs = findOption(argv+2, &n, "vfs", 1);
@@ -1024,6 +1042,13 @@ int main(int argc, char **argv){
if( iClient<1 ) fatalError("illegal client number: %d\n", iClient);
sqlite3_snprintf(sizeof(g.zName), g.zName, "client%02d", iClient);
}else{
+ if( g.iTrace>0 ){
+ printf("With SQLite " SQLITE_VERSION " " SQLITE_SOURCE_ID "\n" );
+ for(i=0; (zCOption = sqlite3_compileoption_get(i))!=0; i++){
+ printf("-DSQLITE_%s\n", zCOption);
+ }
+ fflush(stdout);
+ }
iClient = 0;
unlink(g.zDbFile);
openFlags |= SQLITE_OPEN_CREATE;