Whamcloud - gitweb
LU-9501 mke2fs: avoid inode number error with large FS
[tools/e2fsprogs.git] / misc / uuidgen.c
index 2b467e9..1233f3d 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * gen_uuid.c --- generate a DCE-compatible uuid
  *
- * Copyright (C) 1999, Andreas Dilger
+ * Copyright (C) 1999, Andreas Dilger and Theodore Ts'o
  *
  * %Begin-Header%
  * This file may be redistributed under the terms of the GNU Public
@@ -9,19 +9,72 @@
  * %End-Header%
  */
 
+#include "config.h"
 #include <stdio.h>
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#ifdef HAVE_GETOPT_H
+#include <getopt.h>
+#else
+extern int getopt(int argc, char * const argv[], const char *optstring);
+extern char *optarg;
+extern int optind;
+#endif
 #include "uuid/uuid.h"
+#include "support/nls-enable.h"
+
+#define DO_TYPE_TIME   1
+#define DO_TYPE_RANDOM 2
+
+static void usage(const char *progname)
+{
+       fprintf(stderr, _("Usage: %s [-r] [-t]\n"), progname);
+       exit(1);
+}
 
 int
 main (int argc, char *argv[])
 {
-   char   str[37];
-   uuid_t uu;
+       int    c;
+       int    do_type = 0;
+       char   str[37];
+       uuid_t uu;
+
+#ifdef ENABLE_NLS
+       setlocale(LC_MESSAGES, "");
+       setlocale(LC_CTYPE, "");
+       bindtextdomain(NLS_CAT_NAME, LOCALEDIR);
+       textdomain(NLS_CAT_NAME);
+#endif
+
+       while ((c = getopt (argc, argv, "tr")) != EOF)
+               switch (c) {
+               case 't':
+                       do_type = DO_TYPE_TIME;
+                       break;
+               case 'r':
+                       do_type = DO_TYPE_RANDOM;
+                       break;
+               default:
+                       usage(argv[0]);
+               }
+
+       switch (do_type) {
+       case DO_TYPE_TIME:
+               uuid_generate_time(uu);
+               break;
+       case DO_TYPE_RANDOM:
+               uuid_generate_random(uu);
+               break;
+       default:
+               uuid_generate(uu);
+               break;
+       }
 
-   uuid_generate(uu);
-   uuid_unparse(uu, str);
+       uuid_unparse(uu, str);
 
-   printf("%s\n", str);
+       printf("%s\n", str);
 
-   return 0;
+       return 0;
 }