diff options
author | Karel Zak | 2011-08-25 17:41:00 +0200 |
---|---|---|
committer | Karel Zak | 2011-10-26 23:17:16 +0200 |
commit | 0180264f41dd5c2687f3e47080e30799acc4e24a (patch) | |
tree | 4f3aef4896b6a9c8f9287e29f07adbe9e7e13996 | |
parent | login: add hostname to login_context struct (diff) | |
download | kernel-qcow2-util-linux-0180264f41dd5c2687f3e47080e30799acc4e24a.tar.gz kernel-qcow2-util-linux-0180264f41dd5c2687f3e47080e30799acc4e24a.tar.xz kernel-qcow2-util-linux-0180264f41dd5c2687f3e47080e30799acc4e24a.zip |
login: add pid to login_context struct
Signed-off-by: Karel Zak <kzak@redhat.com>
-rw-r--r-- | login-utils/login.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/login-utils/login.c b/login-utils/login.c index c4ef30a4b..9299e5cdd 100644 --- a/login-utils/login.c +++ b/login-utils/login.c @@ -98,6 +98,8 @@ struct login_context { char *hostname; char hostaddress[16]; + + pid_t pid; }; /* @@ -110,7 +112,6 @@ struct passwd *pwd; static struct passwd pwdcopy; static char *username; -static pid_t pid; static void timedout(int); static void sigint(int); @@ -278,7 +279,7 @@ logbtmp(struct login_context *cxt, const char *username) #endif ut.ut_type = LOGIN_PROCESS; /* XXX doesn't matter */ - ut.ut_pid = pid; + ut.ut_pid = cxt->pid; if (cxt->hostname) { xstrncpy(ut.ut_host, cxt->hostname, sizeof(ut.ut_host)); if (cxt->hostaddress && *cxt->hostaddress) @@ -391,10 +392,10 @@ int main(int argc, char **argv) pam_handle_t *pamh = NULL; struct pam_conv conv = { misc_conv, NULL }; struct sigaction sa, oldsa_hup, oldsa_term; - struct login_context cxt; - memset(&cxt, 0, sizeof(cxt)); - pid = getpid(); + struct login_context cxt = { + .pid = getpid() + }; signal(SIGALRM, timedout); siginterrupt(SIGALRM, 1); /* we have to interrupt syscalls like ioclt() */ @@ -737,7 +738,7 @@ int main(int argc, char **argv) Michael Riepe <michael@stud.uni-hannover.de> */ while ((utp = getutent())) - if (utp->ut_pid == pid + if (utp->ut_pid == cxt.pid && utp->ut_type >= INIT_PROCESS && utp->ut_type <= DEAD_PROCESS) break; @@ -776,7 +777,7 @@ int main(int argc, char **argv) } #endif ut.ut_type = USER_PROCESS; - ut.ut_pid = pid; + ut.ut_pid = cxt.pid; if (cxt.hostname) { xstrncpy(ut.ut_host, cxt.hostname, sizeof(ut.ut_host)); if (cxt.hostaddress[0]) |