aboutsummaryrefslogtreecommitdiff
path: root/util-linux/freeramdisk.c
diff options
context:
space:
mode:
Diffstat (limited to 'util-linux/freeramdisk.c')
-rw-r--r--util-linux/freeramdisk.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/util-linux/freeramdisk.c b/util-linux/freeramdisk.c
new file mode 100644
index 000000000..2293d3ee6
--- /dev/null
+++ b/util-linux/freeramdisk.c
@@ -0,0 +1,34 @@
1/* vi: set sw=4 ts=4: */
2/*
3 * freeramdisk and fdflush implementations for busybox
4 *
5 * Copyright (C) 2000 and written by Emanuele Caratti <wiz@iol.it>
6 * Adjusted a bit by Erik Andersen <andersen@codepoet.org>
7 * Unified with fdflush by Tito Ragusa <farmatito@tiscali.it>
8 *
9 * Licensed under GPLv2, see file LICENSE in this tarball for details.
10 */
11
12#include "busybox.h"
13
14/* From <linux/fd.h> */
15#define FDFLUSH _IO(2,0x4b)
16
17int freeramdisk_main(int argc, char **argv)
18{
19 int result;
20 int fd;
21
22 if (argc != 2) bb_show_usage();
23
24 fd = xopen(argv[1], O_RDWR);
25
26 // Act like freeramdisk, fdflush, or both depending on configuration.
27 result = ioctl(fd, (ENABLE_FREERAMDISK && applet_name[1]=='r')
28 || !ENABLE_FDFLUSH ? BLKFLSBUF : FDFLUSH);
29
30 if (ENABLE_FEATURE_CLEAN_UP) close(fd);
31
32 if (result) bb_perror_msg_and_die("%s", argv[1]);
33 return EXIT_SUCCESS;
34}