From 1511cde44ccc94b71b8eb317deb73c103dcd8010 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Fri, 27 May 2005 03:58:12 +0000 Subject: r7002: added support for getting at loadparm config parameters via lpGet() in esp scripts lpGet takes 4 forms v = lpGet("type:parm"); gets a parametric variable v = lpGet("share", "type:parm"); gets a parametric variable on a share v = lpGet("parm"); gets a global variable v = lpGet("share", "parm"); gets a share variable in all cases a ejs object of the appropriate type for the variable is returned. This commit also adds the function typeof() which returns the type of an object (This used to be commit 5537a0d38d4805cbc2dad0d6f76db15173b1fd60) --- source4/web_server/calls.c | 72 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 source4/web_server/calls.c (limited to 'source4/web_server/calls.c') diff --git a/source4/web_server/calls.c b/source4/web_server/calls.c new file mode 100644 index 0000000000..8cd0c21b1c --- /dev/null +++ b/source4/web_server/calls.c @@ -0,0 +1,72 @@ +/* + Unix SMB/CIFS implementation. + + provide hooks into C calls from esp scripts + + Copyright (C) Andrew Tridgell 2005 + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#include "includes.h" +#include "web_server/esp/esp.h" + + +/* + return the type of a variable +*/ +static int esp_typeof(struct EspRequest *ep, int argc, struct MprVar **argv) +{ + const struct { + MprType type; + const char *name; + } types[] = { + { MPR_TYPE_UNDEFINED, "undefined" }, + { MPR_TYPE_NULL, "null" }, + { MPR_TYPE_BOOL, "boolean" }, + { MPR_TYPE_CFUNCTION, "function" }, + { MPR_TYPE_FLOAT, "float" }, + { MPR_TYPE_INT, "int" }, + { MPR_TYPE_INT64, "int64" }, + { MPR_TYPE_OBJECT, "object" }, + { MPR_TYPE_FUNCTION, "function" }, + { MPR_TYPE_STRING, "string" }, + { MPR_TYPE_STRING_CFUNCTION, "function" } + }; + int i; + const char *type = "unknown"; + + if (argc != 1) return -1; + + for (i=0;itype == types[i].type) { + type = types[i].name; + break; + } + } + + espSetReturnString(ep, type); + return 0; +} + + +/* + setup the C functions that be called from ejs +*/ +void http_setup_ejs_functions(void) +{ + espDefineStringCFunction(NULL, "lpGet", esp_lpGet, NULL); + espDefineCFunction(NULL, "typeof", esp_typeof, NULL); +} -- cgit