#include <stdio.h>
#include <string.h>
-#include <sys/mount.h>
#include <sys/types.h>
-#include <sys/stat.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <errno.h>
-#include "internal.h"
+#include <stdlib.h>
+#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;
- 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 ((f = open(argv[1], O_RDWR)) == -1) {
+ perror_msg_and_die("cannot open %s", argv[1]);
}
if (ioctl(f, BLKFLSBUF) < 0) {
- fatalError( "freeramdisk: failed ioctl on %s: %s", rname, strerror(errno));
+ 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;
}
/*