/
/ File: mime_table.c
/
/ Description: Kernel module implementing kernel-space mime_table API
/
/ Copyright 2004, FranΓ§ois Revol.
/
*******************************************************************************/
#include <Drivers.h>
#include <KernelExport.h>
#include <string.h>
#include <stdlib.h>
#include <mime_table.h>
extern struct ext_mime mimes[];
#if DEBUG > 0
#define ddprintf(x) dprintf x
#else
#define ddprintf(x)
#endif
const char mime_table_module_name[] = B_MIME_TABLE_MODULE_NAME;
static status_t
std_ops(int32 op, ...)
{
switch(op) {
case B_MODULE_INIT:
return B_OK;
case B_MODULE_UNINIT:
return B_OK;
default:
;
}
return -1;
}
status_t get_table(struct ext_mime **table)
{
if (!table)
return EINVAL;
*table = mimes;
return B_OK;
}
void free_table(struct ext_mime *table)
{
}
const char *mime_for_ext(const char *ext)
{
int i;
for (i = 0; mimes[i].extension; i++) {
if (!strcmp(ext, mimes[i].extension))
return mimes[i].mime;
}
return NULL;
}
const char *ext_for_mime(const char *mime)
{
int i;
for (i = 0; mimes[i].mime; i++) {
if (!strcmp(mime, mimes[i].mime))
return mimes[i].extension;
}
return NULL;
}
static mime_table_module_info mime_table = {
{
mime_table_module_name,
0,
std_ops
},
get_table,
free_table,
mime_for_ext,
ext_for_mime
};
_EXPORT mime_table_module_info *modules[] = {
&mime_table,
NULL
};