diff options
| author | Marcel Holtmann <marcel@holtmann.org> | 2005-04-22 12:18:52 +0000 | 
|---|---|---|
| committer | Marcel Holtmann <marcel@holtmann.org> | 2005-04-22 12:18:52 +0000 | 
| commit | cb079810a52ebbc4ec46c33b2a0f31a6b9c8c778 (patch) | |
| tree | 516615e71ee1a055f1a74037477e0ebfc9c96398 /tools/hcitool.c | |
| parent | a66a22cd29417810d91c057c6febe817f3d7b26a (diff) | |
Use the new textfile library
Diffstat (limited to 'tools/hcitool.c')
| -rw-r--r-- | tools/hcitool.c | 71 | 
1 files changed, 13 insertions, 58 deletions
| diff --git a/tools/hcitool.c b/tools/hcitool.c index a30e7098..6e225cee 100644 --- a/tools/hcitool.c +++ b/tools/hcitool.c @@ -38,8 +38,6 @@  #include <unistd.h>  #include <stdlib.h>  #include <getopt.h> -#include <sys/file.h> -#include <sys/stat.h>  #include <sys/param.h>  #include <sys/ioctl.h>  #include <sys/socket.h> @@ -48,6 +46,7 @@  #include <bluetooth/hci.h>  #include <bluetooth/hci_lib.h> +#include "textfile.h"  #include "oui.h"  #define for_each_opt(opt, long, short) while ((opt=getopt_long(argc, argv, short ? short:"+", long, NULL)) != -1) @@ -280,65 +279,15 @@ static char *major_classes[] = {  	"Audio/Video", "Peripheral", "Imaging", "Uncategorized"  }; -static int read_device_name(const bdaddr_t *local, const bdaddr_t *peer, char *name) +static char *get_device_name(const bdaddr_t *local, const bdaddr_t *peer)  { -	char filename[PATH_MAX + 1], addr[18], str[249], *buf, *ptr; -	bdaddr_t bdaddr; -	struct stat st; -	int fd, pos, err = -ENOENT; +	char filename[PATH_MAX + 1], addr[18];  	ba2str(local, addr);  	snprintf(filename, PATH_MAX, "%s/%s/names", STORAGEDIR, addr); -	fd = open(filename, O_RDONLY); -	if (fd < 0) -		return -errno; - -	if (flock(fd, LOCK_SH) < 0) { -		err = -errno; -		goto close; -	} - -	if (fstat(fd, &st) < 0) { -		err = -errno; -		goto unlock; -	} - -	buf = malloc(st.st_size); -	if (!buf) { -		err = -ENOMEM; -		goto unlock; -	} - -	if (st.st_size > 0) { -		read(fd, buf, st.st_size); - -		ptr = buf; - -		memset(str, 0, sizeof(str)); -		while (sscanf(ptr, "%17s %[^\n]\n%n", addr, str, &pos) != EOF) { -			str2ba(addr, &bdaddr); -			str[sizeof(str) - 1] = '\0'; - -			if (!bacmp(&bdaddr, peer)) { -				snprintf(name, 249, "%s", str); -				err = 0; -				break; -			} - -			memset(str, 0, sizeof(str)); -			ptr += pos; -			if (ptr - buf >= st.st_size) -				break; -		}; -	} - -unlock: -	flock(fd, LOCK_UN); - -close: -	close(fd); -	return err; +	ba2str(peer, addr); +	return textfile_get(filename, addr);  }  /* Display local devices */ @@ -457,7 +406,7 @@ static void cmd_scan(int dev_id, int argc, char **argv)  	int num_rsp, length, flags;  	uint8_t cls[3], features[8];  	uint16_t handle; -	char addr[18], name[249], oui[9], *comp; +	char addr[18], name[249], oui[9], *comp, *tmp;  	struct hci_version version;  	struct hci_dev_info di;  	struct hci_conn_info_req *cr; @@ -538,7 +487,13 @@ static void cmd_scan(int dev_id, int argc, char **argv)  	for (i = 0; i < num_rsp; i++) {  		memset(name, 0, sizeof(name)); -		nc = (read_device_name(&di.bdaddr, &(info+i)->bdaddr, name) == 0); +		tmp = get_device_name(&di.bdaddr, &(info+i)->bdaddr); +		if (tmp) { +			strncpy(name, tmp, 249); +			free(tmp); +			nc = 1; +		} else +			nc = 0;  		if (!extcls && !extinf && !extoui) {  			ba2str(&(info+i)->bdaddr, addr); | 
