diff --git a/src/sbbs3/GNUmakefile b/src/sbbs3/GNUmakefile index 51b3d3fdd1641b59e17667050b8ab3c6f2f0ba5c..ed5bd75dc02424b7dc54da8686f45b01492d898f 100644 --- a/src/sbbs3/GNUmakefile +++ b/src/sbbs3/GNUmakefile @@ -104,6 +104,14 @@ ifndef WITHOUT_MOSQUITTO endif endif endif +ifndef WITHOUT_SQLITE3 + ifneq ($(os), win32) + ifeq ($(shell pkg-config 'sqlite3' --exists && echo "yes"),yes) + CFLAGS += -DUSE_SQLITE3 + JS_LIBS += $(shell pkg-config sqlite3 --libs) + endif + endif +endif ifeq ($(shell pkg-config libarchive --exists && echo "yes"),yes) CFLAGS += $(shell pkg-config libarchive --cflags) FILE_LIBS = $(shell pkg-config libarchive --libs) @@ -122,8 +130,6 @@ else FILE_LIBS = -larchive endif -JS_LIBS += $(shell pkg-config --libs sqlite3) - include sbbsdefs.mk MT_CFLAGS += $(SBBSDEFS) $(SFTP-MT_CFLAGS) diff --git a/src/sbbs3/js_sqlite.c b/src/sbbs3/js_sqlite.c index 044cabdd8de3741ef86788d7eb45ae1231e73e2e..cb53ed2d586b1f66cedd0d99d94813c9fc84838a 100644 --- a/src/sbbs3/js_sqlite.c +++ b/src/sbbs3/js_sqlite.c @@ -300,14 +300,15 @@ static JSBool js_sqlite_get(JSContext *cx, JSObject *obj, jsid id, jsval *vp) return JS_TRUE; } -#define SQLITE_PROP_FLAGS JSPROP_ENUMERATE | JSPROP_READONLY +#define SQLITE_PROP_FLAGS JSPROP_ENUMERATE +#define SQLITE_PROP_ROFLAGS JSPROP_ENUMERATE | JSPROP_READONLY static jsSyncPropertySpec js_sqlite_properties[] = { /* name ,tinyid ,flags, ver */ - { "name", SQLITE_PROP_NAME, JSPROP_ENUMERATE | JSPROP_READONLY, 310}, - { "stmt", SQLITE_PROP_STMT, JSPROP_ENUMERATE, 310}, - { "debug", SQLITE_PROP_DEBUG, JSPROP_ENUMERATE, 310}, - { "errormsg", SQLITE_PROP_ERRORMSG, JSPROP_ENUMERATE | JSPROP_READONLY, 310}, + { "name", SQLITE_PROP_NAME, SQLITE_PROP_ROFLAGS, 321}, + { "stmt", SQLITE_PROP_STMT, JSPROP_ENUMERATE, 321}, + { "debug", SQLITE_PROP_DEBUG, JSPROP_ENUMERATE, 321}, + { "errormsg", SQLITE_PROP_ERRORMSG, SQLITE_PROP_ROFLAGS, 321}, {0} }; @@ -325,13 +326,13 @@ static char* sqlite_prop_desc[] = { static jsSyncMethodSpec js_sqlite_functions[] = { {"open", js_open, 1, JSTYPE_BOOLEAN, JSDOCSTR("Open the database") , JSDOCSTR("open the sqlite3 database") - , 310}, + , 321}, {"close", js_close, 0, JSTYPE_VOID, JSDOCSTR("") , JSDOCSTR("close database") - , 310}, + , 321}, {"exec", js_exec, 0, JSTYPE_BOOLEAN, JSDOCSTR("") , JSDOCSTR("exec the sql query on database") - , 310}, + , 321}, {0} }; @@ -413,7 +414,7 @@ js_sqlite_constructor(JSContext* cx, uintN argc, jsval *arglist) #ifdef BUILD_JSDOCS js_DescribeSyncObject(cx, obj, "Can used to manipulate sqlite database" - , 310 + , 321 ); js_DescribeSyncConstructor(cx, obj, "To create a new Sqlite object: <tt>var f = new Sqlite(<i>filename</i>)</tt>"); js_CreateArrayOfStrings(cx, obj, "_property_desc_list", sqlite_prop_desc, JSPROP_READONLY); diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp index 18a9b2ac724fd25344fadafbfcca540eee48a0ce..6eed7f41364b23b7519599b482ed9c1a7c3d9f9f 100644 --- a/src/sbbs3/main.cpp +++ b/src/sbbs3/main.cpp @@ -1633,9 +1633,12 @@ extern "C" bool js_CreateCommonObjects(JSContext* js_cx if (js_CreateMQTTClass(js_cx, *glob) == NULL) break; #endif + +#if defined USE_SQLITE3 /* Sqlite Class */ if(js_CreateSqliteClass(js_cx, *glob)==NULL) break; +#endif /* Area Objects */ if (!js_CreateUserObjects(js_cx, *glob, cfg, /* user: */ NULL, client, startup == NULL ? NULL :startup->web_file_vpath_prefix, /* subscan: */ NULL, mqtt)) diff --git a/src/sbbs3/sbbs.h b/src/sbbs3/sbbs.h index e5f947feb532982a63843fd63c85dfeebc601675..58a10613f23e45d2c5b6e326b4c49c0eeabffd12 100644 --- a/src/sbbs3/sbbs.h +++ b/src/sbbs3/sbbs.h @@ -1559,6 +1559,7 @@ extern "C" { /* js_sqlite.c */ DLLEXPORT JSObject* js_CreateSqliteClass(JSContext* cx, JSObject* parent); + DLLEXPORT JSObject* js_CreateMQTTClass(JSContext*, JSObject* parent); #endif diff --git a/src/sbbs3/ver.cpp b/src/sbbs3/ver.cpp index ca73fdaa875af29118d1208b8dc41791f8311ea0..a0ab7558450671a4a6b5c9881c0661dda165514a 100644 --- a/src/sbbs3/ver.cpp +++ b/src/sbbs3/ver.cpp @@ -27,6 +27,9 @@ #include "git_branch.h" #include "ver.h" #include <archive.h> +#ifdef USE_SQLITE3 +#include <sqlite3.h> +#endif #ifdef __cplusplus extern "C" { @@ -140,6 +143,13 @@ void sbbs_t::ver() CRLF; #endif +#ifdef USE_SQLITE3 + safe_snprintf(str, sizeof(str), "libsqlite3 %s (%u)", SQLITE_VERSION, SQLITE_VERSION_NUMBER); + term->center(str); + CRLF; +#endif + + safe_snprintf(str, sizeof(str), "%s %s", os_version(os, sizeof(os)), os_cpuarch(cpu, sizeof(cpu))); term->center(str); }