summaryrefslogtreecommitdiff
authorsandman <sandman>2002-10-29 19:33:49 (UTC)
committer sandman <sandman>2002-10-29 19:33:49 (UTC)
commit7c340d2a08601f4d27f6d2a407fc0de437b8efad (patch) (side-by-side diff)
treec6a01ef4e7623ea1da758030e691531f0476885e
parent2957aae1073f4c41dd6783c41d1199be71cd9f4a (diff)
downloadopie-7c340d2a08601f4d27f6d2a407fc0de437b8efad.zip
opie-7c340d2a08601f4d27f6d2a407fc0de437b8efad.tar.gz
opie-7c340d2a08601f4d27f6d2a407fc0de437b8efad.tar.bz2
when quitting opie-login, don't kill the process id returned by getppid(),
but use the previously saved "real" parent pid.
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--core/opie-login/loginapplication.cpp5
-rw-r--r--core/opie-login/loginapplication.h5
-rw-r--r--core/opie-login/main.cpp11
3 files changed, 14 insertions, 7 deletions
diff --git a/core/opie-login/loginapplication.cpp b/core/opie-login/loginapplication.cpp
index 103d63b..8d86a71 100644
--- a/core/opie-login/loginapplication.cpp
+++ b/core/opie-login/loginapplication.cpp
@@ -45,8 +45,9 @@ extern "C" {
LoginApplication *lApp;
-LoginApplication::LoginApplication ( int &argc, char **argv )
+LoginApplication::LoginApplication ( int &argc, char **argv, pid_t parentpid )
: QPEApplication ( argc, argv, GuiServer )
{
lApp = this;
+ m_parentpid = parentpid;
}
@@ -217,4 +218,4 @@ void LoginApplication::quitToConsole ( )
{
QPEApplication::quit ( );
- ::kill ( ::getppid ( ), SIGTERM );
+ ::kill ( m_parentpid, SIGTERM );
}
diff --git a/core/opie-login/loginapplication.h b/core/opie-login/loginapplication.h
index 062c088..4e7cf79 100644
--- a/core/opie-login/loginapplication.h
+++ b/core/opie-login/loginapplication.h
@@ -40,5 +40,5 @@ struct pam_response;
class LoginApplication : public QPEApplication {
public:
- LoginApplication ( int &argc, char **argv );
+ LoginApplication ( int &argc, char **argv, pid_t parentpid );
static bool checkPassword ( const char *user, const char *password );
@@ -61,4 +61,7 @@ private:
static const char *s_pam_password;
#endif
+
+private:
+ pid_t m_parentpid;
};
diff --git a/core/opie-login/main.cpp b/core/opie-login/main.cpp
index 579a93a..674829d 100644
--- a/core/opie-login/main.cpp
+++ b/core/opie-login/main.cpp
@@ -61,5 +61,5 @@
using namespace Opie;
-int login_main ( int argc, char **argv );
+int login_main ( int argc, char **argv, pid_t ppid );
void sigterm ( int sig );
void exit_closelog ( );
@@ -73,4 +73,7 @@ static struct option long_options [] = {
int main ( int argc, char **argv )
{
+ pid_t ppid = ::getpid ( );
+
+
if ( ::geteuid ( ) != 0 ) {
::fprintf ( stderr, "%s can only be executed by root. (or chmod +s)", argv [0] );
@@ -184,5 +187,5 @@ int main ( int argc, char **argv )
}
else
- ::exit ( login_main ( argc, argv ));
+ ::exit ( login_main ( argc, argv, ppid ));
}
}
@@ -303,8 +306,8 @@ private:
-int login_main ( int argc, char **argv )
+int login_main ( int argc, char **argv, pid_t ppid )
{
QWSServer::setDesktopBackground( QImage() );
- LoginApplication *app = new LoginApplication ( argc, argv );
+ LoginApplication *app = new LoginApplication ( argc, argv, ppid );
app-> setFont ( QFont ( "Helvetica", 10 ));