From f03987a4a9b3d22308c08d336258660d21e3ebf0 Mon Sep 17 00:00:00 2001 From: Simon Ruderich Date: Sun, 11 May 2014 15:20:52 +0200 Subject: [PATCH] fix login()/logout() on FreeBSD --- src/wall-notify.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/wall-notify.c b/src/wall-notify.c index 13e7829..dd37e89 100644 --- a/src/wall-notify.c +++ b/src/wall-notify.c @@ -143,7 +143,16 @@ static int set_utmpx(short type, int ptm) { #endif static int login(int ptm) { #if defined(USE_UTEMPTER) - return utempter_add_record(ptm, NULL); + int result = utempter_add_record(ptm, NULL); + /* Exit value of utempter_*() is not correct on all systems, e.g. + * FreeBSD() always returns 0. Checking the utmpx database manually is + * difficult because we don't know the exact values for ut_id and ut_line, + * therefore we only check the return value on systems known to return a + * useful value. */ +# ifndef __linux + result = 1; +# endif + return result; #elif defined(USE_UTMPX) return set_utmpx(USER_PROCESS, ptm); #else @@ -152,7 +161,12 @@ static int login(int ptm) { } static int logout(int ptm) { #if defined(USE_UTEMPTER) - return utempter_remove_record(ptm); + int result = utempter_remove_record(ptm); + /* See above. */ +# ifndef __linux + result = 1; +# endif + return result; #elif defined(USE_UTMPX) return set_utmpx(DEAD_PROCESS, ptm); #else -- 2.43.2