Update comments and documentation associated with new URI parsing code. Add test file e_uri.test, containing tests mapped to documentation regarding URI filenames.
FossilOrigin-Name: 92751788eae082e3104838cb6dd8b9793cb325d1
This commit is contained in:
+71
@@ -3845,6 +3845,76 @@ static int test_open(
|
||||
return TCL_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
** Usage: sqlite3_open_v2 FILENAME FLAGS VFS
|
||||
*/
|
||||
static int test_open_v2(
|
||||
void * clientData,
|
||||
Tcl_Interp *interp,
|
||||
int objc,
|
||||
Tcl_Obj *CONST objv[]
|
||||
){
|
||||
const char *zFilename;
|
||||
const char *zVfs;
|
||||
int flags = 0;
|
||||
sqlite3 *db;
|
||||
int rc;
|
||||
char zBuf[100];
|
||||
|
||||
int nFlag;
|
||||
Tcl_Obj **apFlag;
|
||||
int i;
|
||||
|
||||
if( objc!=4 ){
|
||||
Tcl_WrongNumArgs(interp, 1, objv, "FILENAME FLAGS VFS");
|
||||
return TCL_ERROR;
|
||||
}
|
||||
zFilename = Tcl_GetString(objv[1]);
|
||||
zVfs = Tcl_GetString(objv[3]);
|
||||
if( zVfs[0]==0x00 ) zVfs = 0;
|
||||
|
||||
rc = Tcl_ListObjGetElements(interp, objv[2], &nFlag, &apFlag);
|
||||
if( rc!=TCL_OK ) return rc;
|
||||
for(i=0; i<nFlag; i++){
|
||||
int iFlag;
|
||||
struct OpenFlag {
|
||||
const char *zFlag;
|
||||
int flag;
|
||||
} aFlag[] = {
|
||||
{ "SQLITE_OPEN_READONLY", SQLITE_OPEN_READONLY },
|
||||
{ "SQLITE_OPEN_READWRITE", SQLITE_OPEN_READWRITE },
|
||||
{ "SQLITE_OPEN_CREATE", SQLITE_OPEN_CREATE },
|
||||
{ "SQLITE_OPEN_DELETEONCLOSE", SQLITE_OPEN_DELETEONCLOSE },
|
||||
{ "SQLITE_OPEN_EXCLUSIVE", SQLITE_OPEN_EXCLUSIVE },
|
||||
{ "SQLITE_OPEN_AUTOPROXY", SQLITE_OPEN_AUTOPROXY },
|
||||
{ "SQLITE_OPEN_MAIN_DB", SQLITE_OPEN_MAIN_DB },
|
||||
{ "SQLITE_OPEN_TEMP_DB", SQLITE_OPEN_TEMP_DB },
|
||||
{ "SQLITE_OPEN_TRANSIENT_DB", SQLITE_OPEN_TRANSIENT_DB },
|
||||
{ "SQLITE_OPEN_MAIN_JOURNAL", SQLITE_OPEN_MAIN_JOURNAL },
|
||||
{ "SQLITE_OPEN_TEMP_JOURNAL", SQLITE_OPEN_TEMP_JOURNAL },
|
||||
{ "SQLITE_OPEN_SUBJOURNAL", SQLITE_OPEN_SUBJOURNAL },
|
||||
{ "SQLITE_OPEN_MASTER_JOURNAL", SQLITE_OPEN_MASTER_JOURNAL },
|
||||
{ "SQLITE_OPEN_NOMUTEX", SQLITE_OPEN_NOMUTEX },
|
||||
{ "SQLITE_OPEN_FULLMUTEX", SQLITE_OPEN_FULLMUTEX },
|
||||
{ "SQLITE_OPEN_SHAREDCACHE", SQLITE_OPEN_SHAREDCACHE },
|
||||
{ "SQLITE_OPEN_PRIVATECACHE", SQLITE_OPEN_PRIVATECACHE },
|
||||
{ "SQLITE_OPEN_WAL", SQLITE_OPEN_WAL },
|
||||
{ "SQLITE_OPEN_URI", SQLITE_OPEN_URI },
|
||||
{ 0, 0 }
|
||||
};
|
||||
rc = Tcl_GetIndexFromObjStruct(interp, apFlag[i], aFlag, sizeof(aFlag[0]),
|
||||
"flag", 0, &iFlag
|
||||
);
|
||||
if( rc!=TCL_OK ) return rc;
|
||||
flags |= aFlag[iFlag].flag;
|
||||
}
|
||||
|
||||
rc = sqlite3_open_v2(zFilename, &db, flags, zVfs);
|
||||
if( sqlite3TestMakePointerStr(interp, zBuf, db) ) return TCL_ERROR;
|
||||
Tcl_AppendResult(interp, zBuf, 0);
|
||||
return TCL_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
** Usage: sqlite3_open16 filename options
|
||||
*/
|
||||
@@ -5593,6 +5663,7 @@ int Sqlitetest1_Init(Tcl_Interp *interp){
|
||||
{ "sqlite3_errmsg16", test_errmsg16 ,0 },
|
||||
{ "sqlite3_open", test_open ,0 },
|
||||
{ "sqlite3_open16", test_open16 ,0 },
|
||||
{ "sqlite3_open_v2", test_open_v2 ,0 },
|
||||
{ "sqlite3_complete16", test_complete16 ,0 },
|
||||
|
||||
{ "sqlite3_prepare", test_prepare ,0 },
|
||||
|
||||
Reference in New Issue
Block a user