diff options
author | Thomas E. Dickey <dickey@invisible-island.net> | 2012-02-20 02:08:17 -0500 |
---|---|---|
committer | Thomas E. Dickey <dickey@invisible-island.net> | 2012-02-20 02:08:17 -0500 |
commit | bc0fa578036583231edb567b328b4f69ce6860fe (patch) | |
tree | 99b322070bf62270218a0d80257a1f50bbefe147 /WWW/Library/Implementation/HTAssoc.c | |
parent | bb5fd6e44e480f571bcb713788cc50eea44095e5 (diff) | |
download | lynx-snapshots-bc0fa578036583231edb567b328b4f69ce6860fe.tar.gz |
snapshot of project "lynx", label v2-8-8dev_11
Diffstat (limited to 'WWW/Library/Implementation/HTAssoc.c')
-rw-r--r-- | WWW/Library/Implementation/HTAssoc.c | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/WWW/Library/Implementation/HTAssoc.c b/WWW/Library/Implementation/HTAssoc.c new file mode 100644 index 00000000..22c1126c --- /dev/null +++ b/WWW/Library/Implementation/HTAssoc.c @@ -0,0 +1,84 @@ +/* + * $LynxId: HTAssoc.c,v 1.10 2010/04/29 09:34:03 tom Exp $ + * + * MODULE HTAssoc.c + * ASSOCIATION LIST FOR STORING NAME-VALUE PAIRS. + * NAMES NOT CASE SENSITIVE, AND ONLY COMMON LENGTH + * IS CHECKED (allows abbreviations; well, length is + * taken from lookup-up name, so if table contains + * a shorter abbrev it is not found). + * AUTHORS: + * AL Ari Luotonen luotonen@dxcern.cern.ch + * + * HISTORY: + * + * + * BUGS: + * + * + */ + +#include <HTUtils.h> + +#include <HTAssoc.h> + +#include <LYLeaks.h> + +HTAssocList *HTAssocList_new(void) +{ + return HTList_new(); +} + +void HTAssocList_delete(HTAssocList *alist) +{ + if (alist) { + HTAssocList *cur = alist; + HTAssoc *assoc; + + while (NULL != (assoc = (HTAssoc *) HTList_nextObject(cur))) { + FREE(assoc->name); + FREE(assoc->value); + FREE(assoc); + } + HTList_delete(alist); + alist = NULL; + } +} + +void HTAssocList_add(HTAssocList *alist, + const char *name, + const char *value) +{ + HTAssoc *assoc; + + if (alist) { + if (!(assoc = (HTAssoc *) malloc(sizeof(HTAssoc)))) + outofmem(__FILE__, "HTAssoc_add"); + + assert(assoc != NULL); + + assoc->name = NULL; + assoc->value = NULL; + + if (name) + StrAllocCopy(assoc->name, name); + if (value) + StrAllocCopy(assoc->value, value); + HTList_addObject(alist, (void *) assoc); + } else { + CTRACE((tfp, "HTAssoc_add: ERROR: assoc list NULL!!\n")); + } +} + +char *HTAssocList_lookup(HTAssocList *alist, + const char *name) +{ + HTAssocList *cur = alist; + HTAssoc *assoc; + + while (NULL != (assoc = (HTAssoc *) HTList_nextObject(cur))) { + if (!strncasecomp(assoc->name, name, (int) strlen(name))) + return assoc->value; + } + return NULL; +} |