summaryrefslogtreecommitdiff
path: root/miscutils/bbconfig.c (plain)
blob: 4781a42763d0483fe64be15fd46afabb9e7649b9
1/* vi: set sw=4 ts=4: */
2/* This file was released into the public domain by Paul Fox.
3 */
4//config:config BBCONFIG
5//config: bool "bbconfig"
6//config: default n
7//config: help
8//config: The bbconfig applet will print the config file with which
9//config: busybox was built.
10//config:
11//config:config FEATURE_COMPRESS_BBCONFIG
12//config: bool "Compress bbconfig data"
13//config: default y
14//config: depends on BBCONFIG
15//config: help
16//config: Store bbconfig data in compressed form, uncompress them on-the-fly
17//config: before output.
18//config:
19//config: If you have a really tiny busybox with few applets enabled (and
20//config: bunzip2 isn't one of them), the overhead of the decompressor might
21//config: be noticeable. Also, if you run executables directly from ROM
22//config: and have very little memory, this might not be a win. Otherwise,
23//config: you probably want this.
24
25//applet:IF_BBCONFIG(APPLET(bbconfig, BB_DIR_BIN, BB_SUID_DROP))
26
27//kbuild:lib-$(CONFIG_BBCONFIG) += bbconfig.o
28
29//usage:#define bbconfig_trivial_usage
30//usage: ""
31//usage:#define bbconfig_full_usage "\n\n"
32//usage: "Print the config file used by busybox build"
33
34#include "libbb.h"
35#include "bbconfigopts.h"
36#if ENABLE_FEATURE_COMPRESS_BBCONFIG
37# include "bb_archive.h"
38# include "bbconfigopts_bz2.h"
39#endif
40
41int bbconfig_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
42int bbconfig_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
43{
44#if ENABLE_FEATURE_COMPRESS_BBCONFIG
45 bunzip_data *bd;
46 int i = start_bunzip(&bd,
47 /* src_fd: */ -1,
48 /* inbuf: */ bbconfig_config_bz2,
49 /* len: */ sizeof(bbconfig_config_bz2));
50 /* read_bunzip can longjmp to start_bunzip, and ultimately
51 * end up here with i != 0 on read data errors! Not trivial */
52 if (!i) {
53 /* Cannot use xmalloc: will leak bd in NOFORK case! */
54 char *outbuf = malloc_or_warn(sizeof(bbconfig_config));
55 if (outbuf) {
56 read_bunzip(bd, outbuf, sizeof(bbconfig_config));
57 full_write1_str(outbuf);
58 }
59 }
60#else
61 full_write1_str(bbconfig_config);
62#endif
63 return 0;
64}
65