summaryrefslogtreecommitdiff
path: root/amiga/dt_picture.c
diff options
context:
space:
mode:
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;
}