OSDN Git Service

ChangeLog, wordwrap.pl:
[android-x86/external-e2fsprogs.git] / lib / e2p / uuid.c
1 /*
2  * uuid.c -- utility routines for manipulating UUID's.
3  */
4
5 #include <stdio.h>
6 #include <string.h>
7 #include <ext2fs/ext2_types.h>
8
9 #include "e2p.h"
10
11 struct uuid {
12         __u32   time_low;
13         __u16   time_mid;
14         __u16   time_hi_and_version;
15         __u16   clock_seq;
16         __u8    node[6];
17 };
18
19 /* Returns 1 if the uuid is the NULL uuid */
20 int e2p_is_null_uuid(void *uu)
21 {
22         __u8    *cp;
23         int     i;
24
25         for (i=0, cp = uu; i < 16; i++)
26                 if (*cp)
27                         return 0;
28         return 1;
29 }
30
31 static void e2p_unpack_uuid(void *in, struct uuid *uu)
32 {
33         __u8    *ptr = in;
34         __u32   tmp;
35
36         tmp = *ptr++;
37         tmp = (tmp << 8) | *ptr++;
38         tmp = (tmp << 8) | *ptr++;
39         tmp = (tmp << 8) | *ptr++;
40         uu->time_low = tmp;
41
42         tmp = *ptr++;
43         tmp = (tmp << 8) | *ptr++;
44         uu->time_mid = tmp;
45         
46         tmp = *ptr++;
47         tmp = (tmp << 8) | *ptr++;
48         uu->time_hi_and_version = tmp;
49
50         tmp = *ptr++;
51         tmp = (tmp << 8) | *ptr++;
52         uu->clock_seq = tmp;
53
54         memcpy(uu->node, ptr, 6);
55 }
56
57 void e2p_uuid_to_str(void *uu, char *out)
58 {
59         struct uuid uuid;
60
61         e2p_unpack_uuid(uu, &uuid);
62         sprintf(out,
63                 "%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
64                 uuid.time_low, uuid.time_mid, uuid.time_hi_and_version,
65                 uuid.clock_seq >> 8, uuid.clock_seq & 0xFF,
66                 uuid.node[0], uuid.node[1], uuid.node[2],
67                 uuid.node[3], uuid.node[4], uuid.node[5]);
68 }