A while ago, I fixed this code together. It checks the argument for
cursing (placed in curse_list), and replaces it with a harmless beep. I
had to use str_strr, as strstr isn't case sensitive. However, I want to
ignore certain characters, such as spaces, full stops and more of those.
Here is the function:
int wordok(char *argument, bool call)
{
int i;
char temp[MAX_INPUT_LENGTH];
/* return valid if list doesn't exist */
if (!argument || curse_num < 1 || !curse_list)
return (1);
strlcpy(temp, argument, sizeof(temp));
if (call) {
/* Does the desired name contain a string in the curse list? */
for (i = 0; i < curse_num; i++)
if (str_strr(temp, curse_list[i]))
return (0);
} else
for (i = 0; i < curse_num; i++)
search_replace(argument, curse_list[i], "*beep*");
return (1);
}
And str_strr:
/*
* str_strr: a case-insensitive version of strstr(). */
char *str_strr(const char *str, const char *txt) {
int chk = 0, i;
if (str == NULL || txt == NULL)
log("SYSERR: str_strr() passed a NULL pointer, %p or %p.", str, txt);
else if (strlen(str) >= strlen(txt)) {
for (i = 0; str[i]; i++) {
if (LOWER(txt[chk]) == LOWER(str[i]))
chk++;
else
chk = 0;
if (chk == strlen(txt))
return ((char *)(str)+i-chk+1);
}
}
return (NULL);
}
I've got no idea however, to get this done. Any sugestions, hints, and
other help would be extremely helpfull :)
--
+---------------------------------------------------------------+
| FAQ: http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html |
| Archives: http://post.queensu.ca/listserv/wwwarch/circle.html |
| Newbie List: http://groups.yahoo.com/group/circle-newbies/ |
+---------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 06/26/03 PDT