r9146: - enable winreg pipe from ejs
authorAndrew Tridgell <tridge@samba.org>
Fri, 5 Aug 2005 23:01:57 +0000 (23:01 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:31:23 +0000 (13:31 -0500)
- map the result code from rpc calls into the ejs objects

- treat winreg_String like lsa_String, hiding the length elements

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

index c528e13a522a25e1fa3d08b1a996dc3e580b700d..415ca584b5967e44a868b9d3d027264c9e861813 100644 (file)
@@ -628,6 +628,11 @@ sub EjsPushFunction($)
                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";
index 665c0920d74586420c91874c73bb3ffdb32af196..356fb38bf207e37d0f17853983080df61085034a 100644 (file)
@@ -623,6 +623,12 @@ OBJ_FILES = librpc/gen_ndr/ndr_winreg_ejs.o
 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 @@ NOPROTO = YES
 # 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
 ################################################
index 1f31d17f8c6c7b86d0dcc74258d77f025e85b0c4..a6caf22b9b8ad0a5cc8240405116752b78c0e034 100644 (file)
@@ -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;
index f3abc3c34a8aae9823429eee032da5dd3805b378..f107c84b73a2021ff82b1f7f29a5b9c7c12c3b35 100644 (file)
@@ -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,6 +183,18 @@ NTSTATUS ejs_push_NTTIME(struct ejs_rpc *ejs,
        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
@@ -292,6 +305,24 @@ NTSTATUS ejs_push_lsa_String(struct ejs_rpc *ejs,
        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)
 {
index 8bd735c7395cb068142f396c08c3a714e732ee71..99da0d35ea0029b9df17bbb81b2c0fd1164ffb53 100644 (file)
@@ -95,6 +95,10 @@ NTSTATUS ejs_push_dom_sid(struct ejs_rpc *ejs,
                          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,