Author: tpot
Date: 2005-05-29 03:25:21 +0000 (Sun, 29 May 2005)
New Revision: 7063

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=7063

Log:
Do error checking on the ejs functions.

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!

Modified:
   branches/SAMBA_4_0/source/scripting/ejs/smbscript.c


Changeset:
Modified: branches/SAMBA_4_0/source/scripting/ejs/smbscript.c
===================================================================
--- branches/SAMBA_4_0/source/scripting/ejs/smbscript.c 2005-05-29 00:22:34 UTC 
(rev 7062)
+++ branches/SAMBA_4_0/source/scripting/ejs/smbscript.c 2005-05-29 03:25:21 UTC 
(rev 7063)
@@ -29,9 +29,6 @@
        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 @@
        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);
+       if (ejsOpen(0, 0, 0) != 0) {
+               fprintf(stderr, "smbscript: ejsOpen(): unable to initialise "
+                       "EJ subsystem\n");
+               exit(1);
+       }
+
+       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();
 
-       printf("emsg = %s\n", emsg);
-
        return 0;
 }

Reply via email to