Skip to content

Commit

Permalink
4769 Want implementation of uuid command
Browse files Browse the repository at this point in the history
Reviewed by: Andy Stormont <astormont@racktopsystems.com>
Reviewed by: Gordon Ross <gordon.ross@nexenta.com>
Reviewed by: Josef 'Jeff' Sipek <josef.sipek@nexenta.com>
Approved by: Richard Lowe <richlowe@richlowe.net>
  • Loading branch information
alhazred authored and richlowe committed Sep 20, 2015
1 parent fca4268 commit 71d4522
Show file tree
Hide file tree
Showing 7 changed files with 205 additions and 1 deletion.
1 change: 1 addition & 0 deletions usr/src/cmd/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -432,6 +432,7 @@ COMMON_SUBDIRS= \
users \
utmp_update \
utmpd \
uuidgen \
valtools \
vgrind \
vi \
Expand Down
35 changes: 35 additions & 0 deletions usr/src/cmd/uuidgen/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
#
# This file and its contents are supplied under the terms of the
# Common Development and Distribution License ("CDDL"), version 1.0.
# You may only use this file in accordance with the terms of version
# 1.0 of the CDDL.
#
# A full copy of the text of the CDDL should have accompanied this
# source. A copy of the CDDL is also available via the Internet at
# http://www.illumos.org/license/CDDL.
#

#
# Copyright 2015 Nexenta Systems, Inc. All rights reserved.
#

PROG= uuidgen

include ../Makefile.cmd

CFLAGS += $(CCVERBOSE)
LDLIBS += -luuid

C99MODE = $(C99_ENABLE)

.KEEP_STATE:

all: $(PROG)

install: all $(ROOTPROG)

clean:

lint: lint_PROG

include ../Makefile.targ
102 changes: 102 additions & 0 deletions usr/src/cmd/uuidgen/uuidgen.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
/*
* This file and its contents are supplied under the terms of the
* Common Development and Distribution License ("CDDL"), version 1.0.
* You may only use this file in accordance with the terms of version
* 1.0 of the CDDL.
*
* A full copy of the text of the CDDL should have accompanied this
* source. A copy of the CDDL is also available via the Internet at
* http://www.illumos.org/license/CDDL.
*/

/*
* Copyright 2015 Nexenta Systems, Inc. All rights reserved.
*/

#include <stdio.h>
#include <stdlib.h>
#include <libgen.h>
#include <uuid/uuid.h>
#include <getopt.h>
#include <locale.h>

static char *progname;
static int rflag, tflag;
static char uu_string[UUID_PRINTABLE_STRING_LENGTH];

static void
usage(void)
{
(void) fprintf(stderr, gettext(
"Usage: %s [-r | -t] [-o filename]\n"), progname);
exit(1);
}

int
main(int argc, char *argv[])
{
FILE *out;
uuid_t uu = { 0 };
int c;

(void) setlocale(LC_ALL, "");

#if !defined(TEXT_DOMAIN)
#define TEXT_DOMAIN "SYS_TEST"
#endif
(void) textdomain(TEXT_DOMAIN);

progname = basename(argv[0]);
out = stdout;
while ((c = getopt(argc, argv, ":rto:")) != EOF) {
switch ((char)c) {
case 'r':
rflag++;
break;
case 't':
tflag++;
break;
case 'o':
if ((out = fopen(optarg, "w")) == NULL) {
(void) fprintf(stderr, gettext(
"%s: cannot open %s\n"),
progname, optarg);
return (1);
}
break;
case '?': /* fallthrough */
default:
usage();
}
}

if ((rflag && tflag) || optind != argc) {
usage();
}

if (rflag) {
/* DCE version 4 */
uuid_generate_random(uu);
} else if (tflag) {
/* DCE version 1 */
uuid_generate_time(uu);
} else {
uuid_generate(uu);
}

if (uuid_is_null(uu) != 0) {
(void) fprintf(stderr, gettext(
"%s: failed to "
"generate uuid\n"), progname);
exit(1);
}

uuid_unparse(uu, uu_string);

(void) fprintf(out, "%s\n", uu_string);

if (out != NULL && out != stdout)
(void) fclose(out);

return (0);
}
3 changes: 2 additions & 1 deletion usr/src/man/man1/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -404,7 +404,8 @@ MANFILES= acctcom.1 \
units.1 \
unix2dos.1 \
uptime.1 \
vacation.1 \
uuidgen.1 \
vacation.1 \
vgrind.1 \
volcheck.1 \
volrmmount.1 \
Expand Down
63 changes: 63 additions & 0 deletions usr/src/man/man1/uuidgen.1
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
.\"
.\" This file and its contents are supplied under the terms of the
.\" Common Development and Distribution License ("CDDL"), version 1.0.
.\" You may only use this file in accordance with the terms of version
.\" 1.0 of the CDDL.
.\"
.\" A full copy of the text of the CDDL should have accompanied this
.\" source. A copy of the CDDL is also available via the Internet at
.\" http://www.illumos.org/license/CDDL.
.\"
.\" Copyright 2015 Nexenta Systems, Inc.
.\"
.Dd Sep 13, 2015
.Dt UUIDGEN 1
.Os
.Sh NAME
.Nm uuidgen
.Nd command-line utility to generate UUID's
.Sh SYNOPSIS
.Nm uuidgen [-r | -t] [-o filename]
.Sh DESCRIPTION
The
.Nm
command generates and prints a Universally Unique
IDentifier (UUID). By default
.Nm
creates a new UUID based on high-quality randomness from
arc4random(3C) (DCE version 4). If the \fB-t\fR option is
provided then a time-based (DCE version 1) UUID will be
generated.
.Sh OPTIONS
.Bl -tag -width indent
.It Fl r
Generate a UUID using
.Nm uuid_generate_random()
instead of
.Nm uuid_generate() .
This derives the new UUID from random data.
.It Fl t
Generate a UUID using
.Nm uuid_generate_time()
instead of
.Nm uuid_generate() .
This uses the current time and either the
Ethernet address (if available) or system node ID.
.It Fl o
Redirect output to
.Ar filename
instead of stdout.
.El
.Sh EXIT STATUS
.Bl -tag -width Ds
.It Dv 0
Successful completion.
.It Dv >0
Failure.
.El
.Sh INTERFACE STABILITY
.Sy Uncommitted .
.Sh SEE ALSO
.Xr uuid_generate 3uuid ,
.Xr uuid_generate_random 3uuid ,
.Xr uuid_generate_time 3uuidd
1 change: 1 addition & 0 deletions usr/src/pkg/manifests/SUNWcs.man1.inc
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,7 @@ file path=usr/share/man/man1/umask.1
file path=usr/share/man/man1/uname.1
file path=usr/share/man/man1/uniq.1
file path=usr/share/man/man1/uptime.1
file path=usr/share/man/man1/uuidgen.1
file path=usr/share/man/man1/w.1
file path=usr/share/man/man1/wait.1
file path=usr/share/man/man1/wc.1
Expand Down
1 change: 1 addition & 0 deletions usr/src/pkg/manifests/SUNWcs.mf
Original file line number Diff line number Diff line change
Expand Up @@ -848,6 +848,7 @@ file path=usr/bin/true mode=0555
file path=usr/bin/tty mode=0555
file path=usr/bin/tzselect mode=0555
file path=usr/bin/userattr mode=0555
file path=usr/bin/uuidgen mode=0555
file path=usr/bin/vmstat mode=0555
file path=usr/bin/which mode=0555
file path=usr/bin/who mode=0555
Expand Down

0 comments on commit 71d4522

Please sign in to comment.