wxString sTmp = GetLine(i).AfterFirst(wxT('='));
return sTmp;
}
-
-protected:
- // we override this virtual method because we want to always use UTF-8
- // conversion allowing for invalid characters as MIME information files
- // often contain lines in different encodings and can't be read using any
- // single conversion in Unicode build, so we just try to read what we can
- // suing the most common encoding (UTF-8 is almost ubiquitous nowadays) and
- // ignore the rest
- virtual bool OnRead(const wxMBConv& WXUNUSED(conv))
- {
- return wxTextFile::OnRead(
- wxMBConvUTF8(wxMBConvUTF8::MAP_INVALID_UTF8_TO_PUA));
- }
};
-// in case we're compiling in non-GUI mode
-class WXDLLEXPORT wxIcon;
-
// ----------------------------------------------------------------------------
// constants
// ----------------------------------------------------------------------------
wxString dirname = dirbase;
dirname << wxT("/mime-info");
+ // Don't complain if we don't have permissions to read - it confuses users
+ wxLogNull logNull;
+
if ( !wxDir::Exists(dirname) )
return;
{
wxFileName dirname(dirbase, wxEmptyString);
dirname.AppendDir(subdir);
+
+ // Don't complain if we don't have permissions to read - it confuses users
+ wxLogNull logNull;
+
wxDir dir(dirname.GetPath());
if(! dir.IsOpened())
return;
void wxMimeTypesManagerImpl::LoadKDELinkFilesFromDir(const wxString& dirname,
const wxArrayString& icondirs)
{
+ // Don't complain if we don't have permissions to read - it confuses users
+ wxLogNull logNull;
+
if(! wxDir::Exists(dirname))
return;
wxStringTokenizer tokenizer(mimetypes, _T(";"));
while(tokenizer.HasMoreTokens()) {
wxString mimetype = tokenizer.GetNextToken().Lower();
- int nIndex = m_aTypes.Index(mimetype);
+ nIndex = m_aTypes.Index(mimetype);
if(nIndex != wxNOT_FOUND) { // is this a known MIME type?
wxMimeTypeCommands* entry = m_aEntries[nIndex];
entry->AddOrReplaceVerb(wxT("open"), sCmd);
void wxMimeTypesManagerImpl::LoadKDEAppsFilesFromDir(const wxString& dirname)
{
+ // Don't complain if we don't have permissions to read - it confuses users
+ wxLogNull logNull;
+
if(! wxDir::Exists(dirname))
return;
wxDir dir(dirname);
wxString str;
wxArrayString output;
if(wxExecute(wxT("kde-config --path ")+request, output) == 0 &&
- output.Count() > 0)
+ output.GetCount() > 0)
str = output.Item(0);
return str;
}
static wxString GetKDETheme(const wxArrayString& basedirs)
{
wxString theme;
- for(size_t i = 0; i < basedirs.Count(); i++) {
+ for(size_t i = 0; i < basedirs.GetCount(); i++) {
wxFileName filename(basedirs.Item(i), wxEmptyString);
filename.AppendDir( wxT("share") );
filename.AppendDir( wxT("config") );
}
// If $KDEDIRS and $KDEDIR were set, we try nothing more. Otherwise, we
// try to get the configuration file with 'kde-config'.
- if(basedirs.Count() > 1)
+ if(basedirs.GetCount() > 1)
return theme;
wxString paths = ReadPathFromKDEConfig(wxT("config"));
if(! paths.IsEmpty()) {
if(theme.IsEmpty())
theme = wxT("default.kde");
- for(size_t i = 0; i < basedirs.Count(); i++) {
+ for(size_t i = 0; i < basedirs.GetCount(); i++) {
wxFileName dirname(basedirs.Item(i), wxEmptyString);
dirname.AppendDir( wxT("share") );
dirname.AppendDir( wxT("icons") );
}
// If $KDEDIRS and $KDEDIR were not set, use 'kde-config'
- if(basedirs.Count() > 1)
+ if(basedirs.GetCount() > 1)
return;
wxString paths = ReadPathFromKDEConfig(wxT("icon"));
if(! paths.IsEmpty()) {
static void GetKDEMimeDirs(const wxArrayString& basedirs,
wxArrayString& mimedirs)
{
- for(size_t i = 0; i < basedirs.Count(); i++) {
+ for(size_t i = 0; i < basedirs.GetCount(); i++) {
wxFileName dirname(basedirs.Item(i), wxEmptyString);
dirname.AppendDir( wxT("share") );
dirname.AppendDir( wxT("mimelnk") );
}
// If $KDEDIRS and $KDEDIR were not set, use 'kde-config'
- if(basedirs.Count() > 1)
+ if(basedirs.GetCount() > 1)
return;
wxString paths = ReadPathFromKDEConfig(wxT("mime"));
if(! paths.IsEmpty()) {
static void GetKDEAppsDirs(const wxArrayString& basedirs,
wxArrayString& appsdirs)
{
- for(size_t i = 0; i < basedirs.Count(); i++) {
+ for(size_t i = 0; i < basedirs.GetCount(); i++) {
wxFileName dirname(basedirs.Item(i), wxEmptyString);
dirname.AppendDir( wxT("share") );
dirname.AppendDir( wxT("applnk") );
}
// If $KDEDIRS and $KDEDIR were not set, use 'kde-config'
- if(basedirs.Count() > 1)
+ if(basedirs.GetCount() > 1)
return;
wxString paths = ReadPathFromKDEConfig(wxT("apps"));
if(! paths.IsEmpty()) {
bool wxFileTypeImpl::GetExtensions(wxArrayString& extensions)
{
- wxString strExtensions = m_manager->GetExtension(m_index[0]);
+ const wxString strExtensions = m_manager->GetExtension(m_index[0]);
extensions.Empty();
// one extension in the space or comma-delimited list
wxString strExt;
- for ( const wxChar *p = strExtensions; /* nothing */; p++ )
+ wxString::const_iterator end = strExtensions.end();
+ for ( wxString::const_iterator p = strExtensions.begin(); /* nothing */; ++p )
{
- if ( *p == wxT(' ') || *p == wxT(',') || *p == wxT('\0') )
+ if ( p == end || *p == wxT(' ') || *p == wxT(',') )
{
if ( !strExt.empty() )
{
//else: repeated spaces
// (shouldn't happen, but it's not that important if it does happen)
- if ( *p == wxT('\0') )
+ if ( p == end )
break;
}
else if ( *p == wxT('.') )
wxMimeTypeCommands *entry = new wxMimeTypeCommands();
entry->Add(verb + wxT("=") + cmd + wxT(" %s "));
- bool ok = true;
+ bool ok = false;
size_t nCount = strTypes.GetCount();
for ( size_t i = 0; i < nCount; i++ )
{
- if (!m_manager->DoAssociation(strTypes[i], strIcon, entry, strExtensions, strDesc))
- ok = false;
+ if ( m_manager->DoAssociation
+ (
+ strTypes[i],
+ strIcon,
+ entry,
+ strExtensions,
+ strDesc
+ ) )
+ {
+ // DoAssociation() took ownership of entry, don't delete it below
+ ok = true;
+ }
}
+ if ( !ok )
+ delete entry;
+
return ok;
}
return false;
wxMimeTypeCommands *entry = new wxMimeTypeCommands();
- bool ok = true;
+ bool ok = false;
size_t nCount = strTypes.GetCount();
for ( size_t i = 0; i < nCount; i++ )
{
- if ( !m_manager->DoAssociation
- (
+ if ( m_manager->DoAssociation
+ (
strTypes[i],
strIcon,
entry,
strExtensions,
strDesc
- ) )
+ ) )
{
- ok = false;
+ // we don't need to free entry now, DoAssociation() took ownership
+ // of it
+ ok = true;
}
}
+ if ( !ok )
+ delete entry;
+
return ok;
}
if (mailcapStyles & wxMAILCAP_GNOME)
GetGnomeMimeInfo(sExtraDir);
- // read KDE tables
+ // read KDE tables which are never installed on OpenVMS
+#ifndef __VMS
if (mailcapStyles & wxMAILCAP_KDE)
GetKDEMimeInfo(sExtraDir);
+#endif
m_mailcapStylesInited |= mailcapStyles;
}
}
// check data integrity
- wxASSERT( m_aTypes.Count() == m_aEntries.Count() &&
- m_aTypes.Count() == m_aExtensions.Count() &&
- m_aTypes.Count() == m_aIcons.Count() &&
- m_aTypes.Count() == m_aDescriptions.Count() );
+ wxASSERT( m_aTypes.GetCount() == m_aEntries.GetCount() &&
+ m_aTypes.GetCount() == m_aExtensions.GetCount() &&
+ m_aTypes.GetCount() == m_aIcons.GetCount() &&
+ m_aTypes.GetCount() == m_aDescriptions.GetCount() );
return nIndex;
}
index = wxNOT_FOUND;
wxString strCategory = mimetype.BeforeFirst(wxT('/'));
- size_t nCount = m_aTypes.Count();
+ size_t nCount = m_aTypes.GetCount();
for ( size_t n = 0; n < nCount; n++ )
{
if ( (m_aTypes[n].BeforeFirst(wxT('/')) == strCategory ) &&
}
// is this something of the form foo=bar?
- const wxChar *pEq = wxStrchr(curField, wxT('='));
- if ( pEq != NULL )
+ if ( curField.find('=') != wxString::npos )
{
// split "LHS = RHS" in 2
wxString lhs = curField.BeforeFirst(wxT('=')),
Field_Type,
Field_OpenCmd,
Field_Other
- }
- currentToken = Field_Type;
+ } currentToken = Field_Type;
// the flags and field values on the current line
MailcapLineData data;
if ( data.needsterminal )
{
- data.cmdOpen.Printf(wxT("xterm -e sh -c '%s'"),
- data.cmdOpen.c_str());
+ data.cmdOpen.insert(0, wxT("xterm -e sh -c '"));
+ data.cmdOpen.append(wxT("'"));
}
if ( !data.cmdOpen.empty() )
}
}
// check data integrity
- wxASSERT( m_aTypes.Count() == m_aEntries.Count() &&
- m_aTypes.Count() == m_aExtensions.Count() &&
- m_aTypes.Count() == m_aIcons.Count() &&
- m_aTypes.Count() == m_aDescriptions.Count() );
+ wxASSERT( m_aTypes.GetCount() == m_aEntries.GetCount() &&
+ m_aTypes.GetCount() == m_aExtensions.GetCount() &&
+ m_aTypes.GetCount() == m_aIcons.GetCount() &&
+ m_aTypes.GetCount() == m_aDescriptions.GetCount() );
return true;
}