From e41eccc12323d6a7eafbdfdf0715283a5282f14c Mon Sep 17 00:00:00 2001 From: Szymon Janc Date: Wed, 2 Mar 2011 11:19:27 +0100 Subject: [PATCH] Simplify bachk function By using isxdigit() the function can be considerably simplified. --- lib/bluetooth.c | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/lib/bluetooth.c b/lib/bluetooth.c index 4af2ef693..875119bb8 100644 --- a/lib/bluetooth.c +++ b/lib/bluetooth.c @@ -118,33 +118,24 @@ int ba2oui(const bdaddr_t *ba, char *str) int bachk(const char *str) { - char tmp[18], *ptr = tmp; - if (!str) return -1; if (strlen(str) != 17) return -1; - memcpy(tmp, str, 18); - - while (*ptr) { - *ptr = toupper(*ptr); - if (*ptr < '0'|| (*ptr > '9' && *ptr < 'A') || *ptr > 'F') + while (*str) { + if (!isxdigit(*str++)) return -1; - ptr++; - *ptr = toupper(*ptr); - if (*ptr < '0'|| (*ptr > '9' && *ptr < 'A') || *ptr > 'F') + if (!isxdigit(*str++)) return -1; - ptr++; - *ptr = toupper(*ptr); - if (*ptr == 0) + if (*str == 0) break; - if (*ptr != ':') + + if (*str++ != ':') return -1; - ptr++; } return 0; -- 2.47.3