9 printf("uuidgen [-rthV]\n");
11 void print_version() {
12 printf("uuidgen version 1.0\n");
15 int main(int ac, char *av[]) {
16 pd_uuid_t u; /* generated uuid */
17 pd_uuid_t nsuuid; /* namespace uuid */
18 pd_uuid_t *nsid = 0; /* pointer to namespace uuid */
19 char *ns; /* literal ns id string */
21 struct pd_uuid_state s;
22 char uuid[PD_UUID_STRLEN+1];
34 * T = time with random mac
48 while ((opt = getopt(ac, av, "Vhq:tTrmsv:n:DUOX")) != -1) {
52 if (mode != 3 && mode != 5) mode = 5;
55 nsid = &pd_uuid_ns_dns;
58 nsid = &pd_uuid_ns_url;
61 nsid = &pd_uuid_ns_oid;
64 nsid = &pd_uuid_ns_x500;
97 "uuidgen: unknown option '%c'\n",
104 pd_uuid_init_state(&s);
106 if (mode == 3 || mode == 5) {
107 /* TODO warn if q != 1 */
110 if (!strcmp(ns, "dns")) {
111 nsid = &pd_uuid_ns_dns;
112 } else if (!strcmp(ns, "url")) {
113 nsid = &pd_uuid_ns_url;
114 } else if (!strcmp(ns, "oid")) {
115 nsid = &pd_uuid_ns_oid;
116 } else if (!strcmp(ns, "x500")) {
117 nsid = &pd_uuid_ns_x500;
120 if (pd_uuid_set_string(nsid, ns) != 0) {
121 fprintf(stderr, "malformed ns uuid: %s\n", ns);
126 for (i = optind; i < ac; i++) {
129 pd_uuid_get_string(nsid, uuid);
130 pd_uuid_make_v3(0, &u, nsid, av[i], len);
132 pd_uuid_make_v5(&s, &u, nsid, av[i], len);
134 pd_uuid_get_string(&u, uuid);
135 printf("%s\n", uuid);
143 pd_uuid_make_v1mc(&s, &u);
146 pd_uuid_make_v1(&s, &u);
149 pd_uuid_make_v4(&s, &u);
153 "uuidgen: unknown uuid version '%d'\n",
157 pd_uuid_get_string(&u, uuid);
158 printf("%s\n", uuid);