/*!
\brief Initilize the core
\param console optional FILE stream for output
+ \param a pointer to set any errors to
\note to be called at application startup
*/
-SWITCH_DECLARE(switch_status_t) switch_core_init(char *console);
+SWITCH_DECLARE(switch_status_t) switch_core_init(char *console, const char **err);
/*!
\brief Destroy the core
char *pfile = "freeswitch.pid";
char path[256] = "";
char *ppath = NULL;
- char *err = NULL;
+ const char *err = NULL;
switch_event_t *event;
int bg = 0;
FILE *f;
}
- if (switch_core_init(ppath) != SWITCH_STATUS_SUCCESS) {
- fprintf(stderr, "Cannot Initilize\n");
+ if (switch_core_init(ppath, &err) != SWITCH_STATUS_SUCCESS) {
+ fprintf(stderr, "Cannot Initilize [%s]\n", err);
return 255;
}
fprintf(f, "%d", getpid());
fclose(f);
-
-
if (!err) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Bringing up environment.\n");
#endif
}
-SWITCH_DECLARE(switch_status_t) switch_core_init(char *console)
+SWITCH_DECLARE(switch_status_t) switch_core_init(char *console, const char **err)
{
- const char *err = NULL;
memset(&runtime, 0, sizeof(runtime));
switch_core_set_globals();
/* INIT APR and Create the pool context */
if (apr_initialize() != SWITCH_STATUS_SUCCESS) {
apr_terminate();
- fprintf(stderr, "FATAL ERROR! Could not initilize APR\n");
+ *err = "FATAL ERROR! Could not initilize APR\n";
return SWITCH_STATUS_MEMERR;
}
if (apr_pool_create(&runtime.memory_pool, NULL) != SWITCH_STATUS_SUCCESS) {
apr_terminate();
- fprintf(stderr, "FATAL ERROR! Could not allocate memory pool\n");
+ *err = "FATAL ERROR! Could not allocate memory pool\n";
return SWITCH_STATUS_MEMERR;
}
- if (switch_xml_init(runtime.memory_pool, &err) != SWITCH_STATUS_SUCCESS) {
+ if (switch_xml_init(runtime.memory_pool, err) != SWITCH_STATUS_SUCCESS) {
apr_terminate();
- fprintf(stderr, "FATAL ERROR! Could not open XML Registry %s\n", err);
+ *err = "FATAL ERROR! Could not open XML Registry %s\n";
return SWITCH_STATUS_MEMERR;
}
+ *err = NULL;
+
if(console) {
if (*console != '/') {
char path[265];
snprintf(path, sizeof(path), "%s%s%s", SWITCH_GLOBAL_dirs.log_dir, SWITCH_PATH_SEPARATOR, console);
console = path;
}
- switch_core_set_console(console);
+ if (switch_core_set_console(console) != SWITCH_STATUS_SUCCESS) {
+ *err = "FATAL ERROR! Could not open console\n";
+ apr_terminate();
+ return SWITCH_STATUS_GENERR;
+ }
} else {
runtime.console = stdout;
}