119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project/* 219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project * gen_uuid.c --- generate a DCE-compatible uuid 319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project * 419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project * Copyright (C) 1999, Andreas Dilger and Theodore Ts'o 519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project * 619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project * %Begin-Header% 719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project * This file may be redistributed under the terms of the GNU Public 819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project * License. 919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project * %End-Header% 1019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project */ 1119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project 1219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#include <stdio.h> 1319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#ifdef HAVE_STDLIB_H 1419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#include <stdlib.h> 1519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#endif 1619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#ifdef HAVE_GETOPT_H 1719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#include <getopt.h> 1819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#else 1919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectextern int getopt(int argc, char * const argv[], const char *optstring); 2019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectextern char *optarg; 2119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectextern int optind; 2219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#endif 2319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#include "uuid/uuid.h" 2419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#include "nls-enable.h" 2519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project 2619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#define DO_TYPE_TIME 1 2719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#define DO_TYPE_RANDOM 2 2819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project 2919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectstatic void usage(const char *progname) 3019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project{ 3119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project fprintf(stderr, _("Usage: %s [-r] [-t]\n"), progname); 3219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project exit(1); 3319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project} 3419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project 3519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectint 3619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projectmain (int argc, char *argv[]) 3719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project{ 3819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project int c; 3919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project int do_type = 0; 4019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project char str[37]; 4119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project uuid_t uu; 4219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project 4319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#ifdef ENABLE_NLS 4419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project setlocale(LC_MESSAGES, ""); 4519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project setlocale(LC_CTYPE, ""); 4619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project bindtextdomain(NLS_CAT_NAME, LOCALEDIR); 4719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project textdomain(NLS_CAT_NAME); 4819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#endif 4919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project 5019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project while ((c = getopt (argc, argv, "tr")) != EOF) 5119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project switch (c) { 5219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project case 't': 5319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project do_type = DO_TYPE_TIME; 5419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project break; 5519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project case 'r': 5619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project do_type = DO_TYPE_RANDOM; 5719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project break; 5819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project default: 5919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project usage(argv[0]); 6019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project } 613984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt 6219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project switch (do_type) { 6319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project case DO_TYPE_TIME: 6419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project uuid_generate_time(uu); 6519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project break; 6619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project case DO_TYPE_RANDOM: 6719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project uuid_generate_random(uu); 6819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project break; 6919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project default: 7019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project uuid_generate(uu); 7119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project break; 7219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project } 733984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt 7419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project uuid_unparse(uu, str); 7519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project 7619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project printf("%s\n", str); 7719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project 7819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project return 0; 7919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project} 80