summaryrefslogtreecommitdiffstats
path: root/src/modem.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/modem.c')
-rw-r--r--src/modem.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/modem.c b/src/modem.c
index 9cc3013..e8bab71 100644
--- a/src/modem.c
+++ b/src/modem.c
@@ -35,6 +35,7 @@
#include <stdio.h>
#include <sys/wait.h>
#include <stdlib.h>
+#include <limits.h>
#include <oop.h>
@@ -141,6 +142,7 @@ void modem_close(struct modem *m);
struct modem *modem_open(const char *dev, const char*msn) {
struct modem *m = NULL;
+ char res_dev[PATH_MAX];
assert(dev);
@@ -150,15 +152,16 @@ struct modem *modem_open(const char *dev, const char*msn) {
m = malloc(sizeof(struct modem));
assert(m);
memset(m, 0, sizeof(struct modem));
-
- m->dev = strdup(dev);
+
+ realpath(dev, res_dev);
+ m->dev = strdup(res_dev);
assert(m->dev);
- if ((m->name = strrchr(m->dev, '/')))
- m->name++;
+ if (!strncmp(m->dev, "/dev/", 5))
+ m->name = m->dev+5;
else
m->name = m->dev;
-
+
m->child_pid = -1;
m->child_buffio = NULL;
m->tabentry = NULL;
@@ -900,7 +903,7 @@ static int modem_reopen(struct modem *m) {
daemon_log(LOG_INFO, "[%s] Trying to open modem on TTY device ...", m->name);
- if ((fd = open(m->dev, O_RDWR|O_NDELAY)) < 0) {
+ if ((fd = open(m->dev, O_RDWR|O_NDELAY|O_NOCTTY)) < 0) {
daemon_log(LOG_ERR, "[%s] Failed to open device: %s", m->name, strerror(errno));
goto fail;
}