Replace pstat variable in check_idle
This commit is contained in:
parent
e680e16ff8
commit
8077ae6004
|
@ -832,12 +832,11 @@ void check_idle()
|
||||||
{ /* Check for exceeded time limits & logoff exceeders */
|
{ /* Check for exceeded time limits & logoff exceeders */
|
||||||
char user[sizeof(utmpp->ut_user) + 1];
|
char user[sizeof(utmpp->ut_user) + 1];
|
||||||
char host[sizeof(utmpp->ut_host) + 1];
|
char host[sizeof(utmpp->ut_host) + 1];
|
||||||
struct stat status, *pstat;
|
struct stat status;
|
||||||
time_t idle, sesstime;
|
time_t idle, sesstime;
|
||||||
|
|
||||||
pstat = &status; /* point to status structure */
|
|
||||||
sprintf(path, "/proc/%d", utmpp->ut_pid);
|
sprintf(path, "/proc/%d", utmpp->ut_pid);
|
||||||
if (utmpp->ut_type != USER_PROCESS || stat(path, pstat)) /* if not user process, or if proc doesn't exist */
|
if (utmpp->ut_type != USER_PROCESS || stat(path, &status)) /* if not user process, or if proc doesn't exist */
|
||||||
return; /* skip the utmp entry */
|
return; /* skip the utmp entry */
|
||||||
strncpy(user, utmpp->ut_user, sizeof(user) - 1); /* get user name */
|
strncpy(user, utmpp->ut_user, sizeof(user) - 1); /* get user name */
|
||||||
user[sizeof(user) - 1] = '\0'; /* null terminate user name string */
|
user[sizeof(user) - 1] = '\0'; /* null terminate user name string */
|
||||||
|
@ -847,7 +846,7 @@ void check_idle()
|
||||||
strncpy(dev, utmpp->ut_line, sizeof(dev) - 1); /* get device name */
|
strncpy(dev, utmpp->ut_line, sizeof(dev) - 1); /* get device name */
|
||||||
dev[sizeof(dev) - 1] = '\0';
|
dev[sizeof(dev) - 1] = '\0';
|
||||||
sprintf(path, "/dev/%s", dev);
|
sprintf(path, "/dev/%s", dev);
|
||||||
if (stat(path, pstat) && chk_xsession(dev, host) != TIMEOUTD_XSESSION_LOCAL) { /* if can't get status for
|
if (stat(path, &status) && chk_xsession(dev, host) != TIMEOUTD_XSESSION_LOCAL) { /* if can't get status for
|
||||||
port && if it's not a local Xsession */
|
port && if it's not a local Xsession */
|
||||||
syslog(LOG_ERR, "Can't get status of user %s's terminal (%s)\n", user, dev);
|
syslog(LOG_ERR, "Can't get status of user %s's terminal (%s)\n", user, dev);
|
||||||
return;
|
return;
|
||||||
|
@ -865,7 +864,7 @@ void check_idle()
|
||||||
(int) idle, user);
|
(int) idle, user);
|
||||||
} else
|
} else
|
||||||
#endif
|
#endif
|
||||||
idle = (time_now - max(pstat->st_atime, pstat->st_mtime)) / 60;
|
idle = (time_now - max(status.st_atime, status.st_mtime)) / 60;
|
||||||
|
|
||||||
sesstime = (time_now - utmpp->ut_time) / 60;
|
sesstime = (time_now - utmpp->ut_time) / 60;
|
||||||
switch (chk_timeout(user, dev, host, idle, sesstime)) {
|
switch (chk_timeout(user, dev, host, idle, sesstime)) {
|
||||||
|
|
Loading…
Reference in a new issue