-
-#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();
+