Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
Added code so that OSX is now supported.
[xestiaab/.git] / source / common / mime.cpp
index 4dc720d..5db593c 100644 (file)
@@ -1,45 +1,83 @@
 #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.
+    
+#elif defined(__APPLE__)
+    
+#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();
+    
 #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);
-
+    
+    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
Xestia Software Development
Yn Maystri
© 2006 - 2019 Xestia Software Development
Software

Xestia Address Book
Xestia Calendar
Development

Xestia Gelforn
Everything else

About
News
Privacy Policy