summaryrefslogtreecommitdiffstats
path: root/src/modem.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/modem.c')
-rw-r--r--src/modem.c11
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");