r14603: Fix building of ejs modules as shared libs
authorJelmer Vernooij <jelmer@samba.org>
Tue, 21 Mar 2006 07:08:08 +0000 (07:08 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:58:59 +0000 (13:58 -0500)
Fix calling of ejs_exception() without requiring --export-dynamic
(This used to be commit 8575e9a4903450aae1f29f55aae516085a9528bb)

source4/build/smb_build/config_mk.pm
source4/lib/ldb/config.mk
source4/librpc/config.mk
source4/scripting/ejs/config.mk
source4/scripting/ejs/smbcalls.c
source4/scripting/ejs/smbscript.c
source4/web_server/http.c

index 41e90c33b7a3517da82e7641302a088dc3af3d07..a3cc42b1e72c5ebcf6c45d41a10653922f56e1a7 100644 (file)
@@ -44,6 +44,8 @@ my $section_types = {
 
                "REQUIRED_SUBSYSTEMS"   => "list",
 
+               "ALIASES" => "list",
+
                "ENABLE"                => "bool",
 
                "OUTPUT_TYPE"           => "string",
index 2f36042ab9be28e7677689b8eb420385ca18885c..958cd434f12283c3c70a838cd5ba32e5b64d813e 100644 (file)
@@ -9,8 +9,8 @@ OBJ_FILES = \
 ################################################
 
 ################################################
-# Start MODULE ldb_sort
-[MODULE::ldb_sort]
+# Start MODULE ldb_server_sort
+[MODULE::ldb_server_sort]
 INIT_FUNCTION = ldb_sort_init
 SUBSYSTEM = ldb
 OBJ_FILES = \
index 0f9f808aa8277f1c47f299864e6b540d68b56738..93ea86f8e3e7da2cb487a0e342d00c79814d0c45 100644 (file)
@@ -639,7 +639,7 @@ REQUIRED_SUBSYSTEMS = dcerpc NDR_SECURITY EJSRPC
 INIT_FUNCTION = ejs_init_lsarpc
 OBJ_FILES = gen_ndr/ndr_lsa_ejs.o
 SUBSYSTEM = smbcalls
-REQUIRED_SUBSYSTEMS = dcerpc NDR_LSA EJSRPC RPC_EJS_SECURITY
+REQUIRED_SUBSYSTEMS = dcerpc NDR_LSA EJSRPC RPC_EJS_SECURITY RPC_EJS_MISC
 
 [MODULE::RPC_EJS_DFS]
 INIT_FUNCTION = ejs_init_netdfs
@@ -670,7 +670,7 @@ REQUIRED_SUBSYSTEMS = dcerpc NDR_WKSSVC EJSRPC RPC_EJS_SRVSVC RPC_EJS_MISC
 INIT_FUNCTION = ejs_init_srvsvc
 OBJ_FILES = gen_ndr/ndr_srvsvc_ejs.o
 SUBSYSTEM = smbcalls
-REQUIRED_SUBSYSTEMS = dcerpc NDR_SRVSVC EJSRPC RPC_EJS_MISC
+REQUIRED_SUBSYSTEMS = dcerpc NDR_SRVSVC EJSRPC RPC_EJS_MISC RPC_EJS_SVCCTL
 
 [MODULE::RPC_EJS_EVENTLOG]
 INIT_FUNCTION = ejs_init_eventlog
@@ -682,7 +682,8 @@ REQUIRED_SUBSYSTEMS = dcerpc NDR_EVENTLOG EJSRPC RPC_EJS_MISC
 INIT_FUNCTION = ejs_init_winreg
 OBJ_FILES = gen_ndr/ndr_winreg_ejs.o
 SUBSYSTEM = smbcalls
-REQUIRED_SUBSYSTEMS = dcerpc NDR_WINREG EJSRPC RPC_EJS_INITSHUTDOWN
+REQUIRED_SUBSYSTEMS = dcerpc NDR_WINREG EJSRPC RPC_EJS_INITSHUTDOWN \
+                                         RPC_EJS_MISC RPC_EJS_SECURITY
 
 [MODULE::RPC_EJS_INITSHUTDOWN]
 INIT_FUNCTION = ejs_init_initshutdown
index ac24b583598f297755796702d89b824e7e96ae18..c38caeabf1f7f6350e75564a766b7bf89f545d9a 100644 (file)
@@ -60,7 +60,9 @@ INIT_FUNCTION = smb_setup_ejs_system
 
 #######################
 # Start LIBRARY smbcalls
-[SUBSYSTEM::smbcalls]
+[LIBRARY::smbcalls]
+SO_VERSION = 0
+VERSION = 0.0.1
 PRIVATE_PROTO_HEADER = proto.h
 OBJ_FILES = \
                smbcalls.o \
index e010f3fdb1470f86a59539a48d1e0778fca94196..1bfbd3b47a905faaf0ecf0aaa27b4a7940ab9e2b 100644 (file)
@@ -121,15 +121,23 @@ static int ejs_version(MprVarHandle eid, int argc, struct MprVar **argv)
        return 0;
 }
 
+static void (*ejs_exception_handler) (const char *) = NULL;
+
+_PUBLIC_ void ejs_exception(const char *reason)
+{
+       ejs_exception_handler(reason);          
+}
 
 /*
   setup C functions that be called from ejs
 */
-void smb_setup_ejs_functions(void)
+void smb_setup_ejs_functions(void (*exception_handler)(const char *))
 {
        init_module_fn static_init[] = STATIC_smbcalls_MODULES;
        init_module_fn *shared_init;
 
+       ejs_exception_handler = exception_handler;
+
        smb_setup_ejs_cli();
        smb_setup_ejs_options();
        smb_setup_ejs_credentials();
index 86947bdf8e76389c7bfc5a497285bcc9e0bafd2b..d602a7733bc5f07386c0438fef8e9beeba038015 100644 (file)
@@ -30,7 +30,7 @@
 
 static EjsId eid;
 
-_PUBLIC_ void ejs_exception(const char *reason)
+static void smbscript_ejs_exception(const char *reason)
 {
        Ejs *ep = ejsPtr(eid);
        ejsSetErrorMsg(eid, "%s", reason);
@@ -72,7 +72,7 @@ int main(int argc, const char **argv)
                exit(127);
        }
 
-       smb_setup_ejs_functions();
+       smb_setup_ejs_functions(smbscript_ejs_exception);
 
        if ((eid = ejsOpenEngine(handle, 0)) == (EjsId)-1) {
                fprintf(stderr, "smbscript: ejsOpenEngine(): unable to "
index 3df9fcb25a2f18ceeb336b77533a58bc79290035..93d81ef1d0bc9fa41239573e3dfc1344c9ca29a1 100644 (file)
@@ -467,7 +467,7 @@ static void http_setup_arrays(struct esp_state *esp)
 static jmp_buf ejs_exception_buf;
 static const char *exception_reason;
 
-_PUBLIC_ void ejs_exception(const char *reason)
+static void web_server_ejs_exception(const char *reason)
 {
        Ejs *ep = ejsPtr(0);
        if (ep) {
@@ -480,7 +480,7 @@ _PUBLIC_ void ejs_exception(const char *reason)
        longjmp(ejs_exception_buf, -1);
 }
 #else
-void ejs_exception(const char *reason)
+static void web_server_ejs_exception(const char *reason)
 {
        DEBUG(0,("%s", reason));
        smb_panic(reason);
@@ -804,7 +804,7 @@ void http_process_input(struct websrv_context *web)
                           edata->application_data, MPR_DEEP_COPY);
        }
 
-       smb_setup_ejs_functions();
+       smb_setup_ejs_functions(web_server_ejs_exception);
 
        if (web->input.url == NULL) {
                http_error(web, 400, "You must specify a GET or POST request");