#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
}
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