diff options
Diffstat (limited to 'libaltos')
| -rw-r--r-- | libaltos/libaltos_common.c | 31 | ||||
| -rw-r--r-- | libaltos/libaltos_windows.c | 4 | 
2 files changed, 25 insertions, 10 deletions
diff --git a/libaltos/libaltos_common.c b/libaltos/libaltos_common.c index f577de02..713a775c 100644 --- a/libaltos/libaltos_common.c +++ b/libaltos/libaltos_common.c @@ -76,24 +76,39 @@ altos_putchar(struct altos_file *file, char c)  }  struct bt_vendor_map { -	char	vendor[10]; -	int	port; +	const char	vendor[10]; +	int		port;  };  static const struct bt_vendor_map altos_bt_vendor_map[] = {  	{ .vendor = "00:12:6f:", 1 },	/* Rayson */ -	{ .vendor = "8C:DE:52:", 6 },	/* ISSC */ -	{ .vendor = "D8:80:39:", 6 },	/* Microchip */ +	{ .vendor = "8c:de:52:", 6 },	/* ISSC */ +	{ .vendor = "d8:80:39:", 6 },	/* Microchip */  };  #define NUM_BT_VENDOR_MAP	(sizeof altos_bt_vendor_map / sizeof altos_bt_vendor_map[0])  #define BT_PORT_DEFAULT		1 +static inline int +ao_tolower(int c) { +	if ('A' <= c && c <= 'Z') +		return c + 'a' - 'A'; +	return c; +} +  int altos_bt_port(struct altos_bt_device *device) { -	unsigned i; -	for (i = 0; i < NUM_BT_VENDOR_MAP; i++) -		if (strncmp (device->addr, altos_bt_vendor_map[i].vendor, strlen(altos_bt_vendor_map[i].vendor)) == 0) -			return altos_bt_vendor_map[i].port; +	unsigned i, j; +	for (i = 0; i < NUM_BT_VENDOR_MAP; i++) { +		const char *vendor = altos_bt_vendor_map[i].vendor; +		for (j = 0; ; j++) { +			if (vendor[j] == '\0') +				return altos_bt_vendor_map[i].port; +			if (device->addr[j] == '\0') +				break; +			if (ao_tolower(device->addr[j]) != vendor[j]) +				break; +		} +	}  	return BT_PORT_DEFAULT;  } diff --git a/libaltos/libaltos_windows.c b/libaltos/libaltos_windows.c index 4f9f1807..846e2217 100644 --- a/libaltos/libaltos_windows.c +++ b/libaltos/libaltos_windows.c @@ -639,7 +639,7 @@ static void  ba2str(BTH_ADDR ba, char *str)  { -	sprintf(str, "%02x:%02x:%02x:%02x:%02x:%02x", +	sprintf(str, "%02X:%02X:%02X:%02X:%02X:%02X",  		get_byte(ba, 0),  		get_byte(ba, 1),  		get_byte(ba, 2), @@ -755,8 +755,8 @@ altos_bt_open(struct altos_bt_device *device)  		altos_set_last_winsock_error();  		closesocket(file->socket);  		free(file); +		log_message("Connection attempted to address %s port %d\n", device->addr, sockaddr_bth.port);  		return NULL;  	}  	return &file->file;  } -  | 
