summaryrefslogtreecommitdiff
path: root/amiga
diff options
context:
space:
mode:
authorChris Young <chris@unsatisfactorysoftware.co.uk>2011-05-08 22:59:48 +0000
committerChris Young <chris@unsatisfactorysoftware.co.uk>2011-05-08 22:59:48 +0000
commit034ac2e7f75f679c0374555ab3fa681fdf72af4c (patch)
tree760c15a92e3689292048a9b9ed0924d43995cc49 /amiga
parent813c115cb5c9757ee655547b5492478e8699f36c (diff)
downloadnetsurf-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.c91
-rwxr-xr-xamiga/pkg/makepackage1
-rwxr-xr-xamiga/pkg/makereslinks2
-rw-r--r--amiga/resources/mimetypes7
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