Skip to content

Commit

Permalink
All cosmetic.
Browse files Browse the repository at this point in the history
1) Rename RANDOM_MAX to RANDOM_MAX_PLUS1 to not confuse with random()'s max
2) Use calloc() instead of zeroing fields explicitly
3) "too many lines" -> "too many delimiters" for err()
  • Loading branch information
Andrey A. Chernov authored and Andrey A. Chernov committed Aug 10, 2008
1 parent d2155f2 commit 2a3fabc
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 12 deletions.
6 changes: 3 additions & 3 deletions games/random/random.c
Original file line number Diff line number Diff line change
Expand Up @@ -162,15 +162,15 @@ main(int argc, char *argv[])

/* Compute a random exit status between 0 and denom - 1. */
if (random_exit)
return (int)(denom * random() / RANDOM_MAX);
return (int)(denom * random() / RANDOM_MAX_PLUS1);

/*
* Select whether to print the first line. (Prime the pump.)
* We find a random number between 0 and denom - 1 and, if it's
* 0 (which has a 1 / denom chance of being true), we select the
* line.
*/
selected = (int)(denom * random() / RANDOM_MAX) == 0;
selected = (int)(denom * random() / RANDOM_MAX_PLUS1) == 0;
while ((ch = getchar()) != EOF) {
if (selected)
(void)putchar(ch);
Expand All @@ -180,7 +180,7 @@ main(int argc, char *argv[])
err(2, "stdout");

/* Now see if the next line is to be printed. */
selected = (int)(denom * random() / RANDOM_MAX) == 0;
selected = (int)(denom * random() / RANDOM_MAX_PLUS1) == 0;
}
}
if (ferror(stdin))
Expand Down
13 changes: 5 additions & 8 deletions games/random/randomize_fd.c
Original file line number Diff line number Diff line change
Expand Up @@ -48,13 +48,10 @@ rand_node_allocate(void)
{
struct rand_node *n;

n = (struct rand_node *)malloc(sizeof(struct rand_node));
n = (struct rand_node *)calloc(1, sizeof(struct rand_node));
if (n == NULL)
err(1, "malloc");
err(1, "calloc");

n->len = 0;
n->cp = NULL;
n->next = NULL;
return(n);
}

Expand Down Expand Up @@ -175,9 +172,9 @@ randomize_fd(int fd, int type, int unique, double denom)
(type == RANDOM_TYPE_WORDS && isspace(buf[i])) ||
(eof && i == buflen - 1)) {
make_token:
if (numnode == RANDOM_MAX) {
if (numnode == RANDOM_MAX_PLUS1) {
errno = EFBIG;
err(1, "too many lines");
err(1, "too many delimiters");
}
numnode++;
n = rand_node_allocate();
Expand Down Expand Up @@ -215,7 +212,7 @@ randomize_fd(int fd, int type, int unique, double denom)
if (n->cp == NULL)
break;

if ((int)(denom * random() / RANDOM_MAX) == 0) {
if ((int)(denom * random() / RANDOM_MAX_PLUS1) == 0) {
ret = printf("%.*s", (int)n->len - 1, n->cp);
if (ret < 0)
err(1, "printf");
Expand Down
2 changes: 1 addition & 1 deletion games/random/randomize_fd.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
* The random() function is defined to return values between 0 and
* 2^31 - 1 inclusive in random(3).
*/
#define RANDOM_MAX 0x80000000UL
#define RANDOM_MAX_PLUS1 0x80000000UL

#define RANDOM_TYPE_UNSET 0
#define RANDOM_TYPE_LINES 1
Expand Down

0 comments on commit 2a3fabc

Please sign in to comment.