// 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 return MIMEResult; }