r7063: Do error checking on the ejs functions.
authorTim Potter <tpot@samba.org>
Sun, 29 May 2005 03:25:21 +0000 (03:25 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:17:10 +0000 (13:17 -0500)
Tridge says there is a bug in defining per-engine CFunction's so move
calls to ejsDefineStringCFunction() above the ejsOpenEngine() call.

Test script now works!
(This used to be commit 5e2458ae6c863ff29b85fff3d093f7f4fa9dc2be)

source4/scripting/ejs/smbscript.c

index f1c3f0b46ded044736ded5861413ed68b5bc31e8..85064d3b44160148ff08b175a276e7783e5523e0 100644 (file)
@@ -29,9 +29,6 @@ void http_exception(const char *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;
@@ -50,13 +47,26 @@ static int writeProc(MprVarHandle userHandle, int argc, char **argv)
        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();
+       if (ejsOpen(0, 0, 0) != 0) {
+               fprintf(stderr, "smbscript: ejsOpen(): unable to initialise "
+                       "EJ subsystem\n");
+               exit(1);
+       }
 
-       printf("emsg = %s\n", emsg);
+       ejsDefineStringCFunction(-1, "write", writeProc, NULL, 0);
+
+       if ((eid = ejsOpenEngine(primary, alternate)) == (EjsId)-1) {
+               fprintf(stderr, "smbscript: ejsOpenEngine(): unable to "
+                       "initialise an EJS engine\n");
+               exit(1);
+       }
+
+       if (ejsEvalScript(0, "write(\"hello\n\");", &result, &emsg) == -1) {
+               fprintf(stderr, "smbscript: ejsEvalScript(): %s\n", emsg);
+               exit(1);
+       }
+
+       ejsClose();
 
        return 0;
 }