]> git.ipfire.org Git - thirdparty/dhcpcd.git/commitdiff
hwaddr_ntoa now takes a void * as a source.
authorRoy Marples <roy@marples.name>
Mon, 24 Oct 2016 19:21:23 +0000 (19:21 +0000)
committerRoy Marples <roy@marples.name>
Mon, 24 Oct 2016 19:21:23 +0000 (19:21 +0000)
common.c
common.h

index cbea738e81e7908b79e16016557680926af8410b..890851e9416d078b4f3d1e0479616bd83686a23a 100644 (file)
--- a/common.c
+++ b/common.c
@@ -282,26 +282,28 @@ addvard(struct dhcpcd_ctx *ctx,
        return addvar(ctx, e, prefix, var, buffer);
 }
 
-char *
-hwaddr_ntoa(const uint8_t *hwaddr, size_t hwlen, char *buf, size_t buflen)
+const char *
+hwaddr_ntoa(const void *hwaddr, size_t hwlen, char *buf, size_t buflen)
 {
+       const unsigned char *hp, *ep;
        char *p;
-       size_t i;
 
-       if (buf == NULL) {
+       if (buf == NULL)
                return NULL;
-       }
 
        if (hwlen * 3 > buflen) {
                errno = ENOBUFS;
-               return 0;
+               return NULL;
        }
 
+       hp = hwaddr;
+       ep = hp + hwlen;
        p = buf;
-       for (i = 0; i < hwlen; i++) {
-               if (i > 0)
+
+       while (hp < ep) {
+               if (hp != hwaddr)
                        *p ++= ':';
-               p += snprintf(p, 3, "%.2x", hwaddr[i]);
+               p += snprintf(p, 3, "%.2x", *hp++);
        }
        *p ++= '\0';
        return buf;
index c5941873e52c4410f4310c4d05519047cea47a35..36048c8f429b2b77b4758222be2637f0770f4918 100644 (file)
--- a/common.h
+++ b/common.h
@@ -212,7 +212,7 @@ ssize_t addvar(struct dhcpcd_ctx *,
 ssize_t addvard(struct dhcpcd_ctx *,
     char ***, const char *, const char *, size_t);
 
-char *hwaddr_ntoa(const uint8_t *, size_t, char *, size_t);
+const char *hwaddr_ntoa(const void *, size_t, char *, size_t);
 size_t hwaddr_aton(uint8_t *, const char *);
 size_t read_hwaddr_aton(uint8_t **, const char *);