X-Git-Url: https://git.cameronkatri.com/bsdgames-darwin.git/blobdiff_plain/2dbfe327a09e7ba2365edc6daa8e9ba52c0913c0..20a3afdb7c90fd1247b0337b2849ed41484eb501:/boggle/mkindex/mkindex.c diff --git a/boggle/mkindex/mkindex.c b/boggle/mkindex/mkindex.c index eddf0968..e572000a 100644 --- a/boggle/mkindex/mkindex.c +++ b/boggle/mkindex/mkindex.c @@ -1,4 +1,4 @@ -/* $NetBSD: mkindex.c,v 1.3 1997/10/11 02:12:23 lukem Exp $ */ +/* $NetBSD: mkindex.c,v 1.10 2005/07/01 16:38:24 jmc Exp $ */ /*- * Copyright (c) 1993 @@ -15,11 +15,7 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors + * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * @@ -37,31 +33,28 @@ */ #ifndef lint -static char copyright[] = -"@(#) Copyright (c) 1993\n\ +static char copyright[] = "@(#) Copyright (c) 1993\n\ The Regents of the University of California. All rights reserved.\n"; -#endif /* not lint */ -#ifndef lint #if 0 static char sccsid[] = "@(#)mkindex.c 8.1 (Berkeley) 6/11/93"; #else -static char rcsid[] = "$NetBSD: mkindex.c,v 1.3 1997/10/11 02:12:23 lukem Exp $"; +static char rcsid[] = + "$NetBSD: mkindex.c,v 1.10 2005/07/01 16:38:24 jmc Exp $"; #endif #endif /* not lint */ #include +#include #include "bog.h" -char *nextword __P((FILE *, char *, int *, int *)); +char *nextword(FILE *, char *, int *, int *); int -main(argc, argv) - int argc; - char *argv[]; +main(void) { - int clen, rlen, prev; + int clen, rlen, prev, i; long off, start; char buf[MAXWORDLEN + 1]; @@ -69,14 +62,29 @@ main(argc, argv) off = start = 0L; while (nextword(stdin, buf, &clen, &rlen) != NULL) { if (*buf != prev) { + /* + * Boggle expects a full index even if the dictionary + * had no words beginning with some letters. + * So we write out entries for every letter from prev + * to *buf. + */ if (prev != '\0') printf("%c %6ld %6ld\n", prev, start, off - 1); + for (i = (prev ? prev + 1 : 'a'); i < *buf; i++) + printf("%c %6ld %6ld\n", i, off, off - 1); prev = *buf; start = off; } off += clen + 1; } printf("%c %6ld %6ld\n", prev, start, off - 1); + for (i = prev + 1; i <= 'z'; i++) + printf("%c %6ld %6ld\n", i, off, off - 1); + fflush(stdout); + if (ferror(stdout)) { + perror("error writing standard output"); + exit(1); + } exit(0); } @@ -87,10 +95,7 @@ main(argc, argv) * rlen to the strlen() of the real word */ char * -nextword(fp, buffer, clen, rlen) - FILE *fp; - char *buffer; - int *clen, *rlen; +nextword(FILE *fp, char *buffer, int *clen, int *rlen) { int ch, pcount; char *p, *q;