diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2007-05-17 16:05:24 +0000 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2007-05-17 16:05:24 +0000 |
commit | faee4dba3bef596dbc8735964b6577f9858ad7ef (patch) | |
tree | 85fc181f98e95205086a61dd3e09dd13b73fef0d /rfcomm/main.c | |
parent | 20c6b4ab406b9b3b2bf27098273b6175b910305c (diff) |
Make the EACCES path look nicer
Diffstat (limited to 'rfcomm/main.c')
-rw-r--r-- | rfcomm/main.c | 50 |
1 files changed, 26 insertions, 24 deletions
diff --git a/rfcomm/main.c b/rfcomm/main.c index 8835967a..80eaab56 100644 --- a/rfcomm/main.c +++ b/rfcomm/main.c @@ -395,14 +395,7 @@ static void cmd_connect(int ctl, int dev, bdaddr_t *bdaddr, int argc, char **arg while ((fd = open(devname, O_RDONLY | O_NOCTTY)) < 0) { if (errno == EACCES) { perror("Can't open RFCOMM device"); - - memset(&req, 0, sizeof(req)); - req.dev_id = dev; - req.flags = (1 << RFCOMM_HANGUP_NOW); - ioctl(ctl, RFCOMMRELEASEDEV, &req); - - close(sk); - return; + goto release; } snprintf(devname, MAXPATHLEN - 1, "/dev/bluetooth/rfcomm/%d", dev); @@ -413,14 +406,7 @@ static void cmd_connect(int ctl, int dev, bdaddr_t *bdaddr, int argc, char **arg continue; } perror("Can't open RFCOMM device"); - - memset(&req, 0, sizeof(req)); - req.dev_id = dev; - req.flags = (1 << RFCOMM_HANGUP_NOW); - ioctl(ctl, RFCOMMRELEASEDEV, &req); - - close(sk); - return; + goto release; } } @@ -469,6 +455,15 @@ static void cmd_connect(int ctl, int dev, bdaddr_t *bdaddr, int argc, char **arg printf("Disconnected\n"); close(fd); + return; + +release: + memset(&req, 0, sizeof(req)); + req.dev_id = dev; + req.flags = (1 << RFCOMM_HANGUP_NOW); + ioctl(ctl, RFCOMMRELEASEDEV, &req); + + close(sk); } static void cmd_listen(int ctl, int dev, bdaddr_t *bdaddr, int argc, char **argv) @@ -546,6 +541,11 @@ static void cmd_listen(int ctl, int dev, bdaddr_t *bdaddr, int argc, char **argv snprintf(devname, MAXPATHLEN - 1, "/dev/rfcomm%d", dev); while ((fd = open(devname, O_RDONLY | O_NOCTTY)) < 0) { + if (errno == EACCES) { + perror("Can't open RFCOMM device"); + goto release; + } + snprintf(devname, MAXPATHLEN - 1, "/dev/bluetooth/rfcomm/%d", dev); if ((fd = open(devname, O_RDONLY | O_NOCTTY)) < 0) { if (try--) { @@ -554,14 +554,7 @@ static void cmd_listen(int ctl, int dev, bdaddr_t *bdaddr, int argc, char **argv continue; } perror("Can't open RFCOMM device"); - - memset(&req, 0, sizeof(req)); - req.dev_id = dev; - req.flags = (1 << RFCOMM_HANGUP_NOW); - ioctl(ctl, RFCOMMRELEASEDEV, &req); - - close(sk); - return; + goto release; } } @@ -618,6 +611,15 @@ static void cmd_listen(int ctl, int dev, bdaddr_t *bdaddr, int argc, char **argv printf("Disconnected\n"); close(fd); + return; + +release: + memset(&req, 0, sizeof(req)); + req.dev_id = dev; + req.flags = (1 << RFCOMM_HANGUP_NOW); + ioctl(ctl, RFCOMMRELEASEDEV, &req); + + close(sk); } static void cmd_watch(int ctl, int dev, bdaddr_t *bdaddr, int argc, char **argv) |