blob: 51b0c2baca4260f57eeb6c99dd24be183bae0c5c [file] [log] [blame]
Eric Andersenf6be9441999-10-13 21:12:06 +00001/*
2 * Mini fdflush implementation for busybox
3 *
Eric Andersenc4996011999-10-20 22:08:37 +00004 *
5 * Copyright (C) 1995, 1996 by Bruce Perens <bruce@pixar.com>.
Eric Andersenf6be9441999-10-13 21:12:06 +00006 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 *
21 */
22
Eric Andersencc8ed391999-10-05 16:24:54 +000023#include "internal.h"
Eric Andersenf6be9441999-10-13 21:12:06 +000024#include <stdio.h>
Eric Andersencc8ed391999-10-05 16:24:54 +000025#include <sys/ioctl.h>
26#include <linux/fd.h>
Eric Andersencc8ed391999-10-05 16:24:54 +000027#include <fcntl.h>
28
Eric Andersencc8ed391999-10-05 16:24:54 +000029
Eric Andersenf6be9441999-10-13 21:12:06 +000030extern int fdflush_main(int argc, char **argv)
Eric Andersencc8ed391999-10-05 16:24:54 +000031{
Eric Andersenf6be9441999-10-13 21:12:06 +000032 int value;
33 int fd;
34 if ( **(argv+1) == '-' ) {
Eric Andersenb0e9a701999-10-18 22:28:26 +000035 usage( "fdflush device\n");
Eric Andersenf6be9441999-10-13 21:12:06 +000036 }
Eric Andersencc8ed391999-10-05 16:24:54 +000037
Eric Andersenf6be9441999-10-13 21:12:06 +000038 fd = open(*argv, 0);
39 if ( fd < 0 ) {
40 perror(*argv);
41 exit(FALSE);
42 }
Eric Andersencc8ed391999-10-05 16:24:54 +000043
Eric Andersenf6be9441999-10-13 21:12:06 +000044 value = ioctl(fd, FDFLUSH, 0);
45 close(fd);
Eric Andersencc8ed391999-10-05 16:24:54 +000046
Eric Andersenf6be9441999-10-13 21:12:06 +000047 if ( value ) {
48 perror(*argv);
49 exit(FALSE);
50 }
51 exit (TRUE);
Eric Andersencc8ed391999-10-05 16:24:54 +000052}