X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;f=source%2Fcommon%2Fmime.cpp;h=dad636514f240a53df33e9aacfafae96d349c57d;hb=735fd842be7625b7fc4d65832dff8e33f6fb463b;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