diff options
author | Chris Young <chris@unsatisfactorysoftware.co.uk> | 2011-05-09 22:11:18 +0000 |
---|---|---|
committer | Chris Young <chris@unsatisfactorysoftware.co.uk> | 2011-05-09 22:11:18 +0000 |
commit | 1f1fe78c17da956739061eee22fc91d6e40fb85a (patch) | |
tree | 6ec5888b424b15f420059b9f7887b7f7c67d9156 /amiga/dt_picture.c | |
parent | 3276ce5db94774c1afa3e6683f706023551a2dd8 (diff) | |
download | netsurf-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.c | 85 |
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; } |