00001
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
#include <libcgi++.h>
00025
#include "Mime.h"
00026
00027
00028
00029
00030 Mime::Mime(
const std::string& filename)
00031 {
00032 FILE *fil;
00033
if ((fil = fopen(filename.c_str(),
"rt")) != NULL)
00034 {
00035
char slask[1000];
00036 fgets(slask,1000,fil);
00037
while (!feof(fil))
00038 {
00039
while (strlen(slask) && (slask[strlen(slask) - 1] == 13 || slask[strlen(slask) - 1] == 10))
00040 {
00041 slask[strlen(slask) - 1] = 0;
00042 }
00043 cgi::Parse pa(slask);
00044 pa.getword(slask);
00045 std::string mime_type = slask;
00046 pa.getword(slask);
00047 std::string ext = slask;
00048
while (ext.size())
00049 {
00050
m_mime[ext] = mime_type;
00051 pa.getword(slask);
00052 ext = slask;
00053 }
00054
00055 fgets(slask,1000,fil);
00056 }
00057 fclose(fil);
00058 }
00059
else
00060 {
00061
00062 }
00063 }
00064
00065
00066 Mime::~Mime()
00067 {
00068 }
00069
00070
00071 std::string
Mime::GetMimeFromExtension(
const std::string& ext)
00072 {
00073 std::string mime =
m_mime[ext];
00074
return mime;
00075 }
00076
00077
00078 std::string
Mime::GetMimeFromFile(
const std::string& name)
00079 {
00080 size_t x = 0;
00081
for (size_t i = 0; i < name.size(); i++)
00082
if (name[i] ==
'.')
00083 x = i;
00084 std::string ext = name.substr(x + 1);
00085
00086
return GetMimeFromExtension(ext);
00087 }
00088
00089