Implement z_HTTP_header_remove
authorAdam Dickmeiss <adam@indexdata.dk>
Tue, 11 Jun 2013 11:04:30 +0000 (13:04 +0200)
committerAdam Dickmeiss <adam@indexdata.dk>
Tue, 11 Jun 2013 11:04:30 +0000 (13:04 +0200)
include/yaz/zgdu.h
src/http.c

index 5ce5e47..38f4df3 100644 (file)
@@ -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);
 
index e4eecb9..6819e5f 100644 (file)
@@ -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)