summaryrefslogtreecommitdiff
path: root/amiga/filetype.c
diff options
context:
space:
mode:
authorChris Young <chris@unsatisfactorysoftware.co.uk>2016-01-16 00:00:57 +0000
committerChris Young <chris@unsatisfactorysoftware.co.uk>2016-01-16 00:00:57 +0000
commit46f181b3488ddc1b8d11f2bf89327bb49ad4955c (patch)
tree85ea9f7ced7c954b2d085f2ae6e352d35d05692f /amiga/filetype.c
parent673f3e6887586c31e3f2507c6fd021c1e2c07209 (diff)
downloadnetsurf-46f181b3488ddc1b8d11f2bf89327bb49ad4955c.tar.gz
netsurf-46f181b3488ddc1b8d11f2bf89327bb49ad4955c.tar.bz2
More font-related tidy-up
Diffstat (limited to 'amiga/filetype.c')
-rw-r--r--amiga/filetype.c93
1 files changed, 50 insertions, 43 deletions
diff --git a/amiga/filetype.c b/amiga/filetype.c
index 4419d712f..39058b41c 100644
--- a/amiga/filetype.c
+++ b/amiga/filetype.c
@@ -164,6 +164,15 @@ const char *ami_content_type_to_file_type(content_type type)
}
}
+static void ami_mime_entry_free(void *nso)
+{
+ struct ami_mime_entry *mimeentry = (struct ami_mime_entry *)nso;
+
+ if(mimeentry->mimetype) lwc_string_unref(mimeentry->mimetype);
+ if(mimeentry->datatype) lwc_string_unref(mimeentry->datatype);
+ if(mimeentry->filetype) lwc_string_unref(mimeentry->filetype);
+ if(mimeentry->plugincmd) lwc_string_unref(mimeentry->plugincmd);
+}
nserror ami_mime_init(const char *mimefile)
{
@@ -205,40 +214,42 @@ nserror ami_mime_init(const char *mimefile)
if(ReadArgs(template, rarray, rargs))
{
- node = AddObject(ami_mime_list, AMINS_MIME);
- mimeentry = ami_misc_allocvec_clear(sizeof(struct ami_mime_entry), 0);
- node->objstruct = mimeentry;
-
- if(rarray[AMI_MIME_MIMETYPE])
- {
- lerror = lwc_intern_string((char *)rarray[AMI_MIME_MIMETYPE],
- strlen((char *)rarray[AMI_MIME_MIMETYPE]), &mimeentry->mimetype);
- if (lerror != lwc_error_ok)
- return NSERROR_NOMEM;
- }
-
- if(rarray[AMI_MIME_DATATYPE])
- {
- lerror = lwc_intern_string((char *)rarray[AMI_MIME_DATATYPE],
- strlen((char *)rarray[AMI_MIME_DATATYPE]), &mimeentry->datatype);
- if (lerror != lwc_error_ok)
- return NSERROR_NOMEM;
- }
-
- if(rarray[AMI_MIME_FILETYPE])
- {
- lerror = lwc_intern_string((char *)rarray[AMI_MIME_FILETYPE],
- strlen((char *)rarray[AMI_MIME_FILETYPE]), &mimeentry->filetype);
- if (lerror != lwc_error_ok)
- return NSERROR_NOMEM;
- }
-
- if(rarray[AMI_MIME_PLUGINCMD])
- {
- lerror = lwc_intern_string((char *)rarray[AMI_MIME_PLUGINCMD],
- strlen((char *)rarray[AMI_MIME_PLUGINCMD]), &mimeentry->plugincmd);
- if (lerror != lwc_error_ok)
- return NSERROR_NOMEM;
+ if ((node = AddObject(ami_mime_list, AMINS_MIME))) {
+ ObjectCallback(node, ami_mime_entry_free);
+ mimeentry = ami_misc_allocvec_clear(sizeof(struct ami_mime_entry), 0);
+ node->objstruct = mimeentry;
+
+ if(rarray[AMI_MIME_MIMETYPE])
+ {
+ lerror = lwc_intern_string((char *)rarray[AMI_MIME_MIMETYPE],
+ strlen((char *)rarray[AMI_MIME_MIMETYPE]), &mimeentry->mimetype);
+ if (lerror != lwc_error_ok)
+ return NSERROR_NOMEM;
+ }
+
+ if(rarray[AMI_MIME_DATATYPE])
+ {
+ lerror = lwc_intern_string((char *)rarray[AMI_MIME_DATATYPE],
+ strlen((char *)rarray[AMI_MIME_DATATYPE]), &mimeentry->datatype);
+ if (lerror != lwc_error_ok)
+ return NSERROR_NOMEM;
+ }
+
+ if(rarray[AMI_MIME_FILETYPE])
+ {
+ lerror = lwc_intern_string((char *)rarray[AMI_MIME_FILETYPE],
+ strlen((char *)rarray[AMI_MIME_FILETYPE]), &mimeentry->filetype);
+ if (lerror != lwc_error_ok)
+ return NSERROR_NOMEM;
+ }
+
+ if(rarray[AMI_MIME_PLUGINCMD])
+ {
+ lerror = lwc_intern_string((char *)rarray[AMI_MIME_PLUGINCMD],
+ strlen((char *)rarray[AMI_MIME_PLUGINCMD]), &mimeentry->plugincmd);
+ if (lerror != lwc_error_ok)
+ return NSERROR_NOMEM;
+ }
}
FreeArgs(rargs);
}
@@ -256,15 +267,6 @@ void ami_mime_free(void)
FreeObjList(ami_mime_list);
}
-void ami_mime_entry_free(struct ami_mime_entry *mimeentry)
-{
- if(mimeentry->mimetype) lwc_string_unref(mimeentry->mimetype);
- if(mimeentry->datatype) lwc_string_unref(mimeentry->datatype);
- if(mimeentry->filetype) lwc_string_unref(mimeentry->filetype);
- if(mimeentry->plugincmd) lwc_string_unref(mimeentry->plugincmd);
-}
-
-
/**
* Return next matching MIME entry
*
@@ -356,8 +358,13 @@ static APTR ami_mime_guess_add_datatype(struct DataType *dt, lwc_string **lwc_mi
char *p;
node = AddObject(ami_mime_list, AMINS_MIME);
+ if(node == NULL) return NULL;
+
mimeentry = ami_misc_allocvec_clear(sizeof(struct ami_mime_entry), 0);
+ if(mimeentry == NULL) return NULL;
+
node->objstruct = mimeentry;
+ ObjectCallback(node, ami_mime_entry_free);
lerror = lwc_intern_string(dth->dth_Name, strlen(dth->dth_Name), &mimeentry->datatype);
if (lerror != lwc_error_ok)