/* RISC OS MimeMap interface
   by Stefan Bellon
*/

#include <sys/types.h>
#include <kernel.h>
#include <sys/swis.h>

#define MimeMap_Translate 0x50b00

int riscos_style = 0;
int filetype = 0;

int mimemap_translate_ext2type(char *ext)
{
    _kernel_swi_regs r;
    r.r[0] = 3;
    r.r[1] = (int) ext;
    r.r[2] = 0;
    _kernel_swi(MimeMap_Translate, &r, &r);
    if (r.r[3] > 4095 || r.r[3] < 1)
        return 0;
    return r.r[3];
}

char *gs_trans(const char *string, char *buffer, size_t buf_len)
{
    _kernel_swi_regs r;
    int overflow;
    r.r[0] = (int) string;
    r.r[1] = (int) buffer;
    r.r[2] = (int) buf_len;
    _kernel_swi_c(OS_GSTrans, &r, &r, &overflow);
    if (overflow)
        return NULL;
    return (char *) r.r[0];
}

void set_type(const char *name, int filetype)
{
    _kernel_swi_regs r;
    r.r[0] = 18;
    r.r[1] = (int) name;
    r.r[2] = filetype;
    _kernel_swi(OS_File, &r, &r);
}
