X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;f=source%2Fcommon%2Fmime.cpp;h=cf571e134274905bcfc749870a3b91d7a3149680;hb=2a30393d59c892349cffec18ec16907c2358fd0f;hp=4dc720d11142b90e8343a55e3ec02d322ae3df8a;hpb=45729fca56479bd9158486e0cda0c4a94b4dd1dc;p=xestiaab%2F.git diff --git a/source/common/mime.cpp b/source/common/mime.cpp index 4dc720d..cf571e1 100644 --- a/source/common/mime.cpp +++ b/source/common/mime.cpp @@ -1,45 +1,75 @@ +// 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);*/ - + + // 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; - + +#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; + } - - if (magic_load(MagicCookie, NULL) != 0) { - - wxMessageBox(_("An error occured whilst determining the picture/audio type."), _("Error opening picture/audio file"), wxICON_ERROR); - return; - + + while(fgets(MIMEData, sizeof(MIMEData), MIMEIn) != NULL){ + MIMEResult.Append(wxString::FromUTF8(MIMEData)); } - - MIMEType = magic_file(MagicCookie, FilenameInc.mb_str()); - MIMEResult = wxString::FromUTF8(MIMEType); - magic_close(MagicCookie); - + pclose(MIMEIn); + + MIMEResult.Trim(); + #endif - + return MIMEResult; - + } \ No newline at end of file