1 /* 2 * gen_uuid.c --- generate a DCE-compatible uuid 3 * 4 * Copyright (C) 1999, Andreas Dilger and Theodore Ts'o 5 * 6 * %Begin-Header% 7 * This file may be redistributed under the terms of the GNU Public 8 * License. 9 * %End-Header% 10 */ 11 12 #include <stdio.h> 13 #ifdef HAVE_STDLIB_H 14 #include <stdlib.h> 15 #endif 16 #ifdef HAVE_GETOPT_H 17 #include <getopt.h> 18 #else 19 extern int getopt(int argc, char * const argv[], const char *optstring); 20 extern char *optarg; 21 extern int optind; 22 #endif 23 #include "uuid/uuid.h" 24 #include "nls-enable.h" 25 26 #define DO_TYPE_TIME 1 27 #define DO_TYPE_RANDOM 2 28 29 static void usage(const char *progname) 30 { 31 fprintf(stderr, _("Usage: %s [-r] [-t]\n"), progname); 32 exit(1); 33 } 34 35 int 36 main (int argc, char *argv[]) 37 { 38 int c; 39 int do_type = 0; 40 char str[37]; 41 uuid_t uu; 42 43 #ifdef ENABLE_NLS 44 setlocale(LC_MESSAGES, ""); 45 setlocale(LC_CTYPE, ""); 46 bindtextdomain(NLS_CAT_NAME, LOCALEDIR); 47 textdomain(NLS_CAT_NAME); 48 #endif 49 50 while ((c = getopt (argc, argv, "tr")) != EOF) 51 switch (c) { 52 case 't': 53 do_type = DO_TYPE_TIME; 54 break; 55 case 'r': 56 do_type = DO_TYPE_RANDOM; 57 break; 58 default: 59 usage(argv[0]); 60 } 61 62 switch (do_type) { 63 case DO_TYPE_TIME: 64 uuid_generate_time(uu); 65 break; 66 case DO_TYPE_RANDOM: 67 uuid_generate_random(uu); 68 break; 69 default: 70 uuid_generate(uu); 71 break; 72 } 73 74 uuid_unparse(uu, str); 75 76 printf("%s\n", str); 77 78 return 0; 79 } 80