Deleted Added
full compact
45c45
< "$FreeBSD: head/usr.bin/jot/jot.c 62871 2000-07-10 06:02:13Z kris $";
---
> "$FreeBSD: head/usr.bin/jot/jot.c 77276 2001-05-27 21:08:19Z dd $";
68c68
< #define isdefault(s) (strcmp((s), "-") == 0)
---
> #define is_default(s) (strcmp((s), "-") == 0)
86,87c86
< void getargs __P((int, char *[]));
< void getformat __P((void));
---
> void getformat __P((void));
89,90c88,89
< int putdata __P((double, long));
< static void usage __P((void));
---
> int putdata __P((double, long));
> static void usage __P((void));
99,101c98,103
< register double *x = &xd;
< register double *y = &yd;
< register long *i = &id;
---
> double *x = &xd;
> double *y = &yd;
> long *i = &id;
> unsigned int mask = 0;
> int n = 0;
> int ch;
103,129c105,106
< getargs(argc, argv);
< if (randomize) {
< *x = (ender - begin) * (ender > begin ? 1 : -1);
< for (*i = 1; *i <= reps || infinity; (*i)++) {
< *y = (double) arc4random() / ULONG_MAX;
< if (putdata(*y * *x + begin, reps - *i))
< errx(1, "range error in conversion");
< }
< } else
< for (*i = 1, *x = begin; *i <= reps || infinity; (*i)++, *x += s)
< if (putdata(*x, reps - *i))
< errx(1, "range error in conversion");
< if (!nofinalnl)
< putchar('\n');
< exit(0);
< }
<
< void
< getargs(ac, av)
< int ac;
< char *av[];
< {
< register unsigned int mask = 0;
< register int n = 0;
<
< while (--ac && **++av == '-' && !isdefault(*av))
< switch ((*av)[1]) {
---
> while ((ch = getopt(argc, argv, "rb:w:cs:np:")) != -1)
> switch ((char)ch) {
140a118
> /* FALLTHROUGH */
142,147c120,122
< if ((*av)[2])
< strcpy(format, *av + 2);
< else if (!--ac)
< errx(1, "need context word after -w or -b");
< else
< strcpy(format, *++av);
---
> if (strlcpy(format, optarg, sizeof(format)) >=
> sizeof(format))
> errx(1, "-%c word too long", ch);
150,155c125
< if ((*av)[2])
< sepstring = *av + 2;
< else if (!--ac)
< errx(1, "need string after -s");
< else
< sepstring = *++av;
---
> sepstring = optarg;
158,163c128
< if ((*av)[2])
< prec = atoi(*av + 2);
< else if (!--ac)
< errx(1, "need number after -p");
< else
< prec = atoi(*++av);
---
> prec = atoi(optarg);
169a135,136
> argc -= optind;
> argv += optind;
171c138
< switch (ac) { /* examine args right to left, falling thru cases */
---
> switch (argc) { /* examine args right to left, falling thru cases */
173,175c140,142
< if (!isdefault(av[3])) {
< if (!sscanf(av[3], "%lf", &s))
< errx(1, "bad s value: %s", av[3]);
---
> if (!is_default(argv[3])) {
> if (!sscanf(argv[3], "%lf", &s))
> errx(1, "bad s value: %s", argv[3]);
179,181c146,148
< if (!isdefault(av[2])) {
< if (!sscanf(av[2], "%lf", &ender))
< ender = av[2][strlen(av[2])-1];
---
> if (!is_default(argv[2])) {
> if (!sscanf(argv[2], "%lf", &ender))
> ender = argv[2][strlen(argv[2])-1];
184c151
< n = getprec(av[2]);
---
> n = getprec(argv[2]);
187,189c154,156
< if (!isdefault(av[1])) {
< if (!sscanf(av[1], "%lf", &begin))
< begin = av[1][strlen(av[1])-1];
---
> if (!is_default(argv[1])) {
> if (!sscanf(argv[1], "%lf", &begin))
> begin = argv[1][strlen(argv[1])-1];
192c159
< prec = getprec(av[1]);
---
> prec = getprec(argv[1]);
197,199c164,166
< if (!isdefault(av[0])) {
< if (!sscanf(av[0], "%ld", &reps))
< errx(1, "bad reps value: %s", av[0]);
---
> if (!is_default(argv[0])) {
> if (!sscanf(argv[0], "%ld", &reps))
> errx(1, "bad reps value: %s", argv[0]);
206c173,174
< errx(1, "too many arguments. What do you mean by %s?", av[4]);
---
> errx(1, "too many arguments. What do you mean by %s?",
> argv[4]);
260c228
< s = (randomize ? -1.0 : STEP_DEF);
---
> s = (randomize ? time(NULL) : STEP_DEF);
268,269c236
< else
< begin = ender - reps * s + s;
---
> begin = ender - reps * s + s;
308a276,289
> if (randomize) {
> *x = (ender - begin) * (ender > begin ? 1 : -1);
> for (*i = 1; *i <= reps || infinity; (*i)++) {
> *y = (double) arc4random() / ULONG_MAX;
> if (putdata(*y * *x + begin, reps - *i))
> errx(1, "range error in conversion");
> }
> } else
> for (*i = 1, *x = begin; *i <= reps || infinity; (*i)++, *x += s)
> if (putdata(*x, reps - *i))
> errx(1, "range error in conversion");
> if (!nofinalnl)
> putchar('\n');
> exit(0);
361,362c342,343
< register char *p;
< register char *q;
---
> char *p;
> char *q;
378c359
< register char *p;
---
> char *p;
379a361
> size_t sz;
387,390c369,375
< if (!*p && !chardata)
< sprintf(p, "%%.%df", prec);
< else if (!*p && chardata) {
< strcpy(p, "%c");
---
> sz = sizeof(format) - strlen(format) - 1;
> if (!*p && !chardata) {
> if (snprintf(p, sz, "%%.%df", prec) >= (int)sz)
> errx(1, "-w word too long");
> } else if (!*p && chardata) {
> if (strlcpy(p, "%c", sz) >= sz)
> errx(1, "-w word too long");
392c377,379
< } else if (!*(p+1))
---
> } else if (!*(p+1)) {
> if (sz <= 0)
> errx(1, "-w word too long");
394c381
< else {
---
> } else {