svn commit: samba r9146 - in branches/SAMBA_4_0/source: build/pidl/Parse/Pidl/Samba librpc librpc/idl scripting/ejs

tridge at samba.org tridge at samba.org
Fri Aug 5 23:01:57 GMT 2005


Author: tridge
Date: 2005-08-05 23:01:57 +0000 (Fri, 05 Aug 2005)
New Revision: 9146

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

Log:
- enable winreg pipe from ejs

- map the result code from rpc calls into the ejs objects

- treat winreg_String like lsa_String, hiding the length elements



Modified:
   branches/SAMBA_4_0/source/build/pidl/Parse/Pidl/Samba/EJS.pm
   branches/SAMBA_4_0/source/librpc/config.mk
   branches/SAMBA_4_0/source/librpc/idl/winreg.idl
   branches/SAMBA_4_0/source/scripting/ejs/ejsrpc.c
   branches/SAMBA_4_0/source/scripting/ejs/ejsrpc.h


Changeset:
Modified: branches/SAMBA_4_0/source/build/pidl/Parse/Pidl/Samba/EJS.pm
===================================================================
--- branches/SAMBA_4_0/source/build/pidl/Parse/Pidl/Samba/EJS.pm	2005-08-05 22:57:47 UTC (rev 9145)
+++ branches/SAMBA_4_0/source/build/pidl/Parse/Pidl/Samba/EJS.pm	2005-08-05 23:01:57 UTC (rev 9146)
@@ -628,6 +628,11 @@
 		EjsPushElementTop($e, $env);
 	}
 
+	if ($d->{RETURN_TYPE}) {
+		my $t = $d->{RETURN_TYPE};
+		pidl "NDR_CHECK(ejs_push_$t(ejs, v, \"result\", &r->out.result));";
+	}
+
 	pidl "return NT_STATUS_OK;";
 	deindent;
 	pidl "}\n";

Modified: branches/SAMBA_4_0/source/librpc/config.mk
===================================================================
--- branches/SAMBA_4_0/source/librpc/config.mk	2005-08-05 22:57:47 UTC (rev 9145)
+++ branches/SAMBA_4_0/source/librpc/config.mk	2005-08-05 23:01:57 UTC (rev 9146)
@@ -623,6 +623,12 @@
 REQUIRED_SUBSYSTEMS = RPC NDR_WINREG
 NOPROTO = YES
 
+[SUBSYSTEM::RPC_EJS_INITSHUTDOWN]
+INIT_FUNCTION = ejs_init_initshutdown
+OBJ_FILES = librpc/gen_ndr/ndr_initshutdown_ejs.o
+REQUIRED_SUBSYSTEMS = RPC NDR_INITSHUTDOWN
+NOPROTO = YES
+
 [SUBSYSTEM::RPC_EJS_NETLOGON]
 INIT_FUNCTION = ejs_init_netlogon
 OBJ_FILES = librpc/gen_ndr/ndr_netlogon_ejs.o
@@ -645,6 +651,7 @@
 # Start SUBSYSTEM RPC_EJS
 [SUBSYSTEM::RPC_EJS]
 REQUIRED_SUBSYSTEMS = RPC_EJS_ECHO RPC_EJS_MISC RPC_EJS_SAMR RPC_EJS_SECURITY \
-	RPC_EJS_LSA RPC_EJS_SRVSVC RPC_EJS_SVCCTL RPC_EJS_IRPC
+	RPC_EJS_LSA RPC_EJS_SRVSVC RPC_EJS_SVCCTL RPC_EJS_IRPC RPC_EJS_WINREG \
+	RPC_EJS_INITSHUTDOWN
 # End SUBSYSTEM RPC_EJS
 ################################################

