1
0
mirror of https://github.com/samba-team/samba.git synced 2025-03-12 20:58:37 +03:00

r8262: - simplify the dependency handling for ejs modules

- added config.mk entries for some more pipes

- simplify the handling of ejs variables in the pidl code
(This used to be commit 595304708db69229495c5739b5cacab732afd55f)
This commit is contained in:
Andrew Tridgell 2005-07-09 12:53:50 +00:00 committed by Gerald (Jerry) Carter
parent 5ed139f096
commit b4e53e6705
4 changed files with 119 additions and 106 deletions

View File

@ -580,3 +580,59 @@ INIT_FUNCTION = ejs_init_lsarpc
OBJ_FILES = librpc/gen_ndr/ndr_lsa_ejs.o
REQUIRED_SUBSYSTEMS = RPC NDR_LSA
NOPROTO = YES
[SUBSYSTEM::RPC_EJS_DFS]
INIT_FUNCTION = ejs_init_dfs
OBJ_FILES = librpc/gen_ndr/ndr_dfs_ejs.o
REQUIRED_SUBSYSTEMS = RPC NDR_DFS
NOPROTO = YES
[SUBSYSTEM::RPC_EJS_DRSUAPI]
INIT_FUNCTION = ejs_init_drsuapi
OBJ_FILES = librpc/gen_ndr/ndr_drsuapi_ejs.o
REQUIRED_SUBSYSTEMS = RPC NDR_DRSUAPI
NOPROTO = YES
[SUBSYSTEM::RPC_EJS_SPOOLSS]
INIT_FUNCTION = ejs_init_spoolss
OBJ_FILES = librpc/gen_ndr/ndr_spoolss_ejs.o
REQUIRED_SUBSYSTEMS = RPC NDR_SPOOLSS
NOPROTO = YES
[SUBSYSTEM::RPC_EJS_WKSSVC]
INIT_FUNCTION = ejs_init_wkssvc
OBJ_FILES = librpc/gen_ndr/ndr_wkssvc_ejs.o
REQUIRED_SUBSYSTEMS = RPC NDR_WKSSVC
NOPROTO = YES
[SUBSYSTEM::RPC_EJS_SRVSVC]
INIT_FUNCTION = ejs_init_srvsvc
OBJ_FILES = librpc/gen_ndr/ndr_srvsvc_ejs.o
REQUIRED_SUBSYSTEMS = RPC NDR_SRVSVC
NOPROTO = YES
[SUBSYSTEM::RPC_EJS_EVENTLOG]
INIT_FUNCTION = ejs_init_eventlog
OBJ_FILES = librpc/gen_ndr/ndr_eventlog_ejs.o
REQUIRED_SUBSYSTEMS = RPC NDR_EVENTLOG
NOPROTO = YES
[SUBSYSTEM::RPC_EJS_WINREG]
INIT_FUNCTION = ejs_init_winreg
OBJ_FILES = librpc/gen_ndr/ndr_winreg_ejs.o
REQUIRED_SUBSYSTEMS = RPC NDR_WINREG
NOPROTO = YES
[SUBSYSTEM::RPC_EJS_NETLOGON]
INIT_FUNCTION = ejs_init_netlogon
OBJ_FILES = librpc/gen_ndr/ndr_netlogon_ejs.o
REQUIRED_SUBSYSTEMS = RPC NDR_NETLOGON
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
# End SUBSYSTEM RPC_EJS
################################################

View File

@ -3,7 +3,7 @@
[SUBSYSTEM::EJSRPC]
OBJ_FILES = \
scripting/ejs/ejsrpc.o
REQUIRED_SUBSYSTEMS = RPC_EJS_ECHO RPC_EJS_SAMR RPC_EJS_MISC RPC_EJS_SECURITY RPC_EJS_LSA
REQUIRED_SUBSYSTEMS = RPC_EJS
NOPROTO = YES
# End SUBSYSTEM EJSRPC
#######################

View File

