X-Git-Url: https://git.cameronkatri.com/bsdgames-darwin.git/blobdiff_plain/462fca95471224f85b85be911e72faee16cd1597..HEAD:/monop/getinp.c diff --git a/monop/getinp.c b/monop/getinp.c index 09724128..3d0dc637 100644 --- a/monop/getinp.c +++ b/monop/getinp.c @@ -1,6 +1,8 @@ +/* $NetBSD: getinp.c,v 1.19 2012/06/19 05:35:32 dholland Exp $ */ + /* - * Copyright (c) 1980 Regents of the University of California. - * All rights reserved. + * Copyright (c) 1980, 1993 + * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -10,11 +12,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. * @@ -31,50 +29,53 @@ * SUCH DAMAGE. */ +#include #ifndef lint -/*static char sccsid[] = "from: @(#)getinp.c 5.4 (Berkeley) 2/28/91";*/ -static char rcsid[] = "$Id: getinp.c,v 1.2 1993/08/01 18:53:42 mycroft Exp $"; +#if 0 +static char sccsid[] = "@(#)getinp.c 8.1 (Berkeley) 5/31/93"; +#else +__RCSID("$NetBSD: getinp.c,v 1.19 2012/06/19 05:35:32 dholland Exp $"); +#endif #endif /* not lint */ -# include -# include +#include +#include +#include -# define reg register +#include "monop.h" -# define LINE 70 +#define LINE 70 static char buf[257]; -getinp(prompt, list) -char *prompt, *list[]; { +static int comp(const char *); - reg int i, n_match, match; - char *sp; - int plen; - static int comp(); +int +getinp(const char *prompt, const char *const lst []) +{ + int i, n_match, match = 0; + char *sp; for (;;) { -inter: - printf(prompt); - for (sp = buf; (*sp=getchar()) != '\n'; ) - if (*sp == -1) /* check for interupted system call */ - goto inter; - else if (sp != buf || *sp != ' ') - sp++; + printf("%s", prompt); + fgets(buf, sizeof(buf), stdin); + if (feof(stdin)) { + return 0; + } if (buf[0] == '?' && buf[1] == '\n') { printf("Valid inputs are: "); - for (i = 0, match = 18; list[i]; i++) { - if ((match+=(n_match=strlen(list[i]))) > LINE) { + for (i = 0, match = 18; lst[i]; i++) { + if ((match+=(n_match=strlen(lst[i]))) > LINE) { printf("\n\t"); match = n_match + 8; } - if (*list[i] == '\0') { + if (*lst[i] == '\0') { match += 8; printf(""); } else - printf(list[i]); - if (list[i+1]) + printf("%s", lst[i]); + if (lst[i+1]) printf(", "); else putchar('\n'); @@ -82,31 +83,32 @@ inter: } continue; } - *sp = '\0'; + if ((sp = strchr(buf, '\n')) != NULL) + *sp = '\0'; for (sp = buf; *sp; sp++) - if (isupper(*sp)) - *sp = tolower(*sp); - for (i = n_match = 0; list[i]; i++) - if (comp(list[i])) { + *sp = tolower((unsigned char)*sp); + for (i = n_match = 0; lst[i]; i++) + if (comp(lst[i])) { n_match++; match = i; } if (n_match == 1) return match; else if (buf[0] != '\0') - printf("Illegal response: \"%s\". Use '?' to get list of valid answers\n", buf); + printf("Illegal response: \"%s\". " + "Use '?' to get list of valid answers\n", buf); } } -static -comp(s1) -char *s1; { - - reg char *sp, *tsp, c; +static int +comp(const char *s1) +{ + const char *sp, *tsp; + char c; if (buf[0] != '\0') for (sp = buf, tsp = s1; *sp; ) { - c = isupper(*tsp) ? tolower(*tsp) : *tsp; + c = tolower((unsigned char)*tsp); tsp++; if (c != *sp++) return 0;