Many files:
Checked in e2fsprogs 1.05
diff --git a/lib/uuid/parse.c b/lib/uuid/parse.c
new file mode 100644
index 0000000..ce3f88d
--- /dev/null
+++ b/lib/uuid/parse.c
@@ -0,0 +1,42 @@
+/*
+ * parse.c --- UUID parsing
+ */
+
+#include <stdio.h>
+
+#include "uuidP.h"
+
+int uuid_parse(char *in, uuid_t uu)
+{
+ struct uuid uuid;
+ int i;
+ char *cp, buf[3];
+
+ if (strlen(in) != 36)
+ return -1;
+ for (i=0, cp = in; i <= 36; i++,cp++) {
+ if ((i == 8) || (i == 13) || (i == 18) ||
+ (i == 23))
+ if (*cp == '-')
+ continue;
+ if (i== 36)
+ if (*cp == 0)
+ continue;
+ if (!isxdigit(*cp))
+ return -1;
+ }
+ uuid.time_low = strtoul(in, NULL, 16);
+ uuid.time_mid = strtoul(in+9, NULL, 16);
+ uuid.time_hi_and_version = strtoul(in+14, NULL, 16);
+ uuid.clock_seq = strtoul(in+19, NULL, 16);
+ cp = in+24;
+ buf[2] = 0;
+ for (i=0; i < 6; i++) {
+ buf[0] = *cp++;
+ buf[1] = *cp++;
+ uuid.node[i] = strtoul(buf, NULL, 16);
+ }
+
+ uuid_pack(&uuid, uu);
+ return 0;
+}