summaryrefslogtreecommitdiff
path: root/amiga/dt_picture.c
diff options
context:
space:
mode:
authorChris Young <chris@unsatisfactorysoftware.co.uk>2011-05-09 22:11:18 +0000
committerChris Young <chris@unsatisfactorysoftware.co.uk>2011-05-09 22:11:18 +0000
commit1f1fe78c17da956739061eee22fc91d6e40fb85a (patch)
tree6ec5888b424b15f420059b9f7887b7f7c67d9156 /amiga/dt_picture.c
parent3276ce5db94774c1afa3e6683f706023551a2dd8 (diff)
downloadnetsurf-1f1fe78c17da956739061eee22fc91d6e40fb85a.tar.gz
netsurf-1f1fe78c17da956739061eee22fc91d6e40fb85a.tar.bz2
New style MIME typing; maps MIME types to DataTypes and DefIcon format names.
Currently only able to resolve DataTypes to MIME Types. TODO: - DT MIME type guessing needs mostly removing (only use if no matches in mimetypes file) - Migrate the rest of filetype.c to the new format (can filetype using icon.library and reverse lookup MIME type, for example) - Use to distinguish between CONTENT_IMAGE types - Simplify so DefIcon type defaults to lowercase DataType name svn path=/trunk/netsurf/; revision=12360
Diffstat (limited to 'amiga/dt_picture.c')
-rw-r--r--amiga/dt_picture.c85
1 files changed, 15 insertions, 70 deletions
diff --git a/amiga/dt_picture.c b/amiga/dt_picture.c
index 6866545f5..c86d5321e 100644
--- a/amiga/dt_picture.c
+++ b/amiga/dt_picture.c
@@ -70,72 +70,6 @@ static const content_handler amiga_dt_picture_content_handler = {
.no_share = false,
};
-nserror amiga_dt_picture_init_from_mime(void)
-{
- lwc_string *type;
- lwc_error lerror;
- nserror error;
- char buffer[256];
- BPTR fh = 0;
- struct RDArgs *rargs = NULL;
- STRPTR template = "MIMETYPE/A,DEFICON/K,DTPICTURE/S,DTANIM/S,PLUGINCMD/K";
- long rarray[] = {0,0,0,0,0};
-
- enum
- {
- A_MIMETYPE,
- A_DEFICON,
- A_DTPICTURE,
- A_DTANIM,
- A_PLUGINCMD
- };
-
- rargs = AllocDosObjectTags(DOS_RDARGS,TAG_DONE);
-
- if(fh = FOpen("PROGDIR:Resources/mimetypes", MODE_OLDFILE, 0))
- {
- while(FGets(fh, (UBYTE *)&buffer, 256) != 0)
- {
- rargs->RDA_Source.CS_Buffer = (char *)&buffer;
- rargs->RDA_Source.CS_Length = 256;
- rargs->RDA_Source.CS_CurChr = 0;
-
- rargs->RDA_DAList = NULL;
- rargs->RDA_Buffer = NULL;
- rargs->RDA_BufSiz = 0;
- rargs->RDA_ExtHelp = NULL;
- rargs->RDA_Flags = 0;
-
- rarray[A_DTPICTURE] = 0;
-
-printf("buffer = %s\n", buffer);
- if(ReadArgs(template, rarray, rargs))
- {
- if(rarray[A_DTPICTURE])
- {
-printf("mime = %s\n", rarray[A_MIMETYPE]);
-
- lerror = lwc_intern_string((char *)rarray[A_MIMETYPE],
- strlen((char *)rarray[A_MIMETYPE]), &type);
- if (lerror != lwc_error_ok)
- return NSERROR_NOMEM;
-
- error = content_factory_register_handler(type,
- &amiga_dt_picture_content_handler);
-
- lwc_string_unref(type);
-
- if (error != NSERROR_OK)
- return error;
- }
- }
- }
- FClose(fh);
- }
-
- return NSERROR_OK;
-}
-
nserror amiga_dt_picture_init(void)
{
@@ -145,6 +79,7 @@ nserror amiga_dt_picture_init(void)
lwc_error lerror;
nserror error;
BPTR fh = 0;
+ struct Node *node;
while((dt = ObtainDataType(DTST_RAM, NULL,
DTA_DataType, prevdt,
@@ -169,14 +104,24 @@ nserror amiga_dt_picture_init(void)
if (error != NSERROR_OK)
return error;
+ do {
+ node = ami_mime_from_datatype(dt, &type, node);
+
+ if(node)
+ {
+ error = content_factory_register_handler(type,
+ &amiga_dt_picture_content_handler);
+
+ if (error != NSERROR_OK)
+ return error;
+ }
+
+ }while (node != NULL);
+
}
ReleaseDataType(prevdt);
- error = amiga_dt_picture_init_from_mime();
- if (error != NSERROR_OK)
- return error;
-
return NSERROR_OK;
}