/*
* wordlist.c - Routines for manipulating word lists
*
- * Jonathan McDowell <noodles@earth.li>
+ * Copyright 2004 Jonathan McDowell <noodles@earth.li>
*
- * 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.1 2004/05/27 03:34:35 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 <ctype.h>
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++;
}
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);
}
}
}
struct ll *makewordlistfromkey(struct ll *wordlist,
struct openpgp_publickey *key)
{
- char **uids;
- int i;
+ char **uids;
+ int i;
+ struct ll *words = NULL;
+ struct ll *wl = NULL;
uids = keyuids(key, NULL);
for (i = 0; uids[i] != NULL; ++i) {
- wordlist = makewordlist(wordlist, uids[i]);
+ words = makewordlist(NULL, uids[i]);
+ for (wl = words; wl != NULL; wl = wl->next) {
+ if (llfind(wordlist, wl->object,
+ (int (*)(const void *, const void *)) strcmp
+ ) == NULL) {
+ wordlist = lladd(wordlist, strdup(wl->object));
+ }
+ }
free(uids[i]);
uids[i] = NULL;
}