#include <wx/wx.h>
wxString GetMIME(wxString FilenameInc){
-
- wxString MIMEResult;
-
-#ifdef __WIN32__
-
-#include <urlmon.h>
-
- /*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.
+
#else
-
-#include <magic.h>
-
- 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);
-
+
+#include <stdio.h>
+
+ 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();
+
#endif
-
- return MIMEResult;
-
+
+/*#else
+
+#include <magic.h>
+
+ 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;
+
}
\ No newline at end of file