diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2010-08-29 14:36:11 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2010-08-29 14:36:11 +0200 |
commit | 9ce07e778f05719115f354d4907f51295fb3fd1a (patch) | |
tree | 1f204121b58c0a86904e376d2fc6b08f9c3ce881 /miscutils | |
parent | 7715b48c36a453b41f4555ee57c2f936e25f06f1 (diff) | |
download | busybox-w32-9ce07e778f05719115f354d4907f51295fb3fd1a.tar.gz busybox-w32-9ce07e778f05719115f354d4907f51295fb3fd1a.tar.bz2 busybox-w32-9ce07e778f05719115f354d4907f51295fb3fd1a.zip |
bbconfig: add COMPRESS_BBCONFIG option
function old new delta
bbconfig_config_bz2 - 4905 +4905
bbconfig_main 13 70 +57
bbconfig_config 21811 - -21811
------------------------------------------------------------------------------
(add/remove: 1/1 grow/shrink: 1/0 up/down: 4962/-21811) Total: -16849 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'miscutils')
-rw-r--r-- | miscutils/Config.src | 14 | ||||
-rw-r--r-- | miscutils/bbconfig.c | 22 |
2 files changed, 36 insertions, 0 deletions
diff --git a/miscutils/Config.src b/miscutils/Config.src index cadaabb65..151f61bcc 100644 --- a/miscutils/Config.src +++ b/miscutils/Config.src | |||
@@ -22,6 +22,20 @@ config BBCONFIG | |||
22 | The bbconfig applet will print the config file with which | 22 | The bbconfig applet will print the config file with which |
23 | busybox was built. | 23 | busybox was built. |
24 | 24 | ||
25 | config FEATURE_COMPRESS_BBCONFIG | ||
26 | bool "Compress bbconfig data" | ||
27 | default y | ||
28 | depends on BBCONFIG | ||
29 | help | ||
30 | Store bbconfig data in compressed form, uncompress them on-the-fly | ||
31 | before output. | ||
32 | |||
33 | If you have a really tiny busybox with few applets enabled (and | ||
34 | bunzip2 isn't one of them), the overhead of the decompressor might | ||
35 | be noticeable. Also, if you run executables directly from ROM | ||
36 | and have very little memory, this might not be a win. Otherwise, | ||
37 | you probably want this. | ||
38 | |||
25 | config BEEP | 39 | config BEEP |
26 | bool "beep" | 40 | bool "beep" |
27 | default y | 41 | default y |
diff --git a/miscutils/bbconfig.c b/miscutils/bbconfig.c index 0d649b4e5..286077168 100644 --- a/miscutils/bbconfig.c +++ b/miscutils/bbconfig.c | |||
@@ -3,10 +3,32 @@ | |||
3 | */ | 3 | */ |
4 | #include "libbb.h" | 4 | #include "libbb.h" |
5 | #include "bbconfigopts.h" | 5 | #include "bbconfigopts.h" |
6 | #if ENABLE_FEATURE_COMPRESS_BBCONFIG | ||
7 | # include "unarchive.h" | ||
8 | # include "bbconfigopts_bz2.h" | ||
9 | #endif | ||
6 | 10 | ||
7 | int bbconfig_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; | 11 | int bbconfig_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; |
8 | int bbconfig_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM) | 12 | int bbconfig_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM) |
9 | { | 13 | { |
14 | #if ENABLE_FEATURE_COMPRESS_BBCONFIG | ||
15 | bunzip_data *bd; | ||
16 | int i = start_bunzip(&bd, | ||
17 | /* src_fd: */ -1, | ||
18 | /* inbuf: */ (void *)bbconfig_config_bz2, | ||
19 | /* len: */ sizeof(bbconfig_config_bz2)); | ||
20 | /* read_bunzip can longjmp to start_bunzip, and ultimately | ||
21 | * end up here with i != 0 on read data errors! Not trivial */ | ||
22 | if (!i) { | ||
23 | /* Cannot use xmalloc: will leak bd in NOFORK case! */ | ||
24 | char *outbuf = malloc_or_warn(sizeof(bbconfig_config)); | ||
25 | if (outbuf) { | ||
26 | read_bunzip(bd, outbuf, sizeof(bbconfig_config)); | ||
27 | full_write1_str(outbuf); | ||
28 | } | ||
29 | } | ||
30 | #else | ||
10 | full_write1_str(bbconfig_config); | 31 | full_write1_str(bbconfig_config); |
32 | #endif | ||
11 | return 0; | 33 | return 0; |
12 | } | 34 | } |