X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;f=source%2Fcommon%2Fmime.cpp;h=5db593c64bb1e3b4f035f93cc16f9c82449386fc;hb=969329975a0af9d346c76dc34e9ff9cd54cc61ee;hp=4dc720d11142b90e8343a55e3ec02d322ae3df8a;hpb=45729fca56479bd9158486e0cda0c4a94b4dd1dc;p=xestiaab%2F.git diff --git a/source/common/mime.cpp b/source/common/mime.cpp index 4dc720d..5db593c 100644 --- a/source/common/mime.cpp +++ b/source/common/mime.cpp @@ -1,45 +1,83 @@ #include wxString GetMIME(wxString FilenameInc){ - - wxString MIMEResult; - -#ifdef __WIN32__ - -#include - - /*char *; - unsigned long Buffersize; - FindMimeFromData(NULL, NULL, , , NULL, FMFD_DEFAULT, , 0);*/ - + + wxString MIMEResult; + + // Check if file exists first before doing anything with it. + + if (!wxFileExists(FilenameInc)){ + + // File doesn't exist so return. + + wxMessageBox(_("The file with the filename given doesn't exist."), _("Error opening picture/audio file"), wxICON_ERROR); + return wxEmptyString; + + } + +#if defined(__WIN32__) + + // TODO: Sort out Win32. + +#elif defined(__APPLE__) + +#include + + FILE *MIMEIn; + + char MIMEData[512]; + + // Build Command Line. + + wxString FilenameIncEscaped = FilenameInc; + FilenameIncEscaped.Replace(wxT(" "), wxT("\\ ")); + wxString FileCommandLine; + + FileCommandLine.Append("file -b --mime-type "); + FileCommandLine.Append(FilenameIncEscaped); + + if (!(MIMEIn = popen(FileCommandLine.mb_str(), "r"))){ + + wxMessageBox(_("The file with the filename given doesn't exist."), _("Error opening picture/audio file"), wxICON_ERROR); + return wxEmptyString; + + } + + while(fgets(MIMEData, sizeof(MIMEData), MIMEIn) != NULL){ + MIMEResult.Append(wxString::FromUTF8(MIMEData)); + } + pclose(MIMEIn); + + MIMEResult.Trim(); + #else - + #include - - const char *MIMEType; - magic_t MagicCookie = magic_open(MAGIC_MIME); - magic_setflags(MagicCookie, MAGIC_MIME_TYPE); - - if (!MagicCookie){ - - wxMessageBox(_("An error occured with the support library for getting the picture/audio type."), _("Error opening picture/audio file"), wxICON_ERROR); - return; - - } - - if (magic_load(MagicCookie, NULL) != 0) { - - wxMessageBox(_("An error occured whilst determining the picture/audio type."), _("Error opening picture/audio file"), wxICON_ERROR); - return; - - } - - MIMEType = magic_file(MagicCookie, FilenameInc.mb_str()); - MIMEResult = wxString::FromUTF8(MIMEType); - magic_close(MagicCookie); - + + const char *MIMEType; + magic_t MagicCookie = magic_open(MAGIC_MIME); + magic_setflags(MagicCookie, MAGIC_MIME_TYPE); + + if (!MagicCookie){ + + wxMessageBox(_("An error occured with the support library for getting the picture/audio type."), _("Error opening picture/audio file"), wxICON_ERROR); + return wxEmptyString; + + } + + if (magic_load(MagicCookie, NULL) != 0) { + + wxMessageBox(_("An error occured whilst determining the picture/audio type."), _("Error opening picture/audio file"), wxICON_ERROR); + return wxEmptyString; + + } + + MIMEType = magic_file(MagicCookie, FilenameInc.mb_str()); + MIMEResult = wxString::FromUTF8(MIMEType); + magic_close(MagicCookie); + #endif - - return MIMEResult; - + + return MIMEResult; + } \ No newline at end of file