]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/mimecmn.cpp
fix for group names containing ']'
[wxWidgets.git] / src / common / mimecmn.cpp
index dc28cce7a5f866585bf37d96dfe49a62ccc99478..7a773543f0c9248fb28647d8c5e71f97899ba574 100644 (file)
@@ -15,6 +15,7 @@
 
 // for compilers that support precompilation, includes "wx.h".
 #include "wx/wxprec.h"
 
 // for compilers that support precompilation, includes "wx.h".
 #include "wx/wxprec.h"
+#include "wx/module.h"
 
 #ifdef __BORLANDC__
   #pragma hdrstop
 
 #ifdef __BORLANDC__
   #pragma hdrstop
@@ -157,8 +158,7 @@ wxString wxFileType::ExpandCommand(const wxString& command,
                         const wxChar *pEnd = wxStrchr(pc, wxT('}'));
                         if ( pEnd == NULL ) {
                             wxString mimetype;
                         const wxChar *pEnd = wxStrchr(pc, wxT('}'));
                         if ( pEnd == NULL ) {
                             wxString mimetype;
-                            wxLogWarning(_("Unmatched '{' in an entry for "
-                                           "mime type %s."),
+                            wxLogWarning(_("Unmatched '{' in an entry for mime type %s."),
                                          params.GetMimeType().c_str());
                             str << wxT("%{");
                         }
                                          params.GetMimeType().c_str());
                             str << wxT("%{");
                         }
@@ -189,8 +189,16 @@ wxString wxFileType::ExpandCommand(const wxString& command,
     }
 
     // metamail(1) man page states that if the mailcap entry doesn't have '%s'
     }
 
     // metamail(1) man page states that if the mailcap entry doesn't have '%s'
-    // the program will accept the data on stdin: so give it to it!
-    if ( !hasFilename && !str.IsEmpty() ) {
+    // the program will accept the data on stdin so normally we should append
+    // "< %s" to the end of the command in such case, but not all commands
+    // behave like this, in particular a common test is 'test -n "$DISPLAY"'
+    // and appending "< %s" to this command makes the test fail... I don't
+    // know of the correct solution, try to guess what we have to do.
+    if ( !hasFilename && !str.IsEmpty()
+#ifdef __UNIX__
+                      && !str.StartsWith(_T("test "))
+#endif // Unix
+       ) {
         str << wxT(" < '") << params.GetFileName() << wxT('\'');
     }
 
         str << wxT(" < '") << params.GetFileName() << wxT('\'');
     }
 
@@ -341,6 +349,29 @@ static wxMimeTypesManager gs_mimeTypesManager;
 wxMimeTypesManager * wxTheMimeTypesManager = &gs_mimeTypesManager;
 
 
 wxMimeTypesManager * wxTheMimeTypesManager = &gs_mimeTypesManager;
 
 
+
+
+
+class wxMimeTypeCmnModule: public wxModule
+{
+DECLARE_DYNAMIC_CLASS(wxMimeTypeCmnModule)
+public:
+    wxMimeTypeCmnModule() : wxModule() {}
+    bool OnInit() { return TRUE; }
+    void OnExit() 
+    {   // this avoids false memory leak allerts:
+        if (gs_mimeTypesManager.m_impl != NULL)
+       {
+           delete gs_mimeTypesManager.m_impl;
+           gs_mimeTypesManager.m_impl = NULL;
+       }
+    }
+};
+
+IMPLEMENT_DYNAMIC_CLASS(wxMimeTypeCmnModule, wxModule)
+
+
+
 #endif
   // wxUSE_FILE && wxUSE_TEXTFILE
 
 #endif
   // wxUSE_FILE && wxUSE_TEXTFILE