From 4695982235738320dd9801a117ce0e700b0b2fdf Mon Sep 17 00:00:00 2001 From: imp Date: Wed, 6 Jan 1999 08:14:26 +0000 Subject: 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 --- games/primes/primes.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) (limited to 'games/primes') 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); } -- cgit v1.1