Do not use the _syscall5 macro -- use syscall(2) instead
[oweals/busybox.git] / util-linux / fdflush.c
index a4245c7e3e677690aac7065f201a2c8f7b681e62..c3fcf3325c3e1fc08293a2a71dd57d99f1e70b7e 100644 (file)
@@ -25,6 +25,7 @@
 #include <sys/ioctl.h>
 #include <fcntl.h>
 #include <stdlib.h>
+#include <unistd.h>
 #include "busybox.h"
 
 /* From <linux/fd.h> */
 
 extern int fdflush_main(int argc, char **argv)
 {
-       int fd;
+       int fd, result;
 
        if (argc <= 1)
-               show_usage();
-       if ((fd = open(*(++argv), 0)) < 0)
-               goto die_the_death;
+               bb_show_usage();
 
-       if (ioctl(fd, FDFLUSH, 0))
-               goto die_the_death;
+       fd = bb_xopen(argv[1], 0);
 
-       return EXIT_SUCCESS;
+       result = ioctl(fd, FDFLUSH, 0);
+#ifdef CONFIG_FEATURE_CLEAN_UP
+       close(fd);
+#endif
+       if (result) {
+               bb_perror_nomsg_and_die();
+       }
 
-die_the_death:
-       perror_msg_and_die(NULL);
+       /* Don't bother closing.  Exit does
+        * that, so we can save a few bytes */
+       return EXIT_SUCCESS;
 }