Browse code

Make the MD5 hash appear as an UUID

Shawn Webb authored on 2014/01/10 09:22:34
Showing 1 changed files
... ...
@@ -234,7 +234,7 @@ char *internal_get_host_id(void)
234 234
     if (!(devices))
235 235
         return NULL;
236 236
 
237
-    printable_md5 = calloc(1, 33);
237
+    printable_md5 = calloc(1, 37);
238 238
     if (!(printable_md5))
239 239
         return NULL;
240 240
 
... ...
@@ -248,8 +248,19 @@ char *internal_get_host_id(void)
248 248
         free(devices[i].name);
249 249
     free(devices);
250 250
 
251
-    for (i=0; i < sizeof(raw_md5); i++)
252
-        sprintf(printable_md5+(i*2), "%02x", raw_md5[i]);
251
+    for (i=0; i < sizeof(raw_md5); i++) {
252
+        size_t len = strlen(printable_md5);
253
+        switch (len) {
254
+            case 8:
255
+            case 13:
256
+            case 18:
257
+            case 23:
258
+                printable_md5[len++] = '-';
259
+                break;
260
+        }
261
+
262
+        sprintf(printable_md5+len, "%02x", raw_md5[i]);
263
+    }
253 264
 
254 265
     return printable_md5;
255 266
 }