Modified: branches/SAMBA_4_0/source/librpc/idl/winreg.idl
===================================================================
--- branches/SAMBA_4_0/source/librpc/idl/winreg.idl	2005-08-05 22:57:47 UTC (rev 9145)
+++ branches/SAMBA_4_0/source/librpc/idl/winreg.idl	2005-08-05 23:01:57 UTC (rev 9146)
@@ -14,7 +14,7 @@
   depends(lsa,initshutdown)
 ] interface winreg
 {
-	typedef struct {
+	typedef [public,noejs] struct {
 		[value(strlen_m_term(name)*2)] uint16 name_len;
 		[value(strlen_m_term(name)*2)] uint16 name_size;
 		unistr *name;

Modified: branches/SAMBA_4_0/source/scripting/ejs/ejsrpc.c
===================================================================
--- branches/SAMBA_4_0/source/scripting/ejs/ejsrpc.c	2005-08-05 22:57:47 UTC (rev 9145)
+++ branches/SAMBA_4_0/source/scripting/ejs/ejsrpc.c	2005-08-05 23:01:57 UTC (rev 9146)
@@ -25,6 +25,7 @@
 #include "scripting/ejs/smbcalls.h"
 #include "librpc/gen_ndr/ndr_security.h"
 #include "librpc/gen_ndr/ndr_lsa.h"
+#include "librpc/gen_ndr/ndr_winreg.h"
 #include "scripting/ejs/ejsrpc.h"
 
 /*
@@ -182,7 +183,19 @@
 	return ejs_push_hyper(ejs, v, name, r);
 }
 
+NTSTATUS ejs_push_WERROR(struct ejs_rpc *ejs, 
+			struct MprVar *v, const char *name, const WERROR *r)
+{
+	return ejs_push_string(ejs, v, name, win_errstr(*r));
+}
 
+NTSTATUS ejs_push_NTSTATUS(struct ejs_rpc *ejs, 
+			   struct MprVar *v, const char *name, const NTSTATUS *r)
+{
+	return ejs_push_string(ejs, v, name, nt_errstr(*r));
+}
+
+
 /*
   pull a enum from a mpr variable to a C element
   a enum is just treating as an unsigned integer at this level
@@ -292,6 +305,24 @@
 	return ejs_push_string(ejs, v, name, r->string);
 }
 
+/*
+  pull a winreg_String
+*/
+NTSTATUS ejs_pull_winreg_String(struct ejs_rpc *ejs, 
+			     struct MprVar *v, const char *name, struct winreg_String *r)
+{
+	return ejs_pull_string(ejs, v, name, &r->name);
+}
+
+/*
+  push a winreg_String
+*/
+NTSTATUS ejs_push_winreg_String(struct ejs_rpc *ejs, 
+			     struct MprVar *v, const char *name, const struct winreg_String *r)
+{
+	return ejs_push_string(ejs, v, name, r->name);
+}
+
 NTSTATUS ejs_pull_DATA_BLOB(struct ejs_rpc *ejs, 
 			    struct MprVar *v, const char *name, DATA_BLOB *r)
 {

Modified: branches/SAMBA_4_0/source/scripting/ejs/ejsrpc.h
===================================================================
--- branches/SAMBA_4_0/source/scripting/ejs/ejsrpc.h	2005-08-05 22:57:47 UTC (rev 9145)
+++ branches/SAMBA_4_0/source/scripting/ejs/ejsrpc.h	2005-08-05 23:01:57 UTC (rev 9146)
@@ -95,6 +95,10 @@
 			  struct MprVar *v, const char *name, const struct dom_sid *r);
 NTSTATUS ejs_push_null(struct ejs_rpc *ejs, struct MprVar *v, const char *name);
 BOOL ejs_pull_null(struct ejs_rpc *ejs, struct MprVar *v, const char *name);
+NTSTATUS ejs_push_WERROR(struct ejs_rpc *ejs, 
+			 struct MprVar *v, const char *name, const WERROR *r);
+NTSTATUS ejs_push_NTSTATUS(struct ejs_rpc *ejs, 
+			 struct MprVar *v, const char *name, const NTSTATUS *r);
 NTSTATUS ejs_pull_DATA_BLOB(struct ejs_rpc *ejs, 
 			    struct MprVar *v, const char *name, DATA_BLOB *r);
 NTSTATUS ejs_push_DATA_BLOB(struct ejs_rpc *ejs, 



More information about the samba-cvs mailing list