# include <stdio.h> # include <sys/types.h> # include <sys/time.h> # include <sys/stat.h> # define WFILE "/usr/dict/words" # ifdef TESTING main () { char *codeword (); srand (time (0) + getpid () + getuid ()); printf ("%s\n", codeword ()); } # endif char *codeword () { static char word[64]; struct stat sbuf; long length; FILE *wfile = NULL; char *s = word; int ch, i; /* Pick random line from file */ if (stat (WFILE, &sbuf) == 0 && (length = sbuf.st_size) > 0 && (wfile = fopen (WFILE, "r"))) { fseek (wfile, randint (length), 0); while ((ch = getc (wfile)) != EOF && ch != '\n') ; if (ch == EOF) rewind (wfile); if (fgets (word, 64, wfile)) { fclose (wfile); word[strlen (word) - 1] = '\0'; } return (s); } /* Return totally random 8 chars */ for (i=0; i<8; i++) { word[i] = randint (26) + 'a'; } word[i] = '\0'; return (s); }