From: Adam Dickmeiss Date: Tue, 11 Jun 2013 11:04:30 +0000 (+0200) Subject: Implement z_HTTP_header_remove X-Git-Tag: v4.2.59~1 X-Git-Url: http://sru.miketaylor.org.uk/?a=commitdiff_plain;h=eeec1fcf0dad0e7d431c2494c8e65560563f3aae;p=yaz-moved-to-github.git Implement z_HTTP_header_remove --- diff --git a/include/yaz/zgdu.h b/include/yaz/zgdu.h index 5ce5e47..38f4df3 100644 --- a/include/yaz/zgdu.h +++ b/include/yaz/zgdu.h @@ -84,8 +84,10 @@ YAZ_EXPORT void z_HTTP_header_add_content_type(ODR o, Z_HTTP_Header **hp, YAZ_EXPORT void z_HTTP_header_add_basic_auth(ODR o, Z_HTTP_Header **hp, const char *username, const char *password); - -YAZ_EXPORT const char *z_HTTP_header_lookup(const Z_HTTP_Header *hp, const char *n); +YAZ_EXPORT const char *z_HTTP_header_lookup(const Z_HTTP_Header *hp, + const char *n); +YAZ_EXPORT const char *z_HTTP_header_remove(Z_HTTP_Header **hp, + const char *n); YAZ_EXPORT const char *z_HTTP_errmsg(int code); diff --git a/src/http.c b/src/http.c index e4eecb9..6819e5f 100644 --- a/src/http.c +++ b/src/http.c @@ -219,6 +219,21 @@ void z_HTTP_header_set(ODR o, Z_HTTP_Header **hp, const char *n, (*hp)->next = 0; } +const char *z_HTTP_header_remove(Z_HTTP_Header **hp, const char *n) +{ + while (*hp) + { + if (!yaz_strcasecmp((*hp)->name, n)) + { + const char *v = (*hp)->value; + *hp = (*hp)->next; + return v; + } + hp = &(*hp)->next; + } + return 0; +} + const char *z_HTTP_header_lookup(const Z_HTTP_Header *hp, const char *n) { for (; hp; hp = hp->next)