X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;ds=sidebyside;f=source%2Fcommon%2Fmime.cpp;h=dad636514f240a53df33e9aacfafae96d349c57d;hb=0a1c59d74f2ed87b2d374d266cd237a250f726c7;hp=4dc720d11142b90e8343a55e3ec02d322ae3df8a;hpb=45729fca56479bd9158486e0cda0c4a94b4dd1dc;p=xestiaab%2F.git
diff --git a/source/common/mime.cpp b/source/common/mime.cpp
index 4dc720d..dad6365 100644
--- a/source/common/mime.cpp
+++ b/source/common/mime.cpp
@@ -1,45 +1,103 @@
+// 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
+
#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.
+
#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);
-
+
+#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();
+
#endif
-
- return MIMEResult;
-
+
+/*#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 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