blob: 0d48c0f6cbc153b9ef6f7237e42cbf5348767263 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
#include <unistd.h>
#include <dlfcn.h>
#include <stdio.h>
#define OK 0
#define MODULE_NOT_FOUND 1
#define INVALID_NUMBER_ARGUMENTS 2
int main(int argc, char **argv) {
/* Asterisk entry point */
char* error = NULL;
int (*ast_main)(int argc, char **argv);
void *handle = dlopen ("asterisk.dll", RTLD_GLOBAL);
if (handle == NULL) {
fputs (dlerror(), stderr);
fputs ("\r\n", stderr);
return MODULE_NOT_FOUND;
}
printf("\r\nAsterisk module loaded successfully");
ast_main = dlsym(handle, "main");
if ((error = dlerror()) != NULL) {
fputs("Asterisk main not found", stderr);
fputs(error, stderr);
exit(1);
}
printf("\r\nAsterisk entry point found");
/* run asterisk main */
(*ast_main)(argc, argv);
dlclose(handle);
printf("\r\nAsterisk stopped");
return OK;
}
|