9 |
* Licensed under GPLv2, see file LICENSE in this tarball for details. |
* Licensed under GPLv2, see file LICENSE in this tarball for details. |
10 |
*/ |
*/ |
11 |
|
|
12 |
#include "busybox.h" |
#include "libbb.h" |
13 |
|
|
14 |
/* From <linux/fd.h> */ |
/* From <linux/fd.h> */ |
15 |
#define FDFLUSH _IO(2,0x4b) |
#define FDFLUSH _IO(2,0x4b) |
16 |
|
|
17 |
|
int freeramdisk_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; |
18 |
int freeramdisk_main(int argc, char **argv) |
int freeramdisk_main(int argc, char **argv) |
19 |
{ |
{ |
|
int result; |
|
20 |
int fd; |
int fd; |
21 |
|
|
22 |
if (argc != 2) bb_show_usage(); |
if (argc != 2) bb_show_usage(); |
24 |
fd = xopen(argv[1], O_RDWR); |
fd = xopen(argv[1], O_RDWR); |
25 |
|
|
26 |
// Act like freeramdisk, fdflush, or both depending on configuration. |
// Act like freeramdisk, fdflush, or both depending on configuration. |
27 |
result = ioctl(fd, (ENABLE_FREERAMDISK && applet_name[1]=='r') |
ioctl_or_perror_and_die(fd, (ENABLE_FREERAMDISK && applet_name[1]=='r') |
28 |
|| !ENABLE_FDFLUSH ? BLKFLSBUF : FDFLUSH); |
|| !ENABLE_FDFLUSH ? BLKFLSBUF : FDFLUSH, NULL, "%s", argv[1]); |
29 |
|
|
30 |
if (ENABLE_FEATURE_CLEAN_UP) close(fd); |
if (ENABLE_FEATURE_CLEAN_UP) close(fd); |
31 |
|
|
|
if (result) bb_perror_msg_and_die("%s", argv[1]); |
|
32 |
return EXIT_SUCCESS; |
return EXIT_SUCCESS; |
33 |
} |
} |