http server v0.1_mime.c

#include <string.h>
#include "mime.h"


static STR_MIME_MAP mime_map[]= { MIME_MAP(MIME_STR_GEN) };

void get_mime_type(const char* filename, EN_MIME_TYPE* filetype)
{
    int i     =0; 
    for(i=0; i<= MIME_ELSE; i++)
    {
        if(strstr(filename, mime_map[i].extension))
        {
            *filetype = (EN_MIME_TYPE)i;
            break;
        }
        if( i == MIME_ELSE)
            *filetype = MIME_ELSE;
    }
    
}

char* get_resp_type(EN_MIME_TYPE filetype)
{
    if(filetype > MIME_ELSE || filetype < 0)
        return NULL;
        
    return  mime_map[filetype].mimetype;
}
#ifndef __MIME__H
#define __MIME__H


#define MIME_MAP(xx)\
    xx(HTML,     ".html",    "text/html\n")\
    xx(HTM,         ".htm",         "text/html\n")\
    xx(XML,         ".xml",         "text/xml\n")\
    xx(IMAGE_GIF,     ".gif",        "image/gif\n")\
    xx(IMAGE_JPG,     ".jpg",        "image/jpeg\n")\
    xx(IMAGE_PNG,     ".png",        "image/png\n")\
    xx(TEXT,       ".txt",         "text/html\n")\
    xx(MP3,        ".mp3",         "audio/x-mpeg\n")\
    xx(ELSE,    "*",        "text/plain\n")\

#define MIME_ENUM_GEN(n, s, t) MIME_##n,

#define MIME_STR_GEN(n, s, t)  {MIME_##n, s, t},

typedef enum en_mine_type
{
    MIME_MAP(MIME_ENUM_GEN)
}EN_MIME_TYPE;

typedef struct str_mime_map
{
    EN_MIME_TYPE entype;
    char*         extension;
    char*         mimetype;
}STR_MIME_MAP;

void get_mime_type(const char* filename, EN_MIME_TYPE* filetype);

char* get_resp_type(EN_MIME_TYPE filetype);
//typedef struct str_mime_map STR_MIME_MAP;

#endif

 

转载于:https://www.cnblogs.com/unixshell/p/3519002.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值