tar: support -T - and -X -
[oweals/busybox.git] / miscutils / bbconfig.c
index ee566788b4d0de9d59e22673c01a91970d40a17e..7c30669a33635eb824eed9f89cbc9f5486ef0a10 100644 (file)
@@ -3,10 +3,32 @@
  */
 #include "libbb.h"
 #include "bbconfigopts.h"
+#if ENABLE_FEATURE_COMPRESS_BBCONFIG
+# include "archive.h"
+# include "bbconfigopts_bz2.h"
+#endif
 
 int bbconfig_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
-int bbconfig_main(int argc, char **argv)
+int bbconfig_main(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
 {
-       printf(bbconfig_config);
+#if ENABLE_FEATURE_COMPRESS_BBCONFIG
+       bunzip_data *bd;
+       int i = start_bunzip(&bd,
+                       /* src_fd: */ -1,
+                       /* inbuf:  */ bbconfig_config_bz2,
+                       /* len:    */ sizeof(bbconfig_config_bz2));
+       /* read_bunzip can longjmp to start_bunzip, and ultimately
+        * end up here with i != 0 on read data errors! Not trivial */
+       if (!i) {
+               /* Cannot use xmalloc: will leak bd in NOFORK case! */
+               char *outbuf = malloc_or_warn(sizeof(bbconfig_config));
+               if (outbuf) {
+                       read_bunzip(bd, outbuf, sizeof(bbconfig_config));
+                       full_write1_str(outbuf);
+               }
+       }
+#else
+       full_write1_str(bbconfig_config);
+#endif
        return 0;
 }