From 776b0791ba821f81715c9f17b1289a0e95a4f8a6 Mon Sep 17 00:00:00 2001 From: Sven Eden Date: Tue, 30 May 2017 16:33:28 +0200 Subject: [PATCH] Add support for elogind A session manager similar to logind from systemd. See https://github.com/elogind/elogind Signed-off-by: Lars Wendler --- Makefile.am | 4 ++++ configure.ac | 13 +++++++++++++ proc/readproc.c | 5 ++++- 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index 1d920309..9d5af83f 100644 --- a/Makefile.am +++ b/Makefile.am @@ -215,6 +215,10 @@ if WITH_SYSTEMD proc_libprocps_la_LIBADD += @SYSTEMD_LIBS@ endif +if WITH_ELOGIND +proc_libprocps_la_LIBADD += @ELOGIND_LIBS@ +endif + proc_libprocps_la_LDFLAGS = \ -version-info $(LIBprocps_CURRENT):$(LIBprocps_REVISION):$(LIBprocps_AGE) \ -no-undefined \ diff --git a/configure.ac b/configure.ac index b0f82444..bc84a0d3 100644 --- a/configure.ac +++ b/configure.ac @@ -178,6 +178,19 @@ AS_IF([test "x$with_systemd" != "xno"], [ ]) AM_CONDITIONAL([WITH_SYSTEMD], [test x$with_systemd != xno]) +AC_ARG_WITH([elogind], + [AS_HELP_STRING([--with-elogind], [enable elogind support])], + [], [with_elogind=no] +) +# Do not allow elogind if systemd is wanted and found +AS_IF([test "x$with_systemd" != "xno"], [with_elogind=no]) + +AS_IF([test "x$with_elogind" != "xno"], [ + PKG_CHECK_MODULES([ELOGIND], [libelogind]) + AC_DEFINE(WITH_ELOGIND, 1, [enable elogind support]) +]) +AM_CONDITIONAL([WITH_ELOGIND], [test x$with_elogind != xno]) + # AC_ARG_ENABLEs AC_ARG_ENABLE([pidof], AS_HELP_STRING([--disable-pidof], [do not build pidof]), diff --git a/proc/readproc.c b/proc/readproc.c index 0a30edee..6871bad0 100644 --- a/proc/readproc.c +++ b/proc/readproc.c @@ -40,6 +40,9 @@ #ifdef WITH_SYSTEMD #include #endif +#ifdef WITH_ELOGIND +#include +#endif // sometimes it's easier to do this manually, w/o gcc helping #ifdef PROF @@ -518,7 +521,7 @@ static void ns2proc(const char *directory, proc_t *restrict p) { } static void sd2proc(proc_t *restrict p) { -#ifdef WITH_SYSTEMD +#if defined(WITH_SYSTEMD) || defined(WITH_ELOGIND) char buf[64]; uid_t uid;