summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@cvs.openbsd.org>2014-05-09 23:56:27 +0000
committerIngo Schwarze <schwarze@cvs.openbsd.org>2014-05-09 23:56:27 +0000
commit0b4794c038c9e9197a108b639aea3f39e723a717 (patch)
treeac50d719c675e1b996c0566c179bc3429108b607
parentc7804738f38b50dbd76ee47b33818125b6ffa5fd (diff)
Various cleanup in incard():
* get_line() always returns the same non-NULL pointer, so testing the return value is useless. * Garbage collect the unused variable *line. * Check for end-of-buffer before parsing the next word instead of after it. * Skip strlen() when the length has been measured three lines before anyway. * Do not initialize local variables over and over again. feedback and ok pjanzen@
-rw-r--r--games/cribbage/io.c30
1 files changed, 12 insertions, 18 deletions
diff --git a/games/cribbage/io.c b/games/cribbage/io.c
index 8636c443f1d..484a34d9e73 100644
--- a/games/cribbage/io.c
+++ b/games/cribbage/io.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: io.c,v 1.18 2014/05/09 23:39:10 schwarze Exp $ */
+/* $OpenBSD: io.c,v 1.19 2014/05/09 23:56:26 schwarze Exp $ */
/* $NetBSD: io.c,v 1.9 1997/07/09 06:25:47 phil Exp $ */
/*-
@@ -213,23 +213,21 @@ incard(CARD *crd)
{
int i;
int rnk, sut;
- char *line, *p, *p1;
+ char *p, *p1;
bool retval;
retval = FALSE;
rnk = sut = EMPTY;
- if (!(line = get_line()))
+ p1 = get_line();
+ if (*p1 == '\0')
goto gotit;
- p = p1 = line;
+ p = p1;
while (*p1 != ' ' && *p1 != '\0')
++p1;
*p1++ = '\0';
- if (*p == '\0')
- goto gotit;
/* IMPORTANT: no real card has 2 char first name */
- if (strlen(p) == 2) { /* check for short form */
- rnk = EMPTY;
+ if (p + 3 == p1) { /* check for short form */
for (i = 0; i < RANKS; i++) {
if (*p == *rankchar[i]) {
rnk = i;
@@ -239,7 +237,6 @@ incard(CARD *crd)
if (rnk == EMPTY)
goto gotit; /* it's nothing... */
++p; /* advance to next char */
- sut = EMPTY;
for (i = 0; i < SUITS; i++) {
if (*p == *suitchar[i]) {
sut = i;
@@ -250,30 +247,26 @@ incard(CARD *crd)
retval = TRUE;
goto gotit;
}
- rnk = EMPTY;
for (i = 0; i < RANKS; i++) {
if (!strcmp(p, rankname[i]) || !strcmp(p, rankchar[i])) {
rnk = i;
break;
}
}
- if (rnk == EMPTY)
+ if (rnk == EMPTY || *p1 == '\0')
goto gotit;
p = p1;
while (*p1 != ' ' && *p1 != '\0')
++p1;
*p1++ = '\0';
- if (*p == '\0')
- goto gotit;
if (!strcmp("OF", p)) {
+ if (*p1 == '\0')
+ goto gotit;
p = p1;
while (*p1 != ' ' && *p1 != '\0')
++p1;
- *p1++ = '\0';
- if (*p == '\0')
- goto gotit;
+ *p1 = '\0';
}
- sut = EMPTY;
for (i = 0; i < SUITS; i++) {
if (!strcmp(p, suitname[i]) || !strcmp(p, suitchar[i])) {
sut = i;
@@ -317,7 +310,8 @@ number(int lo, int hi, char *prompt)
for (sum = 0;;) {
msg("%s", prompt);
- if (!(p = get_line()) || *p == '\0') {
+ p = get_line();
+ if (*p == '\0') {
msg(quiet ? "Not a number" :
"That doesn't look like a number");
continue;