diff --git a/tool/net/help.txt b/tool/net/help.txt index 55c91376a..639d298ed 100644 --- a/tool/net/help.txt +++ b/tool/net/help.txt @@ -668,6 +668,11 @@ FUNCTIONS Returns the request HTTP protocol version, which can be 9 for HTTP/0.9, 10 for HTTP/1.0, or 11 for HTTP/1.1. + GetRedbeanVersion() → int + Returns the Redbean version in the format 0xMMmmpp, with major (MM), + minor (mm), and patch (pp) versions encoded, so that version 1.4 + would be represented as 0x010400. + GetZipPaths() → array[str] Returns paths of all assets in the zip central directory, prefixed by a slash. diff --git a/tool/net/redbean.c b/tool/net/redbean.c index 2605547d2..2ce4ac87d 100644 --- a/tool/net/redbean.c +++ b/tool/net/redbean.c @@ -142,6 +142,7 @@ #define REDBEAN "redbean" #endif +#define VERSION 0x010400 #define HASH_LOAD_FACTOR /* 1. / */ 4 #define read(F, P, N) readv(F, &(struct iovec){P, N}, 1) #define write(F, P, N) writev(F, &(struct iovec){P, N}, 1) @@ -960,7 +961,7 @@ static void ProgramCache(long x) { } static void SetDefaults(void) { - ProgramBrand(REDBEAN "/1.4"); + ProgramBrand(gc(xasprintf("%s/%hhd.%hhd", REDBEAN, VERSION>>020, VERSION>>010))); __log_level = kLogInfo; maxpayloadsize = 64 * 1024; ProgramCache(-1); @@ -4022,6 +4023,11 @@ static int LuaGetVersion(lua_State *L) { return 1; } +static int LuaGetRedbeanVersion(lua_State *L) { + lua_pushinteger(L, VERSION); + return 1; +} + static int LuaGetMethod(lua_State *L) { if (msg.method) { lua_pushstring(L, kHttpMethod[msg.method]); @@ -5199,6 +5205,7 @@ static const luaL_Reg kLuaFuncs[] = { {"GetUrl", LuaGetUrl}, // {"GetUser", LuaGetUser}, // {"GetVersion", LuaGetVersion}, // + {"GetRedbeanVersion", LuaGetRedbeanVersion}, // {"GetZipPaths", LuaGetZipPaths}, // {"HasControlCodes", LuaHasControlCodes}, // {"HasParam", LuaHasParam}, //