// 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; // 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 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 /*#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; }