svn commit: samba r11085 - in branches/SAMBA_4_0/source/scripting/ejs: .

metze at samba.org metze at samba.org
Sat Oct 15 09:32:05 GMT 2005


Author: metze
Date: 2005-10-15 09:32:04 +0000 (Sat, 15 Oct 2005)
New Revision: 11085

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

Log:
as ejs doesn't support '&' '|' bitwise AND and OR,
we need some helper functions for this

metze
Modified:
   branches/SAMBA_4_0/source/scripting/ejs/smbcalls_sys.c


Changeset:
Modified: branches/SAMBA_4_0/source/scripting/ejs/smbcalls_sys.c
===================================================================
--- branches/SAMBA_4_0/source/scripting/ejs/smbcalls_sys.c	2005-10-15 09:28:56 UTC (rev 11084)
+++ branches/SAMBA_4_0/source/scripting/ejs/smbcalls_sys.c	2005-10-15 09:32:04 UTC (rev 11085)
@@ -257,8 +257,53 @@
 	return 0;
 }
 
+/*
+  bitwise AND
+  usage:
+      var z = sys.bitAND(x, 0x70);
+*/
+static int ejs_sys_bitAND(MprVarHandle eid, int argc, struct MprVar **argv)
+{
+	int x, y, z;
 
+	if (argc != 2 || 
+	    !mprVarIsNumber(argv[0]->type) ||
+	    !mprVarIsNumber(argv[1]->type)) {
+		ejsSetErrorMsg(eid, "bitand invalid arguments");
+		return -1;
+	}
+	x = mprToInt(argv[0]);
+	y = mprToInt(argv[1]);
+	z = x & y;
+
+	mpr_Return(eid, mprCreateIntegerVar(z));
+	return 0;
+}
+
 /*
+  bitwise OR
+  usage:
+      var z = sys.bitOR(x, 0x70);
+*/
+static int ejs_sys_bitOR(MprVarHandle eid, int argc, struct MprVar **argv)
+{
+	int x, y, z;
+
+	if (argc != 2 || 
+	    !mprVarIsNumber(argv[0]->type) ||
+	    !mprVarIsNumber(argv[1]->type)) {
+		ejsSetErrorMsg(eid, "bitand invalid arguments");
+		return -1;
+	}
+	x = mprToInt(argv[0]);
+	y = mprToInt(argv[1]);
+	z = x | y;
+
+	mpr_Return(eid, mprCreateIntegerVar(z));
+	return 0;
+}
+
+/*
   initialise sys ejs subsystem
 */
 static int ejs_sys_init(MprVarHandle eid, int argc, struct MprVar **argv)
@@ -276,6 +321,8 @@
 	mprSetStringCFunction(obj, "file_save", ejs_sys_file_save);
 	mprSetStringCFunction(obj, "stat", ejs_sys_stat);
 	mprSetStringCFunction(obj, "lstat", ejs_sys_lstat);
+	mprSetCFunction(obj, "bitAND", ejs_sys_bitAND);
+	mprSetCFunction(obj, "bitOR", ejs_sys_bitOR);
 
 	return 0;
 }



More information about the samba-cvs mailing list