* reordered a little bit
[mascara-docs.git] / i86 / elks / elkscmd / disk_utils / ramdisk.c
blobeda177d8ae483606d898b87183e4310693566c8e
1 #include <stdio.h>
2 #include <unistd.h>
3 #include <string.h>
4 #include <stdlib.h>
5 #include <linuxmt/rd.h>
7 #define MAX_SIZE 640 /* 1 KB blocks */
9 int main(argc, argv)
10 int argc;
11 char **argv;
13 int i;
14 int fd;
15 int size = 0;
17 if ((argc != 4) && (argc != 3)) {
18 fprintf(stderr, "usage: ramdisk /dev/ram? {make | kill} [size in 1 KB blocks]\n");
19 exit(1);
22 if (argc == 4)
23 sscanf(argv[3], "%d", &size);
24 else
25 size = 64; /* default */
27 if ((size < 1) || (size > MAX_SIZE)) {
28 fprintf(stderr, "ramdisk: invalid size; use integer in range of 1 .. %d\n", MAX_SIZE);
29 exit(1);
31 if (( fd = open(argv[1], 0) ) == -1) {
32 perror("ramdisk");
33 exit(1);
35 if (strcmp(argv[2],"make") == 0) {
36 if (ioctl(fd, RDCREATE, size)) {
37 perror("ramdisk");
38 exit(1);
40 fprintf(stdout,"ramdisk: %d KB ramdisk created on %s\n", size, argv[1]);
41 exit(0);
43 if (strcmp(argv[2],"kill") == 0) {
44 if (ioctl(fd, RDDESTROY, 0)) {
45 perror("ramdisk");
46 exit(1);
48 fprintf(stdout,"ramdisk destroyed on %s\n", argv[1]);
49 exit(0);