diff options
Diffstat (limited to 'content')
-rw-r--r-- | content/fetch.c | 54 | ||||
-rw-r--r-- | content/fetch.h | 24 | ||||
-rw-r--r-- | content/llcache.c | 2 |
3 files changed, 79 insertions, 1 deletions
diff --git a/content/fetch.c b/content/fetch.c index 766502941..2ac86a812 100644 --- a/content/fetch.c +++ b/content/fetch.c @@ -712,6 +712,23 @@ fetch_multipart_data_clone(const struct fetch_multipart_data *list) return result; } + +/* exported interface documented in content/fetch.h */ +const char * +fetch_multipart_data_find(const struct fetch_multipart_data *list, + const char *name) +{ + while (list != NULL) { + if (strcmp(list->name, name) == 0) { + return list->value; + } + list = list->next; + } + + return NULL; +} + + /* exported interface documented in content/fetch.h */ void fetch_multipart_data_destroy(struct fetch_multipart_data *list) { @@ -730,6 +747,43 @@ void fetch_multipart_data_destroy(struct fetch_multipart_data *list) } } + +/* exported interface documented in content/fetch.h */ +nserror +fetch_multipart_data_new_kv(struct fetch_multipart_data **list, + const char *name, + const char *value) +{ + struct fetch_multipart_data *newdata; + + assert(list); + + newdata = calloc(sizeof(*newdata), 1); + + if (newdata == NULL) { + return NSERROR_NOMEM; + } + + newdata->name = strdup(name); + if (newdata->name == NULL) { + free(newdata); + return NSERROR_NOMEM; + } + + newdata->value = strdup(value); + if (newdata->value == NULL) { + free(newdata->name); + free(newdata); + return NSERROR_NOMEM; + } + + newdata->next = *list; + *list = newdata; + + return NSERROR_OK; +} + + /* exported interface documented in content/fetch.h */ void fetch_send_callback(const fetch_msg *msg, struct fetch *fetch) diff --git a/content/fetch.h b/content/fetch.h index 174e07bf6..7c02fb0d7 100644 --- a/content/fetch.h +++ b/content/fetch.h @@ -185,6 +185,30 @@ void fetch_multipart_data_destroy(struct fetch_multipart_data *list); struct fetch_multipart_data *fetch_multipart_data_clone(const struct fetch_multipart_data *list); /** + * Find an entry in a fetch_multipart_data + * + * \param list Pointer to the multipart list + * \param name The name to look for in the list + * \return The value found, or NULL if not present + */ +const char *fetch_multipart_data_find(const struct fetch_multipart_data *list, + const char *name); + +/** + * Create an entry for a fetch_multipart_data + * + * If an entry exists of the same name, it will *NOT* be overwritten + * + * \param list Pointer to the pointer to the current multipart list + * \param name The name of the entry to create + * \param value The value of the entry to create + * \return The result of the attempt + */ +nserror fetch_multipart_data_new_kv(struct fetch_multipart_data **list, + const char *name, + const char *value); + +/** * send message to fetch */ void fetch_send_callback(const fetch_msg *msg, struct fetch *fetch); diff --git a/content/llcache.c b/content/llcache.c index 07533f15e..f209fabf0 100644 --- a/content/llcache.c +++ b/content/llcache.c @@ -2290,7 +2290,7 @@ static nserror llcache_fetch_auth(llcache_object *object, const char *realm) event.type = LLCACHE_EVENT_ERROR; /** \todo More appropriate error message */ event.data.error.code = NSERROR_BAD_AUTH; - event.data.error.msg = messages_get("FetchFailed"); + event.data.error.msg = realm; error = llcache_send_event_to_users(object, &event); } else { |