this applet needlessly big! TODO: bb_getopt_ulflags()
[oweals/busybox.git] / util-linux / fdflush.c
index 380015ddec2567f8b46e8de383e37c160ace3443..f3afea3203f94274627948946cc9cb59b471d907 100644 (file)
@@ -2,8 +2,8 @@
 /*
  * Mini fdflush implementation for busybox
  *
- *
- * Copyright (C) 1995, 1996 by Bruce Perens <bruce@pixar.com>.
+ * Copyright (C) 1995, 1996 by Bruce Perens <bruce@perens.com>.
+ * Copyright (C) 2003 by Erik Andersen <andersen@codeoet.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  *
  */
 
-#include "busybox.h"
 #include <stdio.h>
 #include <sys/ioctl.h>
 #include <fcntl.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include "busybox.h"
 
 /* From <linux/fd.h> */
 #define FDFLUSH  _IO(2,0x4b)
 
 extern int fdflush_main(int argc, char **argv)
 {
-       int value;
-       int fd;
+       int fd, result;
+
+       if (argc != 2)
+               bb_show_usage();
 
-       if (argc <= 1 || **(++argv) == '-')
-               usage(fdflush_usage);
+       fd = bb_xopen(argv[1], 0);
 
-       fd = open(*argv, 0);
-       if (fd < 0) {
-               perror(*argv);
-               return EXIT_FAILURE;
+       result = ioctl(fd, FDFLUSH, 0);
+
+       if (ENABLE_FEATURE_CLEAN_UP) close(fd);
+
+       if (result) {
+               bb_perror_nomsg_and_die();
        }
 
-       value = ioctl(fd, FDFLUSH, 0);
        /* Don't bother closing.  Exit does
         * that, so we can save a few bytes */
-       /* close(fd); */
-
-       if (value) {
-               perror(*argv);
-               return EXIT_FAILURE;
-       }
        return EXIT_SUCCESS;
 }