From 4969576063c9971fd6bdb6efc95262e2cc35bc54 Mon Sep 17 00:00:00 2001 From: "Eric S. Raymond" Date: Tue, 19 Oct 2010 01:21:37 -0400 Subject: [PATCH] OK, give up on splint - this program gives it severe indigestion. --- ascii.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/ascii.c b/ascii.c index 30fc83f..0e53d83 100644 --- a/ascii.c +++ b/ascii.c @@ -197,41 +197,43 @@ static void speak(unsigned int ch) static int stricmp(char *s, char *t) /* case-blind string compare */ { - while (*s && tolower(*s) == tolower(*t)) + while (*s!='\0' && tolower(*s) == tolower(*t)) s++, t++; - return(*t - *s); + return (int)(*t - *s); } static void ascii(char *str) { int ch, hi, lo; char **ptr; - int len = strlen(str); + size_t len = strlen(str); /* interpret single characters as themselves */ - if (len == 1) - { speak(str[0]); return; } + if (len == 1) { + speak((unsigned int)str[0]); + return; + } /* process multiple letters */ if (line == 1) { for (ch = 0; ch < len; ch ++) { - speak(str[ch]); + speak((unsigned int)str[ch]); } return; } /* interpret ^-escapes as control-character notation */ if (strcmp(str, "^?") == 0) - { speak(0x7F); return; } + { speak((unsigned int)0x7F); return; } else if (str[0] == '^' && len == 2) - { speak(str[1] & 0x1f); return; } + { speak((unsigned int)(str[1] & 0x1f)); return; } /* interpret C-style backslash escapes */ if (*str == '\\' && len == 2 && strchr("abfnrtv", str[1])) for (ch = 7; ch < 14; ch++) for (ptr = &cnames[ch][1]; *ptr; ptr++) if (**ptr == '\\' && strcmp(str, *ptr) == 0) - { speak(ch); return; } + { speak((unsigned int)ch); return; } /* interpret 2 and 3-character ASCII control mnemonics */ if (len == 2 || len == 3) -- 2.43.0