aboutsummaryrefslogtreecommitdiff
path: root/miscutils/bbconfig.c
diff options
context:
space:
mode:
Diffstat (limited to 'miscutils/bbconfig.c')
-rw-r--r--miscutils/bbconfig.c22
1 files changed, 22 insertions, 0 deletions
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}