]> git.saurik.com Git - wxWidgets.git/blobdiff - src/unix/utilsunx.cpp
Lock m_critsect in POSIX wxThread::Create().
[wxWidgets.git] / src / unix / utilsunx.cpp
index eb01ae41c535d720a755536bcaf6c6ddb800f83a..bba1eb7be5cf7d2c9cdc210bf40698f377061cbd 100644 (file)
@@ -556,7 +556,7 @@ long wxExecute(char **argv, int flags, wxProcess *process,
     //  1. wxPRIORITY_{MIN,DEFAULT,MAX} map to -20, 0 and 19 respectively.
     //  2. The mapping is monotonously increasing.
     //  3. The mapping is onto the target range.
-    int prio = process->GetPriority();
+    int prio = process ? process->GetPriority() : 0;
     if ( prio <= 50 )
         prio = (2*prio)/5 - 20;
     else if ( prio < 55 )
@@ -598,7 +598,7 @@ long wxExecute(char **argv, int flags, wxProcess *process,
 #endif // !__VMS
 
 #if defined(HAVE_SETPRIORITY)
-        if ( setpriority(PRIO_PROCESS, 0, prio) != 0 )
+        if ( prio && setpriority(PRIO_PROCESS, 0, prio) != 0 )
         {
             wxLogSysError(_("Failed to set process priority"));
         }
@@ -844,11 +844,16 @@ wxString wxGetUserHome( const wxString &user )
 // the trailing newline
 static wxString wxGetCommandOutput(const wxString &cmd)
 {
-    FILE *f = popen(cmd.ToAscii(), "r");
+    // Suppress stderr from the shell to avoid outputting errors if the command
+    // doesn't exist.
+    FILE *f = popen((cmd + " 2>/dev/null").ToAscii(), "r");
     if ( !f )
     {
-        wxLogSysError(wxT("Executing \"%s\" failed"), cmd.c_str());
-        return wxEmptyString;
+        // Notice that this doesn't happen simply if the command doesn't exist,
+        // but only in case of some really catastrophic failure inside popen()
+        // so we should really notify the user about this as this is not normal.
+        wxLogSysError(wxT("Executing \"%s\" failed"), cmd);
+        return wxString();
     }
 
     wxString s;