--- 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 #include #include -#include +#include #include #include #include @@ -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: