--- psutil-5.6.2/psutil/_psutil_linux.c.old 2019-04-11 21:10:12.000000000 +0000
+++ psutil-5.6.2/psutil/_psutil_linux.c 2019-06-14 20:19:26.804374285 +0000
@@ -14,7 +14,7 @@
#include <stdlib.h>
#include <mntent.h>
#include <features.h>
-#include <utmp.h>
+#include <utmpx.h>
#include <sched.h>
#include <linux/version.h>
#include <sys/syscall.h>
@@ -454,7 +454,7 @@
*/
static PyObject *
psutil_users(PyObject *self, PyObject *args) {
- struct utmp *ut;
+ struct utmpx *utx;
PyObject *py_retlist = PyList_New(0);
PyObject *py_tuple = NULL;
PyObject *py_username = NULL;
@@ -465,20 +465,20 @@
if (py_retlist == NULL)
return NULL;
- setutent();
+ setutxent();
- while (NULL != (ut = getutent())) {
+ while (NULL != (utx = getutxent())) {
py_tuple = NULL;
py_user_proc = NULL;
- if (ut->ut_type == USER_PROCESS)
+ if (utx->ut_type == USER_PROCESS)
py_user_proc = Py_True;
else
py_user_proc = Py_False;
- py_username = PyUnicode_DecodeFSDefault(ut->ut_user);
+ py_username = PyUnicode_DecodeFSDefault(utx->ut_user);
if (! py_username)
goto error;
- py_tty = PyUnicode_DecodeFSDefault(ut->ut_line);
+ py_tty = PyUnicode_DecodeFSDefault(utx->ut_line);
if (! py_tty)
goto error;
- py_hostname = PyUnicode_DecodeFSDefault(ut->ut_host);
+ py_hostname = PyUnicode_DecodeFSDefault(utx->ut_host);
if (! py_hostname)
goto error;
py_tuple = Py_BuildValue(
@@ -486,9 +486,9 @@
py_username, // username
py_tty, // tty
py_hostname, // hostname
- (float)ut->ut_tv.tv_sec, // tstamp
+ (float)utx->ut_tv.tv_sec, // tstamp
py_user_proc, // (bool) user process
- ut->ut_pid // process id
+ utx->ut_pid // process id
);
if (! py_tuple)
goto error;
@@ -499,7 +499,7 @@
Py_DECREF(py_hostname);
Py_DECREF(py_tuple);
}
- endutent();
+ endutxent();
return py_retlist;
error:
@@ -508,7 +508,7 @@
Py_XDECREF(py_hostname);
Py_XDECREF(py_tuple);
Py_DECREF(py_retlist);
- endutent();
+ endutxent();
return NULL;
}
--- psutil-5.6.2/setup.py.old 2019-04-11 21:10:12.000000000 +0000
+++ psutil-5.6.2/setup.py 2019-06-14 20:25:29.994927919 +0000
@@ -227,6 +227,7 @@
ext = Extension(
'psutil._psutil_linux',
sources=sources + ['psutil/_psutil_linux.c'],
+ libraries=['utmps', 'skarnet'],
define_macros=macros)
elif SUNOS: