diff options
author | Chris Young <chris@unsatisfactorysoftware.co.uk> | 2011-05-08 22:59:48 +0000 |
---|---|---|
committer | Chris Young <chris@unsatisfactorysoftware.co.uk> | 2011-05-08 22:59:48 +0000 |
commit | 034ac2e7f75f679c0374555ab3fa681fdf72af4c (patch) | |
tree | 760c15a92e3689292048a9b9ed0924d43995cc49 /amiga | |
parent | 813c115cb5c9757ee655547b5492478e8699f36c (diff) | |
download | netsurf-034ac2e7f75f679c0374555ab3fa681fdf72af4c.tar.gz netsurf-034ac2e7f75f679c0374555ab3fa681fdf72af4c.tar.bz2 |
Beginnings of some more advanced mimetyping
svn path=/trunk/netsurf/; revision=12323
Diffstat (limited to 'amiga')
-rw-r--r-- | amiga/dt_picture.c | 91 | ||||
-rwxr-xr-x | amiga/pkg/makepackage | 1 | ||||
-rwxr-xr-x | amiga/pkg/makereslinks | 2 | ||||
-rw-r--r-- | amiga/resources/mimetypes | 7 |
4 files changed, 78 insertions, 23 deletions
diff --git a/amiga/dt_picture.c b/amiga/dt_picture.c index c225d35b3..c3828d8f5 100644 --- a/amiga/dt_picture.c +++ b/amiga/dt_picture.c @@ -78,6 +78,73 @@ static const content_handler amiga_dt_picture_content_handler = { 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) { char dt_mime[50]; @@ -114,28 +181,10 @@ nserror amiga_dt_picture_init(void) ReleaseDataType(prevdt); - if(fh = FOpen("PROGDIR:Resources/MIME/dt.picture", MODE_OLDFILE, 0)) - { - while(FGets(fh, (UBYTE *)&dt_mime, 50) != 0) - { - dt_mime[strlen(dt_mime) - 1] = '\0'; - if((dt_mime[0] == '\0') || (dt_mime[0] == '#')) - continue; /* Skip blank lines and comments */ - - lerror = lwc_intern_string(dt_mime, strlen(dt_mime), &type); - if (lerror != lwc_error_ok) - return NSERROR_NOMEM; - - error = content_factory_register_handler(type, - &amiga_dt_picture_content_handler); - - lwc_string_unref(type); + error = amiga_dt_picture_init_from_mime(); + if (error != NSERROR_OK) + return error; - if (error != NSERROR_OK) - return error; - } - FClose(fh); - } return NSERROR_OK; } diff --git a/amiga/pkg/makepackage b/amiga/pkg/makepackage index 6669cd112..5a2828a7a 100755 --- a/amiga/pkg/makepackage +++ b/amiga/pkg/makepackage @@ -11,7 +11,6 @@ delete ram:netsurf/resources/cookies delete ram:netsurf/resources/urls delete ram:netsurf/resources/options copy resources/Pointers/~(.svn) ram:NetSurf/Resources/Pointers -copy resources/MIME/~(.svn) ram:NetSurf/Resources/MIME copy (COPYING|ChangeLog) ram:NetSurf/ copy NetSurf ram:NetSurf/NetSurf copy NetSurf-Cairo ram:NetSurf/NetSurf-Cairo diff --git a/amiga/pkg/makereslinks b/amiga/pkg/makereslinks index c995eeb76..528c7d327 100755 --- a/amiga/pkg/makereslinks +++ b/amiga/pkg/makereslinks @@ -19,4 +19,4 @@ makelink Pointers /amiga/resources/Pointers soft makelink quirks.css /!NetSurf/Resources/Quirks,f79 soft makelink SearchEngines /amiga/resources/SearchEngines soft makelink Themes /amiga/resources/Themes soft -makelink MIME /amiga/resources/MIME soft +makelink mimetypes /amiga/resources/mimetypes soft diff --git a/amiga/resources/mimetypes b/amiga/resources/mimetypes new file mode 100644 index 000000000..8f9c0b3e0 --- /dev/null +++ b/amiga/resources/mimetypes @@ -0,0 +1,7 @@ +; mimetypes +; this file is parsed using readargs +; +image/mng DTPICTURE +image/x-mng DTPICTURE +video/mng DTPICTURE +video/x-mng DTPICTURE |