factor: factor2 variable is unused now, drop it
[oweals/busybox.git] / docs / keep_data_small.txt
index 9fc799646a3ad44a3fcf011d2662a377746c4463..218d4f2eeb6bbae9019713dfc667f8240bc42c3d 100644 (file)
@@ -59,7 +59,7 @@ wait
                Example 1
 
 One example how to reduce global data usage is in
-archival/libarchive/decompress_unzip.c:
+archival/libarchive/decompress_gunzip.c:
 
 /* This is somewhat complex-looking arrangement, but it allows
  * to place decompressor state either in bss or in
@@ -87,7 +87,7 @@ take a look at archival/gzip.c. Here all global data is replaced by
 single global pointer (ptr_to_globals) to allocated storage.
 
 In order to not duplicate ptr_to_globals in every applet, you can
-reuse single common one. It is defined in libbb/messages.c
+reuse single common one. It is defined in libbb/ptr_to_globals.c
 as struct globals *const ptr_to_globals, but the struct globals is
 NOT defined in libbb.h. You first define your own struct:
 
@@ -103,7 +103,15 @@ smaller code. In order to assign it, use SET_PTR_TO_GLOBALS macro:
 
        SET_PTR_TO_GLOBALS(xzalloc(sizeof(G)));
 
-Typically it is done in <applet>_main().
+Typically it is done in <applet>_main(). Another variation is
+to use stack:
+
+int <applet>_main(...)
+{
+#undef G
+       struct globals G;
+       memset(&G, 0, sizeof(G));
+       SET_PTR_TO_GLOBALS(&G);
 
 Now you can reference "globals" by G.a, G.buf and so on, in any function.