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