X-Git-Url: http://git.ozlabs.org/?p=petitboot;a=blobdiff_plain;f=lib%2Futil%2Futil.c;h=36d45b8438b4961a9689c7ad2578fa4d0eaabd16;hp=75b1c23620176ff4ded978ae15c362a831cc8443;hb=HEAD;hpb=072847109936bc0e822f8cf67c31eb62183f0db8 diff --git a/lib/util/util.c b/lib/util/util.c index 75b1c23..36d45b8 100644 --- a/lib/util/util.c +++ b/lib/util/util.c @@ -15,11 +15,14 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#include #include #include #include +#include + +static const char hex[] = { '0', '1', '2', '3', '4', '5', '6', '7', + '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', }; void mac_str(uint8_t *mac, unsigned int maclen, char *buf, unsigned int buflen) { @@ -36,11 +39,28 @@ void mac_str(uint8_t *mac, unsigned int maclen, char *buf, unsigned int buflen) pos = buf; for (i = 0; i < maclen; i++) { - snprintf(pos, 4, "%02x:", mac[i]); - pos += 3; + *(pos++) = hex[mac[i] >> 4 & 0xf]; + *(pos++) = hex[mac[i] & 0xf]; + *(pos++) = ':'; } *(pos - 1) = '\0'; return; } + +char *format_buffer(void *ctx, const uint8_t *buf, unsigned int len) +{ + char *str; + unsigned int i; + + if (len == 0) + return ""; + + str = talloc_asprintf(ctx, "0x%02x%s", buf[0], len > 1 ? " " : ""); + for (i = 1; i < len; i++) + str = talloc_asprintf_append(str, "0x%02x%s", buf[i], + ((i + 1) % 8 == 0 && i != len - 1) ? "\n" : " "); + + return str; +}