X-Git-Url: https://git.sommitrealweird.co.uk/onak.git/blobdiff_plain/46c27e2883a78388c895dc883dbb9b902fc8350d..408ea0b9ceafdc9f861701cfb14b57d09aa47777:/wordlist.c?ds=inline diff --git a/wordlist.c b/wordlist.c index 0a9a836..791c55d 100644 --- a/wordlist.c +++ b/wordlist.c @@ -4,8 +4,6 @@ * Jonathan McDowell * * Copyright 2004 Project Purple - * - * $Id: wordlist.c,v 1.1 2004/05/27 03:34:35 noodles Exp $ */ #include @@ -42,11 +40,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 +54,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); } } } @@ -80,12 +80,21 @@ struct ll *makewordlist(struct ll *wordlist, char *word) 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; }