Do not use the _syscall5 macro -- use syscall(2) instead
[oweals/busybox.git] / util-linux / fdflush.c
index f10cceae08054830b8659780ff2fab62b143cd66..c3fcf3325c3e1fc08293a2a71dd57d99f1e70b7e 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 <= 1 || **(++argv) == '-')
-               show_usage();
+       if (argc <= 1)
+               bb_show_usage();
 
-       if ((fd = open(*argv, 0)) < 0)
-               perror_msg_and_die("%s", *argv);
+       fd = bb_xopen(argv[1], 0);
 
-       if (ioctl(fd, FDFLUSH, 0))
-               perror_msg_and_die("%s", *argv);
+       result = ioctl(fd, FDFLUSH, 0);
+#ifdef CONFIG_FEATURE_CLEAN_UP
+       close(fd);
+#endif
+       if (result) {
+               bb_perror_nomsg_and_die();
+       }
 
+       /* Don't bother closing.  Exit does
+        * that, so we can save a few bytes */
        return EXIT_SUCCESS;
 }