r7061: A ejs scripting client. This should allow javascript to be run in a
authorTim Potter <tpot@samba.org>
Sun, 29 May 2005 00:13:10 +0000 (00:13 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:17:10 +0000 (13:17 -0500)
command line environment instead of inside the web server.

It doesn't work yet though, rather an exception is thrown when trying
to call ejsDefineStringCFunction().
(This used to be commit 3444cd5429dfef5a67d5bf7818ae08e4e8cc5ccc)

source4/build/smb_build/main.pm
source4/scripting/config.mk [new file with mode: 0644]
source4/scripting/ejs/smbscript.c [new file with mode: 0644]

index dd0487110aaf6930efd5e8cf166348737e6f57b6..593064c75f3ce8ace76b0cdef87f7345d578e6d7 100644 (file)
@@ -62,6 +62,7 @@ sub smb_build_main($)
                "libcli/config.mk",
                "libcli/security/config.mk",
                "lib/com/config.mk",
+               "scripting/config.mk",
                "scripting/swig/config.mk",
        );
 
diff --git a/source4/scripting/config.mk b/source4/scripting/config.mk
new file mode 100644 (file)
index 0000000..31f7e6d
--- /dev/null
@@ -0,0 +1,8 @@
+#######################
+# Start BINARY SMBSCRIPT
+[BINARY::smbscript]
+OBJ_FILES = \
+               scripting/ejs/smbscript.o
+REQUIRED_SUBSYSTEMS = EJS LIBBASIC
+# End BINARY SMBSCRIPT
+#######################
diff --git a/source4/scripting/ejs/smbscript.c b/source4/scripting/ejs/smbscript.c
new file mode 100644 (file)
index 0000000..f1c3f0b
--- /dev/null
@@ -0,0 +1,62 @@
+/* 
+   Unix SMB/CIFS implementation.
+
+   Standalone client for ESP scripting.
+
+   Copyright (C) Tim Potter <tpot@samba.org> 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/ejs/ejs.h"
+
+void http_exception(const char *reason)
+{
+       fprintf(stderr, "smbscript exception: %s", reason);
+       exit(1);
+}
+
+extern void            ejsDefineStringCFunction(EjsId eid, const char *functionName, 
+                                       MprStringCFunction fn, void *thisPtr, int flags);
+
+static int writeProc(MprVarHandle userHandle, int argc, char **argv)
+{
+       int i;
+
+       mprAssert(argv);
+       for (i = 0; i < argc; i++) {
+               printf("%s", argv[i]);
+       }
+       return 0;
+}
+
+ int main(int argc, const char *argv[])
+{
+       EjsId eid;
+       EjsHandle primary, alternate;
+       MprVar result;
+       char *emsg;
+
+       ejsOpen(0, 0, 0);
+       eid = ejsOpenEngine(primary, alternate);
+       ejsDefineStringCFunction(eid, "write", writeProc, NULL, 0);
+       ejsEvalScript(0, "write(\"hello\n\");", &result, &emsg);
+       ejsClose();
+
+       printf("emsg = %s\n", emsg);
+
+       return 0;
+}