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.
Confirmed.
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.
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();
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();