summaryrefslogtreecommitdiff
path: root/libaltos/libaltos_common.c
diff options
context:
space:
mode:
authorBdale Garbee <bdale@gag.com>2018-03-18 15:50:16 -0600
committerBdale Garbee <bdale@gag.com>2018-03-18 15:50:16 -0600
commit55b62bb5d6a9d6b484bcd0d802964d529dd5f9bb (patch)
tree1a93442d43fcad172879d76629d4ed47ce3d6575 /libaltos/libaltos_common.c
parent558d2c94fe8c49d0544a3e7bc5ba11b60c4faa1e (diff)
parent59e23c27c2a85d7d748223e444b24d19937afe47 (diff)
Merge branch 'branch-1.8' into debian
Diffstat (limited to 'libaltos/libaltos_common.c')
-rw-r--r--libaltos/libaltos_common.c31
1 files changed, 23 insertions, 8 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;
}