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