diff options
author | marcel <marcel@FreeBSD.org> | 2003-03-15 02:27:10 +0000 |
---|---|---|
committer | marcel <marcel@FreeBSD.org> | 2003-03-15 02:27:10 +0000 |
commit | 349ca981e1632621b7582bf5d907d6f3b359c63c (patch) | |
tree | 6c0a642c39667a086b58ff7dbc44bb6ff521fc98 /bin/uuidgen/uuidgen.c | |
parent | 74674008392c002bfc392f0dfa365d51bcd917ee (diff) | |
download | FreeBSD-src-349ca981e1632621b7582bf5d907d6f3b359c63c.zip FreeBSD-src-349ca981e1632621b7582bf5d907d6f3b359c63c.tar.gz |
Add an -o filename option to have the output written to a file.
This option is present on most uuidgen(1) implementations even
though normal file redirection can be used to achieve the same.
Submitted by: Hiten Pandya <hiten@unixdaemons.com>
Diffstat (limited to 'bin/uuidgen/uuidgen.c')
-rw-r--r-- | bin/uuidgen/uuidgen.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/bin/uuidgen/uuidgen.c b/bin/uuidgen/uuidgen.c index 0676e27..d5dac4b 100644 --- a/bin/uuidgen/uuidgen.c +++ b/bin/uuidgen/uuidgen.c @@ -37,20 +37,22 @@ __FBSDID("$FreeBSD$"); static void usage(void) { - (void)fprintf(stderr, "usage: uuidgen [-1] [-n count]\n"); + (void)fprintf(stderr, "usage: uuidgen [-1] [-n count] [-o filename]\n"); exit(1); } int main(int argc, char *argv[]) { + FILE *fp; uuid_t *store, *uuid; char *p; int ch, count, i, iterate; count = -1; /* no count yet */ + fp = stdout; /* default output file */ iterate = 0; /* not one at a time */ - while ((ch = getopt(argc, argv, "1n:")) != -1) + while ((ch = getopt(argc, argv, "1n:o:")) != -1) switch (ch) { case '1': iterate = 1; @@ -62,6 +64,13 @@ main(int argc, char *argv[]) if (*p != 0 || count < 1) usage(); break; + case 'o': + if (fp != stdout) + errx(1, "multiple output files not allowed"); + fp = fopen(optarg, "w"); + if (fp == NULL) + err(1, "fopen"); + break; default: usage(); } @@ -93,10 +102,12 @@ main(int argc, char *argv[]) uuid = store; while (count--) { uuid_to_string(uuid++, &p, NULL); - printf("%s\n", p); + fprintf(fp, "%s\n", p); free(p); } free(store); + if (fp != stdout) + fclose(fp); return (0); } |