trinidad_init_services 1.1.3 → 1.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +5 -0
- data/Gemfile +3 -0
- data/History.txt +6 -0
- data/README.md +95 -0
- data/Rakefile +9 -58
- data/bin/trinidad_init_service +3 -4
- data/init.d/trinidad.erb +33 -12
- data/jsvc-unix-src/CHANGES.txt +62 -0
- data/jsvc-unix-src/INSTALL.txt +81 -0
- data/jsvc-unix-src/Makedefs.in +32 -0
- data/jsvc-unix-src/Makefile.in +42 -0
- data/jsvc-unix-src/configure +4417 -0
- data/jsvc-unix-src/configure.in +141 -0
- data/jsvc-unix-src/man/README +20 -0
- data/jsvc-unix-src/man/fetch.sh +36 -0
- data/jsvc-unix-src/man/jsvc.1.xml +214 -0
- data/jsvc-unix-src/native/.indent.pro +7 -0
- data/jsvc-unix-src/native/Makefile.in +46 -0
- data/jsvc-unix-src/native/arguments.c +476 -0
- data/jsvc-unix-src/native/arguments.h +94 -0
- data/jsvc-unix-src/native/debug.c +87 -0
- data/jsvc-unix-src/native/debug.h +65 -0
- data/jsvc-unix-src/native/dso-dlfcn.c +62 -0
- data/jsvc-unix-src/native/dso-dyld.c +153 -0
- data/jsvc-unix-src/native/dso.h +38 -0
- data/jsvc-unix-src/native/help.c +106 -0
- data/jsvc-unix-src/native/help.h +24 -0
- data/jsvc-unix-src/native/home.c +265 -0
- data/jsvc-unix-src/native/home.h +47 -0
- data/jsvc-unix-src/native/java.c +608 -0
- data/jsvc-unix-src/native/java.h +35 -0
- data/jsvc-unix-src/native/jsvc-unix.c +1267 -0
- data/jsvc-unix-src/native/jsvc.h +55 -0
- data/jsvc-unix-src/native/location.c +151 -0
- data/jsvc-unix-src/native/location.h +29 -0
- data/jsvc-unix-src/native/locks.c +52 -0
- data/jsvc-unix-src/native/locks.h +40 -0
- data/jsvc-unix-src/native/replace.c +121 -0
- data/jsvc-unix-src/native/replace.h +39 -0
- data/jsvc-unix-src/native/signals.c +105 -0
- data/jsvc-unix-src/native/signals.h +34 -0
- data/jsvc-unix-src/native/version.h +63 -0
- data/jsvc-unix-src/support/apfunctions.m4 +110 -0
- data/jsvc-unix-src/support/apjava.m4 +94 -0
- data/jsvc-unix-src/support/apsupport.m4 +155 -0
- data/jsvc-unix-src/support/buildconf.sh +33 -0
- data/jsvc-unix-src/support/config.guess +1371 -0
- data/jsvc-unix-src/support/config.sub +1760 -0
- data/jsvc-unix-src/support/install.sh +128 -0
- data/jsvc-unix-src/support/mkdist.sh +104 -0
- data/lib/trinidad/daemon.rb +31 -0
- data/lib/trinidad_init_services.rb +2 -30
- data/lib/trinidad_init_services/configuration.rb +91 -14
- data/lib/trinidad_init_services/version.rb +5 -0
- data/spec/spec_helper.rb +5 -6
- data/spec/trinidad_daemon_spec.rb +0 -1
- data/spec/trinidad_init_services/configuration_spec.rb +34 -1
- data/trinidad_init_services.gemspec +14 -51
- metadata +146 -87
- data/README +0 -63
- data/trinidad-libs/jsvc_linux +0 -0
@@ -0,0 +1,94 @@
|
|
1
|
+
/* Licensed to the Apache Software Foundation (ASF) under one or more
|
2
|
+
* contributor license agreements. See the NOTICE file distributed with
|
3
|
+
* this work for additional information regarding copyright ownership.
|
4
|
+
* The ASF licenses this file to You under the Apache License, Version 2.0
|
5
|
+
* (the "License"); you may not use this file except in compliance with
|
6
|
+
* the License. You may obtain a copy of the License at
|
7
|
+
*
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
*
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
* See the License for the specific language governing permissions and
|
14
|
+
* limitations under the License.
|
15
|
+
*/
|
16
|
+
|
17
|
+
/* @version $Id: arguments.h 1196265 2011-11-01 20:43:52Z mturk $ */
|
18
|
+
#ifndef __JSVC_ARGUMENTS_H__
|
19
|
+
#define __JSVC_ARGUMENTS_H__
|
20
|
+
|
21
|
+
#ifdef __cplusplus
|
22
|
+
extern "C"
|
23
|
+
{
|
24
|
+
#endif
|
25
|
+
|
26
|
+
/**
|
27
|
+
* The structure holding all parsed command line options.
|
28
|
+
*/
|
29
|
+
typedef struct {
|
30
|
+
/** The name of the PID file. */
|
31
|
+
char *pidf;
|
32
|
+
/** The name of the user. */
|
33
|
+
char *user;
|
34
|
+
/** The name of the JVM to use. */
|
35
|
+
char *name;
|
36
|
+
/** The JDK or JRE installation path (JAVA_HOME). */
|
37
|
+
char *home;
|
38
|
+
/** Options used to invoke the JVM. */
|
39
|
+
char **opts;
|
40
|
+
/** Number of JVM options. */
|
41
|
+
int onum;
|
42
|
+
/** The name of the class to invoke. */
|
43
|
+
char *clas;
|
44
|
+
/** Command line arguments to the class. */
|
45
|
+
char **args;
|
46
|
+
/** Number of class command line arguments. */
|
47
|
+
int anum;
|
48
|
+
/** Wether to detach from parent process or not. */
|
49
|
+
bool dtch;
|
50
|
+
/** Wether to print the VM version number or not. */
|
51
|
+
bool vers;
|
52
|
+
/** Show the VM version and continue. */
|
53
|
+
bool vershow;
|
54
|
+
/** Wether to display the help page or not. */
|
55
|
+
bool help;
|
56
|
+
/** Only check environment without running the service. */
|
57
|
+
bool chck;
|
58
|
+
/** Stop running jsvc */
|
59
|
+
bool stop;
|
60
|
+
/** number of seconds to until service started */
|
61
|
+
int wait;
|
62
|
+
/** Install as a service (win32) */
|
63
|
+
bool install;
|
64
|
+
/** Remove when installed as a service (win32) */
|
65
|
+
bool remove;
|
66
|
+
/** Run as a service (win32) */
|
67
|
+
bool service;
|
68
|
+
/** Destination for stdout */
|
69
|
+
char *outfile;
|
70
|
+
/** Destination for stderr */
|
71
|
+
char *errfile;
|
72
|
+
/** Program name **/
|
73
|
+
char *procname;
|
74
|
+
/** Whether to redirect stdin to /dev/null or not. Defaults to true **/
|
75
|
+
bool redirectstdin;
|
76
|
+
/** What umask to use **/
|
77
|
+
int umask;
|
78
|
+
} arg_data;
|
79
|
+
|
80
|
+
/**
|
81
|
+
* Parse command line arguments.
|
82
|
+
*
|
83
|
+
* @param argc The number of command line arguments.
|
84
|
+
* @param argv Pointers to the different arguments.
|
85
|
+
* @return A pointer to a arg_data structure containing the parsed command
|
86
|
+
* line arguments, or NULL if an error was detected.
|
87
|
+
*/
|
88
|
+
arg_data *arguments(int argc, char *argv[]);
|
89
|
+
|
90
|
+
#ifdef __cplusplus
|
91
|
+
}
|
92
|
+
#endif
|
93
|
+
#endif /* ifndef __JSVC_ARGUMENTS_H__ */
|
94
|
+
|
@@ -0,0 +1,87 @@
|
|
1
|
+
/* Licensed to the Apache Software Foundation (ASF) under one or more
|
2
|
+
* contributor license agreements. See the NOTICE file distributed with
|
3
|
+
* this work for additional information regarding copyright ownership.
|
4
|
+
* The ASF licenses this file to You under the Apache License, Version 2.0
|
5
|
+
* (the "License"); you may not use this file except in compliance with
|
6
|
+
* the License. You may obtain a copy of the License at
|
7
|
+
*
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
*
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
* See the License for the specific language governing permissions and
|
14
|
+
* limitations under the License.
|
15
|
+
*/
|
16
|
+
|
17
|
+
/* @version $Id: debug.c 1198399 2011-11-06 16:20:44Z mturk $ */
|
18
|
+
#include "jsvc.h"
|
19
|
+
#include <sys/types.h>
|
20
|
+
#include <unistd.h>
|
21
|
+
#include <time.h>
|
22
|
+
|
23
|
+
/* Wether debug is enabled or not */
|
24
|
+
bool log_debug_flag = false;
|
25
|
+
|
26
|
+
/* Wether SYSLOG logging (for stderr) is enable or not. */
|
27
|
+
bool log_stderr_syslog_flag = false;
|
28
|
+
|
29
|
+
/* Wether SYSLOG logging (for stdout) is enable or not. */
|
30
|
+
bool log_stdout_syslog_flag = false;
|
31
|
+
|
32
|
+
/* The name of the jsvc binary. */
|
33
|
+
char *log_prog = "jsvc";
|
34
|
+
|
35
|
+
/* Dump a debug trace message to stderr */
|
36
|
+
void log_debug(const char *fmt, ...)
|
37
|
+
{
|
38
|
+
va_list ap;
|
39
|
+
time_t now;
|
40
|
+
struct tm *nowtm;
|
41
|
+
char buff[80];
|
42
|
+
|
43
|
+
if (log_debug_flag == false)
|
44
|
+
return;
|
45
|
+
if (fmt == NULL)
|
46
|
+
return;
|
47
|
+
|
48
|
+
now = time(NULL);
|
49
|
+
nowtm = localtime(&now);
|
50
|
+
strftime(buff, sizeof(buff), "%Y-%m-%d %T", nowtm);
|
51
|
+
va_start(ap, fmt);
|
52
|
+
if (log_stderr_syslog_flag)
|
53
|
+
fprintf(stderr, "%s %d %s debug: ", buff, getpid(), log_prog);
|
54
|
+
#if defined(DEBUG) || defined(_DEBUG)
|
55
|
+
else
|
56
|
+
fprintf(stderr, "[debug] %s %d ", buff, getpid());
|
57
|
+
#endif
|
58
|
+
vfprintf(stderr, fmt, ap);
|
59
|
+
fprintf(stderr, "\n");
|
60
|
+
fflush(stderr);
|
61
|
+
va_end(ap);
|
62
|
+
}
|
63
|
+
|
64
|
+
/* Dump an error message to stderr */
|
65
|
+
void log_error(const char *fmt, ...)
|
66
|
+
{
|
67
|
+
va_list ap;
|
68
|
+
time_t now;
|
69
|
+
struct tm *nowtm;
|
70
|
+
char buff[80];
|
71
|
+
|
72
|
+
if (fmt == NULL)
|
73
|
+
return;
|
74
|
+
|
75
|
+
va_start(ap, fmt);
|
76
|
+
if (log_stderr_syslog_flag) {
|
77
|
+
now = time(NULL);
|
78
|
+
nowtm = localtime(&now);
|
79
|
+
strftime(buff, sizeof(buff), "%Y-%m-%d %T", nowtm);
|
80
|
+
fprintf(stderr, "%s %d %s error: ", buff, getpid(), log_prog);
|
81
|
+
}
|
82
|
+
vfprintf(stderr, fmt, ap);
|
83
|
+
fprintf(stderr, "\n");
|
84
|
+
fflush(stderr);
|
85
|
+
va_end(ap);
|
86
|
+
}
|
87
|
+
|
@@ -0,0 +1,65 @@
|
|
1
|
+
/* Licensed to the Apache Software Foundation (ASF) under one or more
|
2
|
+
* contributor license agreements. See the NOTICE file distributed with
|
3
|
+
* this work for additional information regarding copyright ownership.
|
4
|
+
* The ASF licenses this file to You under the Apache License, Version 2.0
|
5
|
+
* (the "License"); you may not use this file except in compliance with
|
6
|
+
* the License. You may obtain a copy of the License at
|
7
|
+
*
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
*
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
* See the License for the specific language governing permissions and
|
14
|
+
* limitations under the License.
|
15
|
+
*/
|
16
|
+
|
17
|
+
/* @version $Id: debug.h 982549 2010-08-05 11:43:42Z mturk $ */
|
18
|
+
#ifndef __JSVC_DEBUG_H__
|
19
|
+
#define __JSVC_DEBUG_H__
|
20
|
+
|
21
|
+
#ifdef __cplusplus
|
22
|
+
extern "C" {
|
23
|
+
#endif
|
24
|
+
/**
|
25
|
+
* Wether debugging is enabled or not.
|
26
|
+
*/
|
27
|
+
extern bool log_debug_flag;
|
28
|
+
|
29
|
+
/* Wether SYSLOG logging (for stderr) is enable or not. */
|
30
|
+
extern bool log_stderr_syslog_flag;
|
31
|
+
|
32
|
+
/* Wether SYSLOG logging (for stdout) is enable or not. */
|
33
|
+
extern bool log_stdout_syslog_flag;
|
34
|
+
|
35
|
+
/**
|
36
|
+
* The name of the jsvc binary.
|
37
|
+
*/
|
38
|
+
extern char *log_prog;
|
39
|
+
|
40
|
+
/**
|
41
|
+
* Helper macro to avoid NPEs in printf.
|
42
|
+
*/
|
43
|
+
#define PRINT_NULL(x) ((x) == NULL ? "null" : (x))
|
44
|
+
|
45
|
+
/**
|
46
|
+
* Dump a debug message.
|
47
|
+
*
|
48
|
+
* @param fmt The printf style message format.
|
49
|
+
* @param ... Any optional parameter for the message.
|
50
|
+
*/
|
51
|
+
void log_debug(const char *fmt, ...);
|
52
|
+
|
53
|
+
/**
|
54
|
+
* Dump an error message.
|
55
|
+
*
|
56
|
+
* @param fmt The printf style message format.
|
57
|
+
* @param ... Any optional parameter for the message.
|
58
|
+
*/
|
59
|
+
void log_error(const char *fmt, ...);
|
60
|
+
|
61
|
+
#ifdef __cplusplus
|
62
|
+
}
|
63
|
+
#endif
|
64
|
+
#endif /* ifndef __JSVC_DEBUG_H__ */
|
65
|
+
|
@@ -0,0 +1,62 @@
|
|
1
|
+
/* Licensed to the Apache Software Foundation (ASF) under one or more
|
2
|
+
* contributor license agreements. See the NOTICE file distributed with
|
3
|
+
* this work for additional information regarding copyright ownership.
|
4
|
+
* The ASF licenses this file to You under the Apache License, Version 2.0
|
5
|
+
* (the "License"); you may not use this file except in compliance with
|
6
|
+
* the License. You may obtain a copy of the License at
|
7
|
+
*
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
*
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
* See the License for the specific language governing permissions and
|
14
|
+
* limitations under the License.
|
15
|
+
*/
|
16
|
+
|
17
|
+
/* @version $Id: dso-dlfcn.c 921765 2010-03-11 10:03:32Z mturk $ */
|
18
|
+
#include "jsvc.h"
|
19
|
+
|
20
|
+
#ifdef DSO_DLFCN
|
21
|
+
#include <dlfcn.h>
|
22
|
+
#ifdef OS_LINUX
|
23
|
+
bool ld_library_path_set = false;
|
24
|
+
#endif /* ifdef OS_LINUX */
|
25
|
+
|
26
|
+
/* Initialize all DSO stuff */
|
27
|
+
bool dso_init(void)
|
28
|
+
{
|
29
|
+
return true;
|
30
|
+
}
|
31
|
+
|
32
|
+
/* Attempt to link a library from a specified filename */
|
33
|
+
dso_handle dso_link(const char *path)
|
34
|
+
{
|
35
|
+
log_debug("Attemtping to load library %s", path);
|
36
|
+
|
37
|
+
return ((void *)dlopen(path, RTLD_GLOBAL | RTLD_NOW));
|
38
|
+
}
|
39
|
+
|
40
|
+
/* Attempt to unload a library */
|
41
|
+
bool dso_unlink(dso_handle libr)
|
42
|
+
{
|
43
|
+
if (dlclose(libr) == 0)
|
44
|
+
return true;
|
45
|
+
else
|
46
|
+
return false;
|
47
|
+
}
|
48
|
+
|
49
|
+
/* Get the address for a specifed symbol */
|
50
|
+
void *dso_symbol(dso_handle hdl, const char *nam)
|
51
|
+
{
|
52
|
+
return dlsym(hdl, nam);
|
53
|
+
}
|
54
|
+
|
55
|
+
/* Return the error message from dlopen */
|
56
|
+
char *dso_error(void)
|
57
|
+
{
|
58
|
+
return (dlerror());
|
59
|
+
}
|
60
|
+
|
61
|
+
#endif /* ifdef DSO_DLFCN */
|
62
|
+
|
@@ -0,0 +1,153 @@
|
|
1
|
+
/*
|
2
|
+
Licensed to the Apache Software Foundation (ASF) under one or more
|
3
|
+
contributor license agreements. See the NOTICE file distributed with
|
4
|
+
this work for additional information regarding copyright ownership.
|
5
|
+
The ASF licenses this file to You under the Apache License, Version 2.0
|
6
|
+
(the "License"); you may not use this file except in compliance with
|
7
|
+
the License. You may obtain a copy of the License at
|
8
|
+
|
9
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
|
11
|
+
Unless required by applicable law or agreed to in writing, software
|
12
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
See the License for the specific language governing permissions and
|
15
|
+
limitations under the License.
|
16
|
+
*/
|
17
|
+
/* @version $Id: dso-dyld.c 921765 2010-03-11 10:03:32Z mturk $ */
|
18
|
+
#include "jsvc.h"
|
19
|
+
|
20
|
+
#ifdef DSO_DYLD
|
21
|
+
|
22
|
+
#include <mach-o/dyld.h>
|
23
|
+
|
24
|
+
#ifdef __bool_true_false_are_defined
|
25
|
+
/* We define these differently than stdbool.h, so ignore the defs there */
|
26
|
+
#undef bool
|
27
|
+
#undef true
|
28
|
+
#undef false
|
29
|
+
#endif
|
30
|
+
|
31
|
+
|
32
|
+
/* Print an error message and abort all if a specified symbol wasn't found */
|
33
|
+
static void nosymbol(const char *s)
|
34
|
+
{
|
35
|
+
log_error("Cannot find symbol '%s' in library", s);
|
36
|
+
abort();
|
37
|
+
}
|
38
|
+
|
39
|
+
/* We found two symbols for the same name in two different modules */
|
40
|
+
static NSModule multiple(NSSymbol s, NSModule om, NSModule nm)
|
41
|
+
{
|
42
|
+
NSModule ret = nm;
|
43
|
+
|
44
|
+
log_debug("Symbol \"%s\" found in modules \"%s\" and \"%s\" (using %s)",
|
45
|
+
NSNameOfSymbol(s), NSNameOfModule(om), NSNameOfModule(nm),
|
46
|
+
NSNameOfModule(ret));
|
47
|
+
|
48
|
+
return (ret);
|
49
|
+
}
|
50
|
+
|
51
|
+
/* We got an error while linking a module, and if it's not a warning we have
|
52
|
+
to abort the whole program */
|
53
|
+
static void linkedit(NSLinkEditErrors category, int number, const char *file,
|
54
|
+
const char *message)
|
55
|
+
{
|
56
|
+
log_error("Errors during link edit of file \"%s\" (error=%d): %s", file,
|
57
|
+
number, message);
|
58
|
+
/* Check if this error was only a warning */
|
59
|
+
if (category != NSLinkEditWarningError) {
|
60
|
+
log_error("Cannot continue");
|
61
|
+
abort();
|
62
|
+
}
|
63
|
+
}
|
64
|
+
|
65
|
+
/* Initialize all DSO stuff */
|
66
|
+
bool dso_init()
|
67
|
+
{
|
68
|
+
NSLinkEditErrorHandlers h;
|
69
|
+
|
70
|
+
h.undefined = nosymbol;
|
71
|
+
h.multiple = multiple;
|
72
|
+
h.linkEdit = linkedit;
|
73
|
+
|
74
|
+
NSInstallLinkEditErrorHandlers(&h);
|
75
|
+
return (true);
|
76
|
+
}
|
77
|
+
|
78
|
+
/* Attempt to link a library from a specified filename */
|
79
|
+
dso_handle dso_link(const char *path)
|
80
|
+
{
|
81
|
+
/* We need to load the library publically as NSModuleFileImage is not
|
82
|
+
yet implemented (at least for non MH_BUNDLE libraries */
|
83
|
+
if (NSAddLibrary(path) != TRUE)
|
84
|
+
return (NULL);
|
85
|
+
/* We need to return a non-null value, even if it has no meaning. One day
|
86
|
+
this whole crap will be fixed */
|
87
|
+
return ((void *)!NULL);
|
88
|
+
}
|
89
|
+
|
90
|
+
/* Attempt to unload a library */
|
91
|
+
bool dso_unlink(dso_handle libr)
|
92
|
+
{
|
93
|
+
/* Check the handle */
|
94
|
+
if (libr == NULL) {
|
95
|
+
log_error("Attempting to unload a module without handle");
|
96
|
+
return (false);
|
97
|
+
}
|
98
|
+
|
99
|
+
/* We don't have a module, so, we don't really have to do anything */
|
100
|
+
return (true);
|
101
|
+
}
|
102
|
+
|
103
|
+
/* Get the address for a specifed symbol */
|
104
|
+
void *dso_symbol(dso_handle hdl, const char *nam)
|
105
|
+
{
|
106
|
+
NSSymbol sym = NULL;
|
107
|
+
NSModule mod = NULL;
|
108
|
+
char *und = NULL;
|
109
|
+
void *add = NULL;
|
110
|
+
int x = 0;
|
111
|
+
|
112
|
+
/* Check parameters */
|
113
|
+
if (hdl == NULL) {
|
114
|
+
log_error("Invalid library handler specified");
|
115
|
+
return (NULL);
|
116
|
+
}
|
117
|
+
|
118
|
+
if (nam == NULL) {
|
119
|
+
log_error("Invalid symbol name specified");
|
120
|
+
return (NULL);
|
121
|
+
}
|
122
|
+
|
123
|
+
/* Process the correct name (add a _ before the name) */
|
124
|
+
while (nam[x] != '\0')
|
125
|
+
x++;
|
126
|
+
und = (char *)malloc(sizeof(char) * (x + 2));
|
127
|
+
while (x >= 0)
|
128
|
+
und[x + 1] = nam[x--];
|
129
|
+
und[0] = '_';
|
130
|
+
|
131
|
+
/* Find the symbol */
|
132
|
+
sym = NSLookupAndBindSymbol(und);
|
133
|
+
free(und);
|
134
|
+
if (sym == NULL)
|
135
|
+
return (NULL);
|
136
|
+
|
137
|
+
/* Dump some debugging output since this part is shaky */
|
138
|
+
mod = NSModuleForSymbol(sym);
|
139
|
+
add = NSAddressOfSymbol(sym);
|
140
|
+
log_debug("Symbol \"%s\" found in module \"%s\" at address \"0x%08X\"",
|
141
|
+
NSNameOfSymbol(sym), NSNameOfModule(mod), add);
|
142
|
+
|
143
|
+
/* We want to return the address of the symbol */
|
144
|
+
return (add);
|
145
|
+
}
|
146
|
+
|
147
|
+
/* Return the error message from dlopen: Well we already print it */
|
148
|
+
char *dso_error()
|
149
|
+
{
|
150
|
+
return ("no additional message");
|
151
|
+
}
|
152
|
+
|
153
|
+
#endif /* ifdef DSO_DYLD */
|