+// mime.cpp - MIME subroutines.
+//
+// (c) 2012-2015 Xestia Software Development.
+//
+// This file is part of Xestia Address Book.
+//
+// Xestia Address Book is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by the
+// Free Software Foundation, version 3 of the license.
+//
+// Xestia Address Book is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with Xestia Address Book. If not, see <http://www.gnu.org/licenses/>
+
#include <wx/wx.h>
wxString GetMIME(wxString FilenameInc){
- wxString MIMEResult;
+ wxString MIMEResult;
- // Check if file exists first before doing anything with it.
+ // Check if file exists first before doing anything with it.
- if (!wxFileExists(FilenameInc)){
+ if (!wxFileExists(FilenameInc)){
- // File doesn't exist so return.
+ // 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;
+ 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.
+ // TODO: Sort out Win32.
-#elif defined(__APPLE__)
+#else
#include <stdio.h>
- FILE *MIMEIn;
+ FILE *MIMEIn;
- char MIMEData[512];
+ char MIMEData[512];
- // Build Command Line.
+ // Build Command Line.
- wxString FilenameIncEscaped = FilenameInc;
- FilenameIncEscaped.Replace(wxT(" "), wxT("\\ "));
- wxString FileCommandLine;
+ wxString FilenameIncEscaped = FilenameInc;
+ FilenameIncEscaped.Replace(wxT(" "), wxT("\\ "));
+ wxString FileCommandLine;
- FileCommandLine.Append("file -b --mime-type ");
- FileCommandLine.Append(FilenameIncEscaped);
+ FileCommandLine.Append("file -b --mime-type ");
+ FileCommandLine.Append(FilenameIncEscaped);
- if (!(MIMEIn = popen(FileCommandLine.mb_str(), "r"))){
+ 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;
+ 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 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;
-
- }
+ while(fgets(MIMEData, sizeof(MIMEData), MIMEIn) != NULL){
+ MIMEResult.Append(wxString::FromUTF8(MIMEData));
+ }
+ pclose(MIMEIn);
- MIMEType = magic_file(MagicCookie, FilenameInc.mb_str());
- MIMEResult = wxString::FromUTF8(MIMEType);
- magic_close(MagicCookie);
+ MIMEResult.Trim();
#endif
- return MIMEResult;
+ return MIMEResult;
}
\ No newline at end of file