From 0180264f41dd5c2687f3e47080e30799acc4e24a Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Thu, 25 Aug 2011 17:41:00 +0200 Subject: login: add pid to login_context struct Signed-off-by: Karel Zak --- login-utils/login.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'login-utils/login.c') 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 */ 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]) -- cgit v1.2.3-55-g7522