this applet needlessly big! TODO: bb_getopt_ulflags()
[oweals/busybox.git] / util-linux / fdflush.c
index 5eb93ddd7d7aa44494e9fb8bd17051b2b71c14f3..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 fd;
+       int fd, result;
+
+       if (argc != 2)
+               bb_show_usage();
+
+       fd = bb_xopen(argv[1], 0);
 
-       if (argc <= 1 || **(++argv) == '-')
-               usage(fdflush_usage);
+       result = ioctl(fd, FDFLUSH, 0);
 
-       if ((fd = open(*argv, 0)) < 0)
-               perror_msg_and_die("%s", *argv);
+       if (ENABLE_FEATURE_CLEAN_UP) close(fd);
 
-       if (ioctl(fd, FDFLUSH, 0))
-               perror_msg_and_die("%s", *argv);
+       if (result) {
+               bb_perror_nomsg_and_die();
+       }
 
+       /* Don't bother closing.  Exit does
+        * that, so we can save a few bytes */
        return EXIT_SUCCESS;
 }