svn commit: samba r8216 - in branches/SAMBA_4_0/source: build/pidl scripting/ejs

tridge at samba.org tridge at samba.org
Fri Jul 8 04:07:27 GMT 2005


Author: tridge
Date: 2005-07-08 04:07:26 +0000 (Fri, 08 Jul 2005)
New Revision: 8216

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

Log:
- handle union pull in ejs pidl generation

- added debugging calls for missing structure/union elements

Modified:
   branches/SAMBA_4_0/source/build/pidl/ejs.pm
   branches/SAMBA_4_0/source/scripting/ejs/ejsrpc.c


Changeset:
Modified: branches/SAMBA_4_0/source/build/pidl/ejs.pm
===================================================================
--- branches/SAMBA_4_0/source/build/pidl/ejs.pm	2005-07-08 03:33:32 UTC (rev 8215)
+++ branches/SAMBA_4_0/source/build/pidl/ejs.pm	2005-07-08 04:07:26 UTC (rev 8216)
@@ -193,10 +193,26 @@
 {
 	my $name = shift;
 	my $d = shift;
+	my $have_default = 0;
 	my $env = GenerateStructEnv($d);
 	pidl "\nstatic NTSTATUS ejs_pull_$name(struct ejs_rpc *ejs, struct MprVar *v, const char *name, union $name *r)\n{\n";
-	pidl "return ejs_panic(ejs, \"union pull not handled\");\n";
-	pidl "}\n\n";
+	pidl "\tNDR_CHECK(ejs_pull_struct_start(ejs, &v, name));\n";
+	pidl "switch (ejs->switch_var) {\n";
+	foreach my $e (@{$d->{ELEMENTS}}) {
+		if ($e->{CASE} eq "default") {
+			$have_default = 1;
+		}
+		pidl "$e->{CASE}:";
+		if ($e->{TYPE} ne "EMPTY") {
+			EjsPullElementTop($e, $env);
+		}
+		pidl "break;\n";
+	}
+	if (! $have_default) {
+		pidl "default:";
+		pidl "\treturn ejs_panic(ejs, \"Bad switch value\");";
+	}
+	pidl "}\nreturn NT_STATUS_OK;\n}\n";
 }
 
 ###########################
@@ -368,6 +384,7 @@
 	my $have_default = 0;
 	my $env = GenerateStructEnv($d);
 	pidl "\nstatic NTSTATUS ejs_push_$name(struct ejs_rpc *ejs, struct MprVar *v, const char *name, const union $name *r)\n{\n";
+	pidl "\tNDR_CHECK(ejs_push_struct_start(ejs, &v, name));\n";
 	pidl "switch (ejs->switch_var) {\n";
 	foreach my $e (@{$d->{ELEMENTS}}) {
 		if ($e->{CASE} eq "default") {

Modified: branches/SAMBA_4_0/source/scripting/ejs/ejsrpc.c
===================================================================
--- branches/SAMBA_4_0/source/scripting/ejs/ejsrpc.c	2005-07-08 03:33:32 UTC (rev 8215)
+++ branches/SAMBA_4_0/source/scripting/ejs/ejsrpc.c	2005-07-08 04:07:26 UTC (rev 8216)
@@ -100,6 +100,7 @@
 	if (p == NULL) {
 		v2 = mprSetProperty(v, name, &val);
 		if (v2 == NULL) {
+			DEBUG(1,("mprSetVar unable to set '%s'\n", name));
 			return NT_STATUS_INVALID_PARAMETER_MIX;
 		}
 		return NT_STATUS_OK;
@@ -126,6 +127,7 @@
 {
 	*v = mprGetProperty(*v, name, NULL);
 	if (*v == NULL) {
+		DEBUG(1,("ejs_pull_struct_start: missing structure '%s'\n", name));
 		return NT_STATUS_INVALID_PARAMETER;
 	}
 	return NT_STATUS_OK;
@@ -140,6 +142,7 @@
 	struct MprVar s = mprCreateObjVar(name, MPR_DEFAULT_HASH_SIZE);
 	*v = mprSetProperty(*v, name, &s);
 	if (*v == NULL) {
+		DEBUG(1,("ejs_push_struct_start: unable to set structure '%s'\n", name));
 		return NT_STATUS_INVALID_PARAMETER;
 	}
 	return NT_STATUS_OK;
@@ -154,6 +157,7 @@
 	struct MprVar *var;
 	var = mprGetVar(v, name);
 	if (var == NULL) {
+		DEBUG(1,("ejs_pull_uint8: unable to find '%s'\n", name));
 		return NT_STATUS_INVALID_PARAMETER_MIX;
 	}
 	*r = mprVarToInteger(var);
@@ -176,6 +180,7 @@
 	struct MprVar *var;
 	var = mprGetVar(v, name);
 	if (var == NULL) {
+		DEBUG(1,("ejs_pull_uint16: unable to find '%s'\n", name));
 		return NT_STATUS_INVALID_PARAMETER_MIX;
 	}
 	*r = mprVarToInteger(var);
@@ -198,6 +203,7 @@
 	struct MprVar *var;
 	var = mprGetVar(v, name);
 	if (var == NULL) {
+		DEBUG(1,("ejs_push_uint32: unable to find '%s'\n", name));
 		return NT_STATUS_INVALID_PARAMETER_MIX;
 	}
 	*r = mprVarToInteger(var);
@@ -216,6 +222,7 @@
 	struct MprVar *var;
 	var = mprGetVar(v, name);
 	if (var == NULL) {
+		DEBUG(1,("ejs_pull_hyper: unable to find '%s'\n", name));
 		return NT_STATUS_INVALID_PARAMETER_MIX;
 	}
 	*r = mprVarToInteger(var);
@@ -239,6 +246,7 @@
 	struct MprVar *var;
 	var = mprGetVar(v, name);
 	if (var == NULL) {
+		DEBUG(1,("ejs_pull_enum: unable to find '%s'\n", name));
 		return NT_STATUS_INVALID_PARAMETER_MIX;
 	}
 	*r = mprVarToInteger(var);
@@ -262,6 +270,7 @@
 	struct MprVar *var;
 	var = mprGetVar(v, name);
 	if (var == NULL) {
+		DEBUG(1,("ejs_pull_string: unable to find '%s'\n", name));
 		return NT_STATUS_INVALID_PARAMETER_MIX;
 	}
 	*s = mprToString(var);



More information about the samba-cvs mailing list