summaryrefslogtreecommitdiff
path: root/content/content_factory.c
diff options
context:
space:
mode:
authorJohn Mark Bell <jmb@netsurf-browser.org>2011-09-15 22:31:16 +0000
committerJohn Mark Bell <jmb@netsurf-browser.org>2011-09-15 22:31:16 +0000
commit3d71da088b83c2cc5741dfdc8f619fbf2bba55a2 (patch)
tree8c26b93479c4a23b657c55809ea823f7b2bc2ca5 /content/content_factory.c
parent50508a6e75e8bfa955b9193f0b6252ff2e235220 (diff)
downloadnetsurf-3d71da088b83c2cc5741dfdc8f619fbf2bba55a2.tar.gz
netsurf-3d71da088b83c2cc5741dfdc8f619fbf2bba55a2.tar.bz2
Clean up content_factory_register_handler API -- content handlers no longer use the mime type, so don't require it to be interned up front
svn path=/trunk/netsurf/; revision=12796
Diffstat (limited to 'content/content_factory.c')
-rw-r--r--content/content_factory.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/content/content_factory.c b/content/content_factory.c
index 8baa20f7a..3f06dc432 100644
--- a/content/content_factory.c
+++ b/content/content_factory.c
@@ -71,14 +71,20 @@ void content_factory_fini(void)
*
* \note Latest registration for a MIME type wins
*/
-nserror content_factory_register_handler(lwc_string *mime_type,
+nserror content_factory_register_handler(const char *mime_type,
const content_handler *handler)
{
+ lwc_string *imime_type;
+ lwc_error lerror;
content_handler_entry *entry;
bool match;
+ lerror = lwc_intern_string(mime_type, strlen(mime_type), &imime_type);
+ if (lerror != lwc_error_ok)
+ return NSERROR_NOMEM;
+
for (entry = content_handlers; entry != NULL; entry = entry->next) {
- if (lwc_string_caseless_isequal(mime_type, entry->mime_type,
+ if (lwc_string_caseless_isequal(imime_type, entry->mime_type,
&match) == lwc_error_ok && match)
break;
}
@@ -91,7 +97,9 @@ nserror content_factory_register_handler(lwc_string *mime_type,
entry->next = content_handlers;
content_handlers = entry;
- entry->mime_type = lwc_string_ref(mime_type);
+ entry->mime_type = imime_type;
+ } else {
+ lwc_string_unref(imime_type);
}
entry->handler = handler;