diff --git a/src/host/layer23/src/mobile/app_mobile.c b/src/host/layer23/src/mobile/app_mobile.c index 822ea64..85a928c 100644 --- a/src/host/layer23/src/mobile/app_mobile.c +++ b/src/host/layer23/src/mobile/app_mobile.c @@ -349,7 +349,7 @@ int l23_app_init(int (*mncc_recv)(struct osmocom_ms *ms, int, void *), const char *config_file, uint16_t vty_port) { struct telnet_connection dummy_conn; - int rc; + int rc = 0; mncc_recv_app = mncc_recv; @@ -359,13 +359,15 @@ int l23_app_init(int (*mncc_recv)(struct osmocom_ms *ms, int, void *), ms_vty_init(); dummy_conn.priv = NULL; vty_reading = 1; - rc = vty_read_config_file(config_file, &dummy_conn); - if (rc < 0) { - fprintf(stderr, "Failed to parse the config file: '%s'\n", - config_file); - fprintf(stderr, "Please check or create config file using: " - "'touch %s'\n", config_file); - return rc; + if(config_file != NULL) { + rc = vty_read_config_file(config_file, &dummy_conn); + if (rc < 0) { + fprintf(stderr, "Failed to parse the config file:" + " '%s'\n", config_file); + fprintf(stderr, "Please check or create config file" + " using: 'touch %s'\n", config_file); + return rc; + } } vty_reading = 0; telnet_init(l23_ctx, NULL, vty_port); diff --git a/src/host/layer23/src/mobile/main.c b/src/host/layer23/src/mobile/main.c index 87aa4c6..342ff0b 100644 --- a/src/host/layer23/src/mobile/main.c +++ b/src/host/layer23/src/mobile/main.c @@ -44,7 +44,6 @@ struct log_target *stderr_target; void *l23_ctx = NULL; -static const char *config_file = "/etc/osmocom/osmocom.cfg"; struct llist_head ms_list; static uint32_t gsmtap_ip = 0; unsigned short vty_port = 4247; @@ -129,7 +128,7 @@ void sighandler(int sigset) if (sigset == SIGHUP || sigset == SIGPIPE) return; - fprintf(stderr, "Signal %d recevied.\n", sigset); + fprintf(stderr, "Signal %d received.\n", sigset); /* in case there is a lockup during exit */ signal(SIGINT, SIG_DFL); @@ -144,6 +143,10 @@ int main(int argc, char **argv) { int quit = 0; int rc; + char const * home; + size_t len; + const char osmocomcfg[] = ".osmocom"; + char * config_file = NULL; printf("%s\n", openbsc_copyright); @@ -171,7 +174,15 @@ int main(int argc, char **argv) } } + home = getenv("HOME"); + if(home != NULL) { + len = strlen(home) + 1 + sizeof(osmocomcfg); + config_file = malloc(len); + if(config_file != NULL) + snprintf(config_file, len, "%s/%s", home, osmocomcfg); + } rc = l23_app_init(NULL, config_file, vty_port); + free(config_file); if (rc) exit(rc);