]> ruderich.org/simon Gitweb - wall-notify/wall-notify.git/blobdiff - src/wall-notify.c
move usage display to separate function
[wall-notify/wall-notify.git] / src / wall-notify.c
index 13e7829926f04708708e084d1dd147e895f864ff..24afb7a1f90295f3cf69e80e6815dbbbb189e10a 100644 (file)
@@ -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
@@ -280,14 +294,18 @@ static void handle_wall(int fd, char **argv) {
     }
 }
 
+static void usage(const char *argv0) {
+    fprintf(stderr, "usage: %s <cmd args..>\n", argv0);
+    exit(EXIT_FAILURE);
+}
+
 
 int main(int argc, char **argv) {
     int ptm, pts;
     char *name;
 
     if (argc < 2) {
-        fprintf(stderr, "usage: %s <cmd args..>\n", argv[0]);
-        exit(EXIT_FAILURE);
+        usage(argv[0]);
     }
 
     ptm = open_tty();