diff options
Diffstat (limited to 'games/primes/primes.c')
-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); } |