diff --git a/debian/changelog b/debian/changelog index a268f68..00e386c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +bsdgames (2.13-3) unstable; urgency=low + + * Added -m option to hangman to set MINLEN. Closes: #129998 + + -- Joey Hess Sat, 19 Jan 2002 18:04:06 -0500 + bsdgames (2.13-2) unstable; urgency=low * Fixed bad merge (that's why sail was broken). diff --git a/hangman/extern.c b/hangman/extern.c index b060d93..9637972 100644 --- a/hangman/extern.c +++ b/hangman/extern.c @@ -1,4 +1,4 @@ -/* $NetBSD: extern.c,v 1.4 1997/10/11 01:16:27 lukem Exp $ */ +/* $NetBSD: extern.c,v 1.6 1999/09/17 20:45:48 jsm Exp $ */ /* * Copyright (c) 1983, 1993 @@ -38,7 +38,7 @@ #if 0 static char sccsid[] = "@(#)extern.c 8.1 (Berkeley) 5/31/93"; #else -__RCSID("$NetBSD: extern.c,v 1.4 1997/10/11 01:16:27 lukem Exp $"); +__RCSID("$NetBSD: extern.c,v 1.6 1999/09/17 20:45:48 jsm Exp $"); #endif #endif /* not lint */ @@ -61,6 +61,7 @@ const char *const Noose_pict[] = { }; int Errors, Wordnum = 0; +unsigned int Minlen = MINLEN; double Average = 0.0; @@ -74,6 +75,8 @@ const ERR_POS Err_pos[MAXERRS] = { {5, 11, '\\'} }; +const char *Dict_name = _PATH_DICT; + FILE *Dict = NULL; off_t Dict_size; diff --git a/hangman/getword.c b/hangman/getword.c index 3539c14..470e4fa 100644 --- a/hangman/getword.c +++ b/hangman/getword.c @@ -1,4 +1,4 @@ -/* $NetBSD: getword.c,v 1.5 1997/10/11 01:16:30 lukem Exp $ */ +/* $NetBSD: getword.c,v 1.6 1999/09/08 21:57:17 jsm Exp $ */ /* * Copyright (c) 1983, 1993 @@ -38,7 +38,7 @@ #if 0 static char sccsid[] = "@(#)getword.c 8.1 (Berkeley) 5/31/93"; #else -__RCSID("$NetBSD: getword.c,v 1.5 1997/10/11 01:16:30 lukem Exp $"); +__RCSID("$NetBSD: getword.c,v 1.6 1999/09/08 21:57:17 jsm Exp $"); #endif #endif /* not lint */ @@ -58,13 +58,13 @@ getword() inf = Dict; for (;;) { pos = (double) rand() / (RAND_MAX + 1.0) * (double) Dict_size; - fseek(inf, pos, 0); + fseek(inf, pos, SEEK_SET); if (fgets(Word, BUFSIZ, inf) == NULL) continue; if (fgets(Word, BUFSIZ, inf) == NULL) continue; Word[strlen(Word) - 1] = '\0'; - if (strlen(Word) < MINLEN) + if (strlen(Word) < Minlen) continue; for (wp = Word; *wp; wp++) if (!islower(*wp)) diff --git a/hangman/hangman.6.in b/hangman/hangman.6.in index d4009ac..b719bbc 100644 --- a/hangman/hangman.6.in +++ b/hangman/hangman.6.in @@ -1,4 +1,4 @@ -.\" $NetBSD: hangman.6,v 1.6 1997/10/11 01:16:32 lukem Exp $ +.\" $NetBSD: hangman.6,v 1.7 1999/09/17 20:45:49 jsm Exp $ .\" .\" Copyright (c) 1983, 1993 .\" The Regents of the University of California. All rights reserved. @@ -41,6 +41,8 @@ .Nd Computer version of the game hangman .Sh SYNOPSIS .Nm +.Op Fl d Ar wordlist +.Op Fl m Ar minlen .Sh DESCRIPTION In .Nm "" , @@ -48,6 +50,15 @@ the computer picks a word from the on-line word list and you must try to guess it. The computer keeps track of which letters have been guessed and how many wrong guesses you have made on the screen in a graphic fashion. +.Sh OPTIONS +.Bl -tag -width flag +.It Fl d +Use the specified +.Ar wordlist +instead of the default one named below. +.It Fl m +Set the minimum word length to use. The default is 6 letters. +.El .Sh FILES .Bl -tag -width @hangman_wordsfile@ -compact .It Pa @hangman_wordsfile@ diff --git a/hangman/hangman.h b/hangman/hangman.h index 81153d9..469a05e 100644 --- a/hangman/hangman.h +++ b/hangman/hangman.h @@ -1,4 +1,4 @@ -/* $NetBSD: hangman.h,v 1.7 1998/09/11 13:42:03 hubertf Exp $ */ +/* $NetBSD: hangman.h,v 1.10 1999/09/17 20:45:49 jsm Exp $ */ /* * Copyright (c) 1983, 1993 @@ -73,18 +73,21 @@ extern char Word[], Known[]; extern const char *const Noose_pict[]; extern int Errors, Wordnum; +extern unsigned int Minlen; extern double Average; extern const ERR_POS Err_pos[]; +extern const char *Dict_name; + extern FILE *Dict; extern off_t Dict_size; -void die __P((int)); +void die __P((int)) __attribute__((__noreturn__)); void endgame __P((void)); -int main __P((void)); +int main __P((int, char *[])); void getguess __P((void)); void getword __P((void)); void playgame __P((void)); diff --git a/hangman/main.c b/hangman/main.c index 9869a40..cfc58f5 100644 --- a/hangman/main.c +++ b/hangman/main.c @@ -1,4 +1,4 @@ -/* $NetBSD: main.c,v 1.5 1998/09/11 13:42:03 hubertf Exp $ */ +/* $NetBSD: main.c,v 1.9 2000/05/08 07:56:04 mycroft Exp $ */ /* * Copyright (c) 1983, 1993 @@ -43,7 +43,7 @@ __COPYRIGHT("@(#) Copyright (c) 1983, 1993\n\ #if 0 static char sccsid[] = "@(#)main.c 8.1 (Berkeley) 5/31/93"; #else -__RCSID("$NetBSD: main.c,v 1.5 1998/09/11 13:42:03 hubertf Exp $"); +__RCSID("$NetBSD: main.c,v 1.9 2000/05/08 07:56:04 mycroft Exp $"); #endif #endif /* not lint */ @@ -53,11 +53,34 @@ __RCSID("$NetBSD: main.c,v 1.5 1998/09/11 13:42:03 hubertf Exp $"); * This game written by Ken Arnold. */ int -main(void) +main(argc, argv) + int argc; + char *argv[]; { + int ch; + /* Revoke setgid privileges */ setregid(getgid(), getgid()); + while ((ch = getopt(argc, argv, "m:d:")) != -1) { + switch (ch) { + case 'd': + Dict_name = optarg; + break; + case 'm': + Minlen = atoi(optarg); + if (Minlen < 2) { + fprintf(stderr, "minlen too short\n"); + exit(1); + } + break; + case '?': + default: + (void)fprintf(stderr, "usage: hangman [-d wordlist] [-m minlen]\n"); + exit(1); + } + } + initscr(); signal(SIGINT, die); setup(); @@ -74,7 +97,7 @@ main(void) */ void die(dummy) - int dummy __attribute__((unused)); + int dummy __attribute__((__unused__)); { mvcur(0, COLS - 1, LINES - 1, 0); endwin();