@ -67,26 +67,26 @@ NTSTATUS ejs_panic(struct ejs_rpc *ejs, const char *why)
/*
find a mpr component, allowing for sub objects, using the '.' convention
*/
static struct MprVar *mprGetVar(struct MprVar *v, const char *name)
static NTSTATUS mprGetVar(struct MprVar **v, const char *name)
{
const char *p = strchr(name, '.');
char *objname;
struct MprVar *v2;
NTSTATUS status;
if (p == NULL) {
return mprGetProperty(v, name, NULL);
*v = mprGetProperty(*v, name, NULL);
if (*v == NULL) {
DEBUG(1,("mprGetVar unable to find '%s'\n", name));
return NT_STATUS_INVALID_PARAMETER;
}
return NT_STATUS_OK;
}
objname = talloc_strndup(mprMemCtx(), name, p-name);
if (objname == NULL) {
return NULL;
}
v2 = mprGetProperty(v, objname, NULL);
if (v2 == NULL) {
talloc_free(objname);
return NULL;
}
v2 = mprGetVar(v2, p+1);
NT_STATUS_HAVE_NO_MEMORY(objname);
*v = mprGetProperty(*v, objname, NULL);
NT_STATUS_HAVE_NO_MEMORY(*v);
status = mprGetVar(v, p+1);
talloc_free(objname);
return v2;
return status;
}
@ -127,12 +127,7 @@ static NTSTATUS mprSetVar(struct MprVar *v, const char *name, struct MprVar val)
*/
NTSTATUS ejs_pull_struct_start(struct ejs_rpc *ejs, struct MprVar **v, const char *name)
{
*v = mprGetVar(*v, name);
if (*v == NULL) {
DEBUG(1,("ejs_pull_struct_start: missing structure '%s'\n", name));
return NT_STATUS_INVALID_PARAMETER;
}
return NT_STATUS_OK;
return mprGetVar(v, name);
}
@ -142,12 +137,7 @@ NTSTATUS ejs_pull_struct_start(struct ejs_rpc *ejs, struct MprVar **v, const cha
NTSTATUS ejs_push_struct_start(struct ejs_rpc *ejs, struct MprVar **v, const char *name)
{
NDR_CHECK(mprSetVar(*v, name, mprCreateObjVar(name, MPR_DEFAULT_HASH_SIZE)));
*v = mprGetVar(*v, name);
if (*v == NULL) {
DEBUG(1,("ejs_push_struct_start: missing structure '%s'\n", name));
return NT_STATUS_INVALID_PARAMETER;
}
return NT_STATUS_OK;
return mprGetVar(v, name);
}
/*
@ -156,13 +146,8 @@ NTSTATUS ejs_push_struct_start(struct ejs_rpc *ejs, struct MprVar **v, const cha
NTSTATUS ejs_pull_uint8(struct ejs_rpc *ejs,
struct MprVar *v, const char *name, uint8_t *r)
{
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);
NDR_CHECK(mprGetVar(&v, name));
*r = mprVarToInteger(v);
return NT_STATUS_OK;
}
@ -179,13 +164,8 @@ NTSTATUS ejs_push_uint8(struct ejs_rpc *ejs,
NTSTATUS ejs_pull_uint16(struct ejs_rpc *ejs,
struct MprVar *v, const char *name, uint16_t *r)
{
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);
NDR_CHECK(mprGetVar(&v, name));
*r = mprVarToInteger(v);
return NT_STATUS_OK;
}
@ -202,13 +182,8 @@ NTSTATUS ejs_push_uint16(struct ejs_rpc *ejs,
NTSTATUS ejs_pull_uint32(struct ejs_rpc *ejs,
struct MprVar *v, const char *name, uint32_t *r)
{
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);
NDR_CHECK(mprGetVar(&v, name));
*r = mprVarToInteger(v);
return NT_STATUS_OK;
}
@ -218,16 +193,28 @@ NTSTATUS ejs_push_uint32(struct ejs_rpc *ejs,
return mprSetVar(v, name, mprCreateIntegerVar(*r));
}
/*
pull a int32 from a mpr variable to a C element
*/
NTSTATUS ejs_pull_int32(struct ejs_rpc *ejs,
struct MprVar *v, const char *name, int32_t *r)
{
NDR_CHECK(mprGetVar(&v, name));
*r = mprVarToInteger(v);
return NT_STATUS_OK;
}
NTSTATUS ejs_push_int32(struct ejs_rpc *ejs,
struct MprVar *v, const char *name, const int32_t *r)
{
return mprSetVar(v, name, mprCreateIntegerVar(*r));
}
NTSTATUS ejs_pull_hyper(struct ejs_rpc *ejs,
struct MprVar *v, const char *name, uint64_t *r)
{
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);
NDR_CHECK(mprGetVar(&v, name));
*r = mprVarToInteger(v);
return NT_STATUS_OK;
}
@ -240,13 +227,8 @@ NTSTATUS ejs_push_hyper(struct ejs_rpc *ejs,
NTSTATUS ejs_pull_dlong(struct ejs_rpc *ejs,
struct MprVar *v, const char *name, uint64_t *r)
{
struct MprVar *var;
var = mprGetVar(v, name);
if (var == NULL) {
DEBUG(1,("ejs_pull_dlong: unable to find '%s'\n", name));
return NT_STATUS_INVALID_PARAMETER_MIX;
}
*r = mprVarToInteger(var);
NDR_CHECK(mprGetVar(&v, name));
*r = mprVarToInteger(v);
return NT_STATUS_OK;
}
@ -259,13 +241,8 @@ NTSTATUS ejs_push_dlong(struct ejs_rpc *ejs,
NTSTATUS ejs_pull_udlong(struct ejs_rpc *ejs,
struct MprVar *v, const char *name, uint64_t *r)
{
struct MprVar *var;
var = mprGetVar(v, name);
if (var == NULL) {
DEBUG(1,("ejs_pull_udlong: unable to find '%s'\n", name));
return NT_STATUS_INVALID_PARAMETER_MIX;
}
*r = mprVarToInteger(var);
NDR_CHECK(mprGetVar(&v, name));
*r = mprVarToInteger(v);
return NT_STATUS_OK;
}
@ -278,13 +255,8 @@ NTSTATUS ejs_push_udlong(struct ejs_rpc *ejs,
NTSTATUS ejs_pull_NTTIME(struct ejs_rpc *ejs,
struct MprVar *v, const char *name, uint64_t *r)
{
struct MprVar *var;
var = mprGetVar(v, name);
if (var == NULL) {
DEBUG(1,("ejs_pull_NTTIME: unable to find '%s'\n", name));
return NT_STATUS_INVALID_PARAMETER_MIX;
}
*r = mprVarToInteger(var);
NDR_CHECK(mprGetVar(&v, name));
*r = mprVarToInteger(v);
return NT_STATUS_OK;
}
@ -302,13 +274,8 @@ NTSTATUS ejs_push_NTTIME(struct ejs_rpc *ejs,
NTSTATUS ejs_pull_enum(struct ejs_rpc *ejs,
struct MprVar *v, const char *name, unsigned *r)
{
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);
NDR_CHECK(mprGetVar(&v, name));
*r = mprVarToInteger(v);
return NT_STATUS_OK;
}
@ -326,13 +293,8 @@ NTSTATUS ejs_push_enum(struct ejs_rpc *ejs,
NTSTATUS ejs_pull_string(struct ejs_rpc *ejs,
struct MprVar *v, const char *name, const char **s)
{
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);
NDR_CHECK(mprGetVar(&v, name));
*s = mprToString(v);
return NT_STATUS_OK;
}
@ -367,14 +329,9 @@ void ejs_set_constant_string(int eid, const char *name, const char *value)
NTSTATUS ejs_pull_dom_sid(struct ejs_rpc *ejs,
struct MprVar *v, const char *name, struct dom_sid *r)
{
struct MprVar *var;
struct dom_sid *sid;
var = mprGetVar(v, name);
if (var == NULL) {
DEBUG(1,("ejs_pull_dom_sid: unable to find '%s'\n", name));
return NT_STATUS_INVALID_PARAMETER_MIX;
}
sid = dom_sid_parse_talloc(ejs, mprToString(var));
NDR_CHECK(mprGetVar(&v, name));
sid = dom_sid_parse_talloc(ejs, mprToString(v));
NT_STATUS_HAVE_NO_MEMORY(sid);
*r = *sid;
return NT_STATUS_OK;
@ -391,13 +348,8 @@ NTSTATUS ejs_push_dom_sid(struct ejs_rpc *ejs,
NTSTATUS ejs_pull_GUID(struct ejs_rpc *ejs,
struct MprVar *v, const char *name, struct GUID *r)
{
struct MprVar *var;
var = mprGetVar(v, name);
if (var == NULL) {
DEBUG(1,("ejs_pull_GUID: unable to find '%s'\n", name));
return NT_STATUS_INVALID_PARAMETER_MIX;
}
return GUID_from_string(mprToString(var), r);
NDR_CHECK(mprGetVar(&v, name));
return GUID_from_string(mprToString(v), r);
}
NTSTATUS ejs_push_GUID(struct ejs_rpc *ejs,
@ -415,9 +367,9 @@ 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)
{
v = mprGetVar(v, name);
if (v == NULL) {
return True;
NTSTATUS status = mprGetVar(&v, name);
if (!NT_STATUS_IS_OK(status)) {
return False;
}
if (v->type == MPR_TYPE_PTR && v->ptr == NULL) {
return True;
@ -442,3 +394,4 @@ NTSTATUS ejs_push_lsa_String(struct ejs_rpc *ejs,
{
return ejs_push_string(ejs, v, name, r->string);
}

View File

@ -61,6 +61,10 @@ NTSTATUS ejs_push_uint16(struct ejs_rpc *ejs,
struct MprVar *v, const char *name, const uint16_t *r);
NTSTATUS ejs_pull_uint32(struct ejs_rpc *ejs,
struct MprVar *v, const char *name, uint32_t *r);
NTSTATUS ejs_push_int32(struct ejs_rpc *ejs,
struct MprVar *v, const char *name, const int32_t *r);
NTSTATUS ejs_pull_int32(struct ejs_rpc *ejs,
struct MprVar *v, const char *name, int32_t *r);
NTSTATUS ejs_push_uint32(struct ejs_rpc *ejs,
struct MprVar *v, const char *name, const uint32_t *r);
NTSTATUS ejs_pull_hyper(struct ejs_rpc *ejs,