X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=util-linux%2Ffreeramdisk.c;h=aabb5f98827641ed79ef3c6fa890f6a338c4158b;hb=ace02dc9cd3ca0c95db5b5ebe87b9d6cd6ca1733;hp=43d42d424fb8c84a2949d31d674bfe88aadbc3ca;hpb=a967e3c8f004d9d613e2f531a3bf7869f2e68b90;p=oweals%2Fbusybox.git diff --git a/util-linux/freeramdisk.c b/util-linux/freeramdisk.c index 43d42d424..aabb5f988 100644 --- a/util-linux/freeramdisk.c +++ b/util-linux/freeramdisk.c @@ -23,40 +23,35 @@ #include #include -#include #include -#include #include #include #include -#include "internal.h" +#include +#include "busybox.h" -static const char freeramdisk_usage[] = - "freeramdisk DEVICE\n\n" - "Frees all memory used by the specified ramdisk.\n"; +/* From linux/fs.h */ +#define BLKFLSBUF _IO(0x12,97) /* flush buffer cache */ extern int freeramdisk_main(int argc, char **argv) { - char rname[256] = "/dev/ram"; - int f; + FILE *f; - if (argc > 2 || ( argv[1] && *argv[1] == '-')) { - usage(freeramdisk_usage); + if (argc != 2 || *argv[1] == '-') { + show_usage(); } - if (argc >1) - strcpy(rname, argv[1]); - - if ((f = open(rname, O_RDWR)) == -1) { - fatalError( "freeramdisk: cannot open %s: %s", rname, strerror(errno)); - } - if (ioctl(f, BLKFLSBUF) < 0) { - fatalError( "freeramdisk: failed ioctl on %s: %s", rname, strerror(errno)); + f = xfopen(argv[1], "r+"); + + if (ioctl(fileno(f), BLKFLSBUF) < 0) { + perror_msg_and_die("failed ioctl on %s", argv[1]); } - close(f); - exit(TRUE); + /* Don't bother closing. Exit does + * that, so we can save a few bytes */ + /* close(f); */ + return EXIT_SUCCESS; } /*