0
0
mirror of https://github.com/sqlite/sqlite.git synced 2024-11-28 16:09:31 +01:00
sqlite/tool/sqlite3_analyzer.c.in
drh 6db9206c18 Enhance sqlite3_analyzer.exe so that it uses the ext/consio extension.
FossilOrigin-Name: 769de0b98e136e4a0945b80216d0c9583c1ccd9de69cb0494875c2300e172646
2024-01-03 14:13:27 +00:00

77 lines
1.9 KiB
C

/*
** Read an SQLite database file and analyze its space utilization. Generate
** text on standard output.
*/
#define TCLSH_INIT_PROC sqlite3_analyzer_init_proc
#define SQLITE_ENABLE_DBSTAT_VTAB 1
#undef SQLITE_THREADSAFE
#define SQLITE_THREADSAFE 0
#undef SQLITE_ENABLE_COLUMN_METADATA
#define SQLITE_OMIT_DECLTYPE 1
#define SQLITE_OMIT_DEPRECATED 1
#define SQLITE_OMIT_PROGRESS_CALLBACK 1
#define SQLITE_OMIT_SHARED_CACHE 1
#define SQLITE_DEFAULT_MEMSTATUS 0
#define SQLITE_MAX_EXPR_DEPTH 0
#define SQLITE_OMIT_LOAD_EXTENSION 1
#if !defined(SQLITE_AMALGAMATION) && !defined(USE_EXTERNAL_SQLITE)
INCLUDE sqlite3.c
#endif
INCLUDE $ROOT/src/tclsqlite.c
#if defined(_WIN32)
INCLUDE $ROOT/ext/consio/console_io.h
INCLUDE $ROOT/ext/consio/console_io.c
/* Substitute "puts" command. Only these forms recognized:
**
** puts STRING
** puts stderr STRING
** puts -nonewline STRING
*/
static int subst_puts(
void *NotUsed,
Tcl_Interp *interp,
int objc,
Tcl_Obj *const*objv
){
FILE *pOut = stdout;
const char *zOut;
int addNewLine = 1;
if( objc==2 ){
zOut = Tcl_GetString(objv[1]);
}else if( objc!=3 ){
Tcl_WrongNumArgs(interp, 1, objv, "?stderr|-nonewline? STRING");
return TCL_ERROR;
}else{
const char *zArg = Tcl_GetString(objv[1]);
if( zArg==0 ) return TCL_ERROR;
zOut = Tcl_GetString(objv[2]);
if( strcmp(zArg, "stderr")==0 ){
pOut = stderr;
}else if( strcmp(zArg, "-nonewline")==0 ){
addNewLine = 0;
}else{
Tcl_AppendResult(interp, "bad argument: ", zArg, 0);
return TCL_ERROR;
}
}
fPutsUtf8(zOut, pOut);
if( addNewLine ) fPutsUtf8("\n", pOut);
return TCL_OK;
}
#endif /* defined(_WIN32) */
const char *sqlite3_analyzer_init_proc(Tcl_Interp *interp){
#if defined(_WIN32)
Tcl_CreateObjCommand(interp, "puts", subst_puts, 0, 0);
#else
(void)interp;
#endif
return
BEGIN_STRING
INCLUDE $ROOT/tool/spaceanal.tcl
END_STRING
;
}