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) | 
