Bug 125977 - When running 'konsole /path/to/script.sh', and script.sh doesn't exist, konsole complains about pseudo teletype
Summary: When running 'konsole /path/to/script.sh', and script.sh doesn't exist, konso...
Status: RESOLVED FIXED
Alias: None
Product: konsole
Classification: Applications
Component: general (show other bugs)
Version: 1.6.2
Platform: Slackware Linux
: NOR normal
Target Milestone: ---
Assignee: Konsole Developer
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2006-04-20 21:49 UTC by Hans Chen
Modified: 2006-05-01 01:23 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Hans Chen 2006-04-20 21:49:13 UTC
Version:           1.6.2 (using KDE KDE 3.5.2)
Installed from:    Slackware Packages
OS:                Linux

Run 'konsole -e /no/script.sh' in a terminal. I get the error message:
"A Fatal Error Has Occurred

Konsole is unable to open a PTY (pseudo teletype). It is likely that this is due to an incorrect configuration of the PTY devices. Konsole needs to have read/write access to the PTY devices."

And the terminal output:

"konsole: WARNING: Unable to open a pseudo teletype!
Uh oh.. can't get terminal attributes.."

I think this error message is very confusing. The only problem is that the script doesn't exist! If I run Eterm instead of Konsole, I get this error message:

"Eterm:  Error:  execvp() failed, cannot execute "/no/script.sh": No such file or directory"

Much clearer. Much more correct. Much better.
Comment 1 Thiago Macieira 2006-04-24 01:33:42 UTC
Confirmed.
Comment 2 sero4linux 2006-04-25 13:01:28 UTC
This bug hit me hard when I have created a custom application button in kicker. I checked the option "start in terminal". Every time I clicked the button I got the misleading error message mentioned above. The real problem was that the script I wanted to start was not executable.
Comment 3 Kurt Hindenburg 2006-04-30 20:37:03 UTC
SVN commit 535934 by hindenburg:

Verify that the command is executable for '-e <command>.'

BUG: 125977


 M  +15 -2     session.cpp  


--- branches/KDE/3.5/kdebase/konsole/konsole/session.cpp #535933:535934
@@ -7,6 +7,9 @@
 #include <knotifyclient.h>
 #include <klocale.h>
 #include <kprocio.h>
+#include <krun.h>
+#include <kshell.h>
+#include <kstandarddirs.h>
 
 #include <stdlib.h>
 #include <qfile.h>
@@ -146,8 +149,18 @@
 
 void TESession::run()
 {
-//  kdDebug(1211) << "Running the session!" << pgm << "\n";
-  //pgm = "pine";
+  // Upon a KPty error, there is no description on what that error was...
+  // Check to see if the given program is executable.
+  QString exec = QFile::encodeName(pgm);
+  exec = KRun::binaryName(exec, false);
+  exec = KShell::tildeExpand(exec);
+  QString pexec = KGlobal::dirs()->findExe(exec);
+  if ( pexec.isEmpty() ) {
+    kdError()<<"can not execute "<<exec<<endl;
+    QTimer::singleShot(1, this, SLOT(done()));
+    return;
+  }
+
   QString appId=kapp->dcopClient()->appId();
 
   QString cwd_save = QDir::currentDirPath();
Comment 4 Kurt Hindenburg 2006-05-01 01:23:43 UTC
SVN commit 536013 by hindenburg:

Verify that the command is executable for '-e <command>.'

CCBUG: 125977


 M  +15 -2     session.cpp  


--- trunk/KDE/kdebase/apps/konsole/konsole/session.cpp #536012:536013
@@ -7,6 +7,9 @@
 #include <knotifyclient.h>
 #include <klocale.h>
 #include <kprocio.h>
+#include <krun.h>
+#include <kshell.h>
+#include <kstandarddirs.h>
 
 #include <stdlib.h>
 #include <qfile.h>
@@ -128,8 +131,18 @@
 
 void TESession::run()
 {
-  //kDebug(1211) << "Running the session!" << pgm << "\n";
-  //pgm = "pine";
+  // Upon a KPty error, there is no description on what that error was...
+  // Check to see if the given program is executable.
+  QString exec = QFile::encodeName(pgm);
+  exec = KRun::binaryName(exec, false);
+  exec = KShell::tildeExpand(exec);
+  QString pexec = KGlobal::dirs()->findExe(exec);
+  if ( pexec.isEmpty() ) {
+    kdError()<<"can not execute "<<exec<<endl;
+    QTimer::singleShot(1, this, SLOT(done()));
+    return;
+  }
+
   QString appId=kapp->dcopClient()->appId();
 
   QString cwd_save = QDir::currentPath();