1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-07 17:18:11 +03:00

r7061: A ejs scripting client. This should allow javascript to be run in a

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 3444cd5429)
This commit is contained in:
Tim Potter 2005-05-29 00:13:10 +00:00 committed by Gerald (Jerry) Carter
parent 0befec0920
commit f52a740215
3 changed files with 71 additions and 0 deletions

View 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",
);

View File

@ -0,0 +1,8 @@
#######################
# Start BINARY SMBSCRIPT
[BINARY::smbscript]
OBJ_FILES = \
scripting/ejs/smbscript.o
REQUIRED_SUBSYSTEMS = EJS LIBBASIC
# End BINARY SMBSCRIPT
#######################

View File

@ -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;
}