blob: c3fcf3325c3e1fc08293a2a71dd57d99f1e70b7e [file] [log] [blame]
Erik Andersene49d5ec2000-02-08 19:58:47 +00001/* vi: set sw=4 ts=4: */
Eric Andersenf6be9441999-10-13 21:12:06 +00002/*
3 * Mini fdflush implementation for busybox
4 *
Eric Andersen3719e9e2003-03-07 18:03:02 +00005 * Copyright (C) 1995, 1996 by Bruce Perens <bruce@perens.com>.
6 * Copyright (C) 2003 by Erik Andersen <andersen@codeoet.org>
Eric Andersenf6be9441999-10-13 21:12:06 +00007 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 *
22 */
23
Eric Andersenf6be9441999-10-13 21:12:06 +000024#include <stdio.h>
Eric Andersencc8ed391999-10-05 16:24:54 +000025#include <sys/ioctl.h>
Eric Andersencc8ed391999-10-05 16:24:54 +000026#include <fcntl.h>
Eric Andersened3ef502001-01-27 08:24:39 +000027#include <stdlib.h>
Manuel Novoa III cad53642003-03-19 09:13:01 +000028#include <unistd.h>
Eric Andersencbe31da2001-02-20 06:14:08 +000029#include "busybox.h"
Eric Andersencc8ed391999-10-05 16:24:54 +000030
Eric Andersenbd22ed82000-07-08 18:55:24 +000031/* From <linux/fd.h> */
32#define FDFLUSH _IO(2,0x4b)
Eric Andersencc8ed391999-10-05 16:24:54 +000033
Eric Andersenf6be9441999-10-13 21:12:06 +000034extern int fdflush_main(int argc, char **argv)
Eric Andersencc8ed391999-10-05 16:24:54 +000035{
Eric Andersen77831c12003-03-07 18:09:06 +000036 int fd, result;
Eric Andersencc8ed391999-10-05 16:24:54 +000037
Eric Andersen3719e9e2003-03-07 18:03:02 +000038 if (argc <= 1)
Manuel Novoa III cad53642003-03-19 09:13:01 +000039 bb_show_usage();
40
41 fd = bb_xopen(argv[1], 0);
Eric Andersencc8ed391999-10-05 16:24:54 +000042
Eric Andersen77831c12003-03-07 18:09:06 +000043 result = ioctl(fd, FDFLUSH, 0);
44#ifdef CONFIG_FEATURE_CLEAN_UP
45 close(fd);
46#endif
47 if (result) {
Manuel Novoa III cad53642003-03-19 09:13:01 +000048 bb_perror_nomsg_and_die();
Eric Andersen77831c12003-03-07 18:09:06 +000049 }
Erik Andersene49d5ec2000-02-08 19:58:47 +000050
Eric Andersen77831c12003-03-07 18:09:06 +000051 /* Don't bother closing. Exit does
52 * that, so we can save a few bytes */
Matt Kraai3e856ce2000-12-01 02:55:13 +000053 return EXIT_SUCCESS;
Eric Andersencc8ed391999-10-05 16:24:54 +000054}