X-Git-Url: https://git.sommitrealweird.co.uk/onak.git/blobdiff_plain/71ad017abe933ba0dc7ed1b005074c4a5ab9978a..33cfd5887ea8d05241b5b4749abbf7fdfadb51fe:/wordlist.c?ds=sidebyside diff --git a/wordlist.c b/wordlist.c index 10b53a8..605ec06 100644 --- a/wordlist.c +++ b/wordlist.c @@ -1,11 +1,20 @@ /* * wordlist.c - Routines for manipulating word lists * - * Jonathan McDowell + * Copyright 2004 Jonathan McDowell * - * Copyright 2004 Project Purple + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation; version 2 of the License. * - * $Id: wordlist.c,v 1.3 2004/05/28 03:23:04 noodles Exp $ + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * this program; if not, write to the Free Software Foundation, Inc., 51 + * Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include @@ -42,11 +51,11 @@ struct ll *makewordlist(struct ll *wordlist, char *word) end = word; while (end != NULL && *end != 0) { start = end; - while (*start != 0 && !isalnum(*start)) { + while (*start != 0 && (ispunct(*start) || isspace (*start))) { start++; } end = start; - while (*end != 0 && isalnum(*end)) { + while (*end != 0 && (!ispunct(*end) && !isspace (*end))) { *end = tolower(*end); end++; } @@ -56,8 +65,10 @@ struct ll *makewordlist(struct ll *wordlist, char *word) end++; } - if (llfind(wordlist, start, strcmp) == NULL) { - wordlist = lladd(wordlist, start); + if (llfind(wordlist, start, + (int (*)(const void *, const void *)) strcmp + ) == NULL) { + wordlist = lladdend(wordlist, start); } } } @@ -89,7 +100,9 @@ struct ll *makewordlistfromkey(struct ll *wordlist, for (i = 0; uids[i] != NULL; ++i) { words = makewordlist(NULL, uids[i]); for (wl = words; wl != NULL; wl = wl->next) { - if (llfind(wordlist, wl->object, strcmp) == NULL) { + if (llfind(wordlist, wl->object, + (int (*)(const void *, const void *)) strcmp + ) == NULL) { wordlist = lladd(wordlist, strdup(wl->object)); } }