discover/grub2: Allow to separate the --id argument using a space char
[petitboot] / lib / util / util.c
index 75b1c23620176ff4ded978ae15c362a831cc8443..36d45b8438b4961a9689c7ad2578fa4d0eaabd16 100644 (file)
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
-#include <stdio.h>
 #include <string.h>
 #include <assert.h>
 
 #include <util/util.h>
+#include <talloc/talloc.h>
+
+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;
+}