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,
