i2cdump: don't read block data in non-block modes
[oweals/busybox.git] / miscutils / wall.c
index c74f4f27b6627fe04ad2c9866a06960664056698..50658f457d820b0503a1d5ad639b4f022e95357a 100644 (file)
@@ -32,7 +32,7 @@
 int wall_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
 int wall_main(int argc UNUSED_PARAM, char **argv)
 {
-       struct utmp *ut;
+       struct utmpx *ut;
        char *msg;
        int fd;
 
@@ -41,17 +41,13 @@ int wall_main(int argc UNUSED_PARAM, char **argv)
                /* The applet is setuid.
                 * Access to the file must be under user's uid/gid.
                 */
-               setfsuid(getuid());
-               setfsgid(getgid());
-               fd = xopen(argv[1], O_RDONLY);
-               setfsuid(geteuid());
-               setfsgid(getegid());
+               fd = xopen_as_uid_gid(argv[1], O_RDONLY, getuid(), getgid());
        }
        msg = xmalloc_read(fd, NULL);
        if (ENABLE_FEATURE_CLEAN_UP && argv[1])
                close(fd);
-       setutent();
-       while ((ut = getutent()) != NULL) {
+       setutxent();
+       while ((ut = getutxent()) != NULL) {
                char *line;
                if (ut->ut_type != USER_PROCESS)
                        continue;
@@ -60,7 +56,7 @@ int wall_main(int argc UNUSED_PARAM, char **argv)
                free(line);
        }
        if (ENABLE_FEATURE_CLEAN_UP) {
-               endutent();
+               endutxent();
                free(msg);
        }
        return EXIT_SUCCESS;