diff options
author | imp <imp@FreeBSD.org> | 1999-01-06 08:14:26 +0000 |
---|---|---|
committer | imp <imp@FreeBSD.org> | 1999-01-06 08:14:26 +0000 |
commit | 4695982235738320dd9801a117ce0e700b0b2fdf (patch) | |
tree | df7c21f08679025acb34002e2f1dee12f7b97fc0 /games/primes | |
parent | 1eb0469a28ede5948a08d146e27a84ea0d435bf3 (diff) | |
download | FreeBSD-src-4695982235738320dd9801a117ce0e700b0b2fdf.zip FreeBSD-src-4695982235738320dd9801a117ce0e700b0b2fdf.tar.gz |
added -h flag to allow for hexidecimal output.
Use '0' for base rather than 10 to allow for more flexible input bases.
Inspired by changes in PR 7402, but mostly redone by me to get past
bde filter.
Submitted by: Timo J. Rinne
PR: 7402
Diffstat (limited to 'games/primes')
-rw-r--r-- | games/primes/primes.c | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/games/primes/primes.c b/games/primes/primes.c index e928885..f204b37 100644 --- a/games/primes/primes.c +++ b/games/primes/primes.c @@ -101,6 +101,8 @@ extern ubig *pr_limit; /* largest prime in the prime array */ extern char pattern[]; extern int pattern_size; /* length of pattern array */ +int hflag; + void primes __P((ubig, ubig)); ubig read_num_buf __P((void)); void usage __P((void)); @@ -115,8 +117,11 @@ main(argc, argv) int ch; char *p; - while ((ch = getopt(argc, argv, "")) != -1) + while ((ch = getopt(argc, argv, "h")) != -1) switch (ch) { + case 'h': + hflag++; + break; case '?': default: usage(); @@ -140,14 +145,14 @@ main(argc, argv) errx(1, "negative numbers aren't permitted."); errno = 0; - start = strtoul(argv[0], &p, 10); + start = strtoul(argv[0], &p, 0); if (errno) err(1, "%s", argv[0]); if (*p != '\0') errx(1, "%s: illegal numeric format.", argv[0]); errno = 0; - stop = strtoul(argv[1], &p, 10); + stop = strtoul(argv[1], &p, 0); if (errno) err(1, "%s", argv[1]); if (*p != '\0') @@ -159,7 +164,7 @@ main(argc, argv) errx(1, "negative numbers aren't permitted."); errno = 0; - start = strtoul(argv[0], &p, 10); + start = strtoul(argv[0], &p, 0); if (errno) err(1, "%s", argv[0]); if (*p != '\0') @@ -200,7 +205,7 @@ read_num_buf() if (*p == '-') errx(1, "negative numbers aren't permitted."); errno = 0; - val = strtoul(buf, &p, 10); + val = strtoul(buf, &p, 0); if (errno) err(1, "%s", buf); if (*p != '\n') @@ -256,7 +261,7 @@ primes(start, stop) for (p = &prime[0], factor = prime[0]; factor < stop && p <= pr_limit; factor = *(++p)) { if (factor >= start) { - printf("%lu\n", factor); + printf(hflag ? "0x%x\n" : "%lu\n", factor); } } /* return early if we are done */ @@ -319,7 +324,7 @@ primes(start, stop) */ for (q = table; q < tab_lim; ++q, start+=2) { if (*q) { - printf("%lu\n", start); + printf(hflag ? "0x%x\n" : "%lu\n", start); } } } @@ -328,6 +333,6 @@ primes(start, stop) void usage() { - (void)fprintf(stderr, "usage: primes [start [stop]]\n"); + (void)fprintf(stderr, "usage: primes [-h] [start [stop]]\n"); exit(1); } |