diff options
Diffstat (limited to 'src/modem.c')
-rw-r--r-- | src/modem.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/modem.c b/src/modem.c index 0336af2..9cc3013 100644 --- a/src/modem.c +++ b/src/modem.c @@ -139,7 +139,7 @@ static void copy_modem_to_child(struct modem *m); static int modem_reopen(struct modem *m); void modem_close(struct modem *m); -struct modem *modem_open(const char *dev) { +struct modem *modem_open(const char *dev, const char*msn) { struct modem *m = NULL; assert(dev); @@ -163,6 +163,8 @@ struct modem *modem_open(const char *dev) { m->child_buffio = NULL; m->tabentry = NULL; + m->listen_msn = msn ? strdup(msn) : NULL; + if (modem_reopen(m) < 0) goto fail; @@ -205,6 +207,7 @@ void modem_close(struct modem *m) { free(m->dev); free(m->caller_number); free(m->ring_number); + free(m->listen_msn); free(m); } @@ -242,7 +245,7 @@ static void modem_next_command(struct modem *m) { if (m->command_index == 0) buffio_command(m->buffio, hup_sequence); else if (m->command_index == 15) { - char *l = args.listen_arg ? args.listen_arg : "*"; + char *l = m->listen_msn ? m->listen_msn : "*"; daemon_log(LOG_INFO, "[%s] Listening on '%s'.", m->name, l); snprintf(tmp, sizeof(tmp), p, l); p = tmp; @@ -479,8 +482,8 @@ static int modem_start_child(struct modem *m) { setenv("CALLERMSN", m->caller_number ? m->caller_number : "", 1); assert(m->dtmf_fifo->fname); setenv("DTMFFIFO", m->dtmf_fifo->fname, 1); - if (args.listen_arg) - setenv("LISTENMSN", args.listen_arg, 1); + if (m->listen_msn) + setenv("LISTENMSN", m->listen_msn, 1); else unsetenv("LISTENMSN"); |