diff options
Diffstat (limited to 'games/quiz/quiz.c')
-rw-r--r-- | games/quiz/quiz.c | 65 |
1 files changed, 37 insertions, 28 deletions
diff --git a/games/quiz/quiz.c b/games/quiz/quiz.c index 28eb3904aac..56208d79fbb 100644 --- a/games/quiz/quiz.c +++ b/games/quiz/quiz.c @@ -1,3 +1,4 @@ +/* $OpenBSD: quiz.c,v 1.6 1998/08/19 07:40:57 pjanzen Exp $ */ /* $NetBSD: quiz.c,v 1.9 1995/04/22 10:16:58 cgd Exp $ */ /*- @@ -45,20 +46,21 @@ static char copyright[] = #ifndef lint #if 0 -static char sccsid[] = "@(#)quiz.c 8.2 (Berkeley) 1/3/94"; +static char sccsid[] = "@(#)quiz.c 8.3 (Berkeley) 5/4/95"; #else -static char rcsid[] = "$NetBSD: quiz.c,v 1.9 1995/04/22 10:16:58 cgd Exp $"; +static char rcsid[] = "$OpenBSD: quiz.c,v 1.6 1998/08/19 07:40:57 pjanzen Exp $"; #endif #endif /* not lint */ #include <sys/types.h> #include <errno.h> -#include <time.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #include <err.h> +#include <time.h> +#include <unistd.h> #include "quiz.h" #include "pathnames.h" @@ -81,7 +83,7 @@ main(argc, argv) int argc; char *argv[]; { - register int ch; + int ch; char *indexfile; /* revoke */ @@ -124,8 +126,8 @@ void get_file(file) char *file; { - register FILE *fp; - register QE *qp; + FILE *fp; + QE *qp; size_t len; char *lp; @@ -140,15 +142,18 @@ get_file(file) qp = &qlist; qsize = 0; while ((lp = fgetln(fp, &len)) != NULL) { - lp[--len] = '\0'; + if (lp[len - 1] == '\n') + --len; if (qp->q_text && qp->q_text[strlen(qp->q_text) - 1] == '\\') qp->q_text = appdstr(qp->q_text, lp, len); else { if ((qp->q_next = malloc(sizeof(QE))) == NULL) - err(1, NULL); + errx(1, "malloc"); qp = qp->q_next; - if ((qp->q_text = strdup(lp)) == NULL) - err(1, NULL); + if ((qp->q_text = malloc(len + 1)) == NULL) + errx(1, "malloc"); + strncpy(qp->q_text, lp, len); + qp->q_text[len] = '\0'; qp->q_asked = qp->q_answered = FALSE; qp->q_next = NULL; ++qsize; @@ -160,8 +165,8 @@ get_file(file) void show_index() { - register QE *qp; - register char *p, *s; + QE *qp; + char *p, *s; FILE *pf; if ((pf = popen(_PATH_PAGER, "w")) == NULL) @@ -171,7 +176,7 @@ show_index() for (s = next_cat(qp->q_text); s; s = next_cat(s)) { if (!rxp_compile(s)) errx(1, "%s", rxperr); - if (p = rxp_expand()) + if ((p = rxp_expand())) (void)fprintf(pf, "%s ", p); } (void)fprintf(pf, "\n"); @@ -187,7 +192,7 @@ void get_cats(cat1, cat2) char *cat1, *cat2; { - register QE *qp; + QE *qp; int i; char *s; @@ -219,8 +224,8 @@ get_cats(cat1, cat2) void quiz() { - register QE *qp; - register int i; + QE *qp; + int i; size_t len; u_int guesses, rights, wrongs; int next; @@ -272,7 +277,8 @@ quiz() qp->q_asked = TRUE; (void)printf("%s?\n", question); for (;; ++guesses) { - if ((answer = fgetln(stdin, &len)) == NULL) { + if ((answer = fgetln(stdin, &len)) == NULL || + answer[len - 1] != '\n') { score(rights, wrongs, guesses); exit(0); } @@ -299,10 +305,11 @@ quiz() char * next_cat(s) - register char * s; + char * s; { - int esc = 0; + int esc; + esc = 0; for (;;) switch (*s++) { case '\0': @@ -323,21 +330,23 @@ next_cat(s) char * appdstr(s, tp, len) char *s; - register char *tp; + char *tp; size_t len; { - register char *mp, *sp; - register int ch; + char *mp, *sp; + int ch; char *m; if ((m = malloc(strlen(s) + len + 1)) == NULL) - err(1, NULL); - for (mp = m, sp = s; *mp++ = *sp++;); + errx(1, "malloc"); + for (mp = m, sp = s; (*mp++ = *sp++) != NULL; ) + ; --mp; if (*(mp - 1) == '\\') --mp; - while ((ch = *mp++ = *tp++) && ch != '\n'); + while ((ch = *mp++ = *tp++) && ch != '\n') + ; *mp = '\0'; free(s); @@ -356,11 +365,11 @@ score(r, w, g) void downcase(p) - register char *p; + char *p; { - register int ch; + int ch; - for (; ch = *p; ++p) + for (; (ch = *p) != '\0'; ++p) if (isascii(ch) && isupper(ch)) *p = tolower(ch); } |