aboutsummaryrefslogtreecommitdiff
path: root/miscutils
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2010-08-29 14:36:11 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2010-08-29 14:36:11 +0200
commit9ce07e778f05719115f354d4907f51295fb3fd1a (patch)
tree1f204121b58c0a86904e376d2fc6b08f9c3ce881 /miscutils
parent7715b48c36a453b41f4555ee57c2f936e25f06f1 (diff)
downloadbusybox-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.src14
-rw-r--r--miscutils/bbconfig.c22
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
25config 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
25config BEEP 39config 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
7int bbconfig_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; 11int bbconfig_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
8int bbconfig_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM) 12int 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}