diff options
-rw-r--r-- | Changelog | 3 | ||||
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | applets/busybox.c | 3 | ||||
-rw-r--r-- | busybox.c | 3 | ||||
-rw-r--r-- | busybox.def.h | 1 | ||||
-rw-r--r-- | freeramdisk.c | 69 | ||||
-rw-r--r-- | internal.h | 1 | ||||
-rw-r--r-- | util-linux/freeramdisk.c | 69 | ||||
-rw-r--r-- | utility.c | 2 |
9 files changed, 150 insertions, 3 deletions
@@ -1,5 +1,8 @@ | |||
1 | 0.43 | 1 | 0.43 |
2 | * Wrote basename. | 2 | * Wrote basename. |
3 | * Added freeramdisk, which will free up all memory associated | ||
4 | with a ram disk. Contributed by Emanuele Caratti <wiz@iol.it> | ||
5 | and then adjusted a bit by me. | ||
3 | * tar wouldn't create directory entries that don't end in '/', | 6 | * tar wouldn't create directory entries that don't end in '/', |
4 | now it does (thanks to Avery Pennarun <apenwarr@worldvisions.ca>) | 7 | now it does (thanks to Avery Pennarun <apenwarr@worldvisions.ca>) |
5 | * Several fixes from Pavel Roskin <pavel_roskin@geocities.com>: | 8 | * Several fixes from Pavel Roskin <pavel_roskin@geocities.com>: |
@@ -25,7 +25,7 @@ BUILDTIME := $(shell TZ=GMT date "+%Y%m%d-%H%M") | |||
25 | # Set the following to `true' to make a debuggable build. | 25 | # Set the following to `true' to make a debuggable build. |
26 | # Leave this set to `false' for production use. | 26 | # Leave this set to `false' for production use. |
27 | # eg: `make DODEBUG=true tests' | 27 | # eg: `make DODEBUG=true tests' |
28 | DODEBUG = false | 28 | DODEBUG = true |
29 | 29 | ||
30 | # If you want a static binary, turn this on. I can't think | 30 | # If you want a static binary, turn this on. I can't think |
31 | # of many situations where anybody would ever want it static, | 31 | # of many situations where anybody would ever want it static, |
diff --git a/applets/busybox.c b/applets/busybox.c index a80a5678f..ccf80a75e 100644 --- a/applets/busybox.c +++ b/applets/busybox.c | |||
@@ -97,6 +97,9 @@ static const struct Applet applets[] = { | |||
97 | #ifdef BB_FREE //usr/bin | 97 | #ifdef BB_FREE //usr/bin |
98 | {"free", free_main}, | 98 | {"free", free_main}, |
99 | #endif | 99 | #endif |
100 | #ifdef BB_FREERAMDISK //sbin | ||
101 | {"freeramdisk", freeramdisk_main}, | ||
102 | #endif | ||
100 | #ifdef BB_DEALLOCVT //usr/bin | 103 | #ifdef BB_DEALLOCVT //usr/bin |
101 | {"deallocvt", deallocvt_main}, | 104 | {"deallocvt", deallocvt_main}, |
102 | #endif | 105 | #endif |
@@ -97,6 +97,9 @@ static const struct Applet applets[] = { | |||
97 | #ifdef BB_FREE //usr/bin | 97 | #ifdef BB_FREE //usr/bin |
98 | {"free", free_main}, | 98 | {"free", free_main}, |
99 | #endif | 99 | #endif |
100 | #ifdef BB_FREERAMDISK //sbin | ||
101 | {"freeramdisk", freeramdisk_main}, | ||
102 | #endif | ||
100 | #ifdef BB_DEALLOCVT //usr/bin | 103 | #ifdef BB_DEALLOCVT //usr/bin |
101 | {"deallocvt", deallocvt_main}, | 104 | {"deallocvt", deallocvt_main}, |
102 | #endif | 105 | #endif |
diff --git a/busybox.def.h b/busybox.def.h index d42be4422..3407b2cc0 100644 --- a/busybox.def.h +++ b/busybox.def.h | |||
@@ -25,6 +25,7 @@ | |||
25 | //#define BB_FDFLUSH | 25 | //#define BB_FDFLUSH |
26 | #define BB_FIND | 26 | #define BB_FIND |
27 | #define BB_FREE | 27 | #define BB_FREE |
28 | #define BB_FREERAMDISK | ||
28 | #define BB_FSCK_MINIX | 29 | #define BB_FSCK_MINIX |
29 | #define BB_GREP | 30 | #define BB_GREP |
30 | #define BB_GUNZIP | 31 | #define BB_GUNZIP |
diff --git a/freeramdisk.c b/freeramdisk.c new file mode 100644 index 000000000..426e13231 --- /dev/null +++ b/freeramdisk.c | |||
@@ -0,0 +1,69 @@ | |||
1 | /* vi: set sw=4 ts=4: */ | ||
2 | /* | ||
3 | * freeramdisk implementation for busybox | ||
4 | * | ||
5 | * Copyright (C) 2000 and written by Emanuele Caratti <wiz@iol.it> | ||
6 | * Adjusted a bit by Erik Andersen <andersee@debian.org> | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License as published by | ||
10 | * the Free Software Foundation; either version 2 of the License, or | ||
11 | * (at your option) any later version. | ||
12 | * | ||
13 | * This program is distributed in the hope that it will be useful, | ||
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
16 | * General Public License for more details. | ||
17 | * | ||
18 | * You should have received a copy of the GNU General Public License | ||
19 | * along with this program; if not, write to the Free Software | ||
20 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
21 | * | ||
22 | */ | ||
23 | |||
24 | #include <stdio.h> | ||
25 | #include <string.h> | ||
26 | #include <sys/mount.h> | ||
27 | #include <sys/types.h> | ||
28 | #include <sys/stat.h> | ||
29 | #include <fcntl.h> | ||
30 | #include <sys/ioctl.h> | ||
31 | #include <errno.h> | ||
32 | #include "internal.h" | ||
33 | |||
34 | |||
35 | static const char freeramdisk_usage[] = | ||
36 | "freeramdisk DEVICE\n\n" | ||
37 | "Frees all memory used by the specified ramdisk.\n"; | ||
38 | |||
39 | extern int | ||
40 | freeramdisk_main(int argc, char **argv) | ||
41 | { | ||
42 | char rname[256] = "/dev/ram"; | ||
43 | int f; | ||
44 | |||
45 | if (argc >= 2 || ( argv[1] && *argv[1] == '-')) { | ||
46 | usage(freeramdisk_usage); | ||
47 | } | ||
48 | |||
49 | if (argc >1) | ||
50 | strcpy(rname, argv[1]); | ||
51 | |||
52 | if ((f = open(rname, O_RDWR)) == -1) { | ||
53 | fatalError( "freeramdisk: cannot open %s: %s", rname, strerror(errno)); | ||
54 | } | ||
55 | if (ioctl(f, BLKFLSBUF) < 0) { | ||
56 | fatalError( "freeramdisk: failed ioctl on %s: %s", rname, strerror(errno)); | ||
57 | } | ||
58 | close(f); | ||
59 | exit(TRUE); | ||
60 | } | ||
61 | |||
62 | /* | ||
63 | Local Variables: | ||
64 | c-file-style: "linux" | ||
65 | c-basic-offset: 4 | ||
66 | tab-width: 4 | ||
67 | End: | ||
68 | */ | ||
69 | |||
diff --git a/internal.h b/internal.h index 4c7bd97ed..b2714131f 100644 --- a/internal.h +++ b/internal.h | |||
@@ -80,6 +80,7 @@ extern int fdflush_main(int argc, char **argv); | |||
80 | extern int fsck_minix_main(int argc, char **argv); | 80 | extern int fsck_minix_main(int argc, char **argv); |
81 | extern int find_main(int argc, char** argv); | 81 | extern int find_main(int argc, char** argv); |
82 | extern int free_main(int argc, char** argv); | 82 | extern int free_main(int argc, char** argv); |
83 | extern int freeramdisk_main(int argc, char** argv); | ||
83 | extern int grep_main(int argc, char** argv); | 84 | extern int grep_main(int argc, char** argv); |
84 | extern int gunzip_main (int argc, char** argv); | 85 | extern int gunzip_main (int argc, char** argv); |
85 | extern int gzip_main(int argc, char** argv); | 86 | extern int gzip_main(int argc, char** argv); |
diff --git a/util-linux/freeramdisk.c b/util-linux/freeramdisk.c new file mode 100644 index 000000000..426e13231 --- /dev/null +++ b/util-linux/freeramdisk.c | |||
@@ -0,0 +1,69 @@ | |||
1 | /* vi: set sw=4 ts=4: */ | ||
2 | /* | ||
3 | * freeramdisk implementation for busybox | ||
4 | * | ||
5 | * Copyright (C) 2000 and written by Emanuele Caratti <wiz@iol.it> | ||
6 | * Adjusted a bit by Erik Andersen <andersee@debian.org> | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License as published by | ||
10 | * the Free Software Foundation; either version 2 of the License, or | ||
11 | * (at your option) any later version. | ||
12 | * | ||
13 | * This program is distributed in the hope that it will be useful, | ||
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
16 | * General Public License for more details. | ||
17 | * | ||
18 | * You should have received a copy of the GNU General Public License | ||
19 | * along with this program; if not, write to the Free Software | ||
20 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
21 | * | ||
22 | */ | ||
23 | |||
24 | #include <stdio.h> | ||
25 | #include <string.h> | ||
26 | #include <sys/mount.h> | ||
27 | #include <sys/types.h> | ||
28 | #include <sys/stat.h> | ||
29 | #include <fcntl.h> | ||
30 | #include <sys/ioctl.h> | ||
31 | #include <errno.h> | ||
32 | #include "internal.h" | ||
33 | |||
34 | |||
35 | static const char freeramdisk_usage[] = | ||
36 | "freeramdisk DEVICE\n\n" | ||
37 | "Frees all memory used by the specified ramdisk.\n"; | ||
38 | |||
39 | extern int | ||
40 | freeramdisk_main(int argc, char **argv) | ||
41 | { | ||
42 | char rname[256] = "/dev/ram"; | ||
43 | int f; | ||
44 | |||
45 | if (argc >= 2 || ( argv[1] && *argv[1] == '-')) { | ||
46 | usage(freeramdisk_usage); | ||
47 | } | ||
48 | |||
49 | if (argc >1) | ||
50 | strcpy(rname, argv[1]); | ||
51 | |||
52 | if ((f = open(rname, O_RDWR)) == -1) { | ||
53 | fatalError( "freeramdisk: cannot open %s: %s", rname, strerror(errno)); | ||
54 | } | ||
55 | if (ioctl(f, BLKFLSBUF) < 0) { | ||
56 | fatalError( "freeramdisk: failed ioctl on %s: %s", rname, strerror(errno)); | ||
57 | } | ||
58 | close(f); | ||
59 | exit(TRUE); | ||
60 | } | ||
61 | |||
62 | /* | ||
63 | Local Variables: | ||
64 | c-file-style: "linux" | ||
65 | c-basic-offset: 4 | ||
66 | tab-width: 4 | ||
67 | End: | ||
68 | */ | ||
69 | |||
@@ -84,7 +84,6 @@ extern void errorMsg(char *s, ...) | |||
84 | 84 | ||
85 | va_start(p, s); | 85 | va_start(p, s); |
86 | fflush(stdout); | 86 | fflush(stdout); |
87 | fprintf(stderr, "\n"); | ||
88 | vfprintf(stderr, s, p); | 87 | vfprintf(stderr, s, p); |
89 | fprintf(stderr, "\n"); | 88 | fprintf(stderr, "\n"); |
90 | va_end(p); | 89 | va_end(p); |
@@ -96,7 +95,6 @@ extern void fatalError(char *s, ...) | |||
96 | 95 | ||
97 | va_start(p, s); | 96 | va_start(p, s); |
98 | fflush(stdout); | 97 | fflush(stdout); |
99 | fprintf(stderr, "\n"); | ||
100 | vfprintf(stderr, s, p); | 98 | vfprintf(stderr, s, p); |
101 | fprintf(stderr, "\n"); | 99 | fprintf(stderr, "\n"); |
102 | va_end(p); | 100 | va_end(p); |