-static char *set_user;
-static char *env_user;
-static const char *env_dir;
-static long limitd = -2;
-static long limits = -2;
-static long limitl = -2;
-static long limita = -2;
-static long limito = -2;
-static long limitp = -2;
-static long limitf = -2;
-static long limitc = -2;
-static long limitr = -2;
-static long limitt = -2;
-static int nicelvl;
-static const char *root;
+struct globals {
+ char *set_user;
+ char *env_user;
+ const char *env_dir;
+ const char *root;
+ long limitd; /* limitX are initialized to -2 */
+ long limits;
+ long limitl;
+ long limita;
+ long limito;
+ long limitp;
+ long limitf;
+ long limitc;
+ long limitr;
+ long limitt;
+ int nicelvl;
+};
+#define G (*(struct globals*)&bb_common_bufsiz1)
+#define set_user (G.set_user)
+#define env_user (G.env_user)
+#define env_dir (G.env_dir )
+#define root (G.root )
+#define limitd (G.limitd )
+#define limits (G.limits )
+#define limitl (G.limitl )
+#define limita (G.limita )
+#define limito (G.limito )
+#define limitp (G.limitp )
+#define limitf (G.limitf )
+#define limitc (G.limitc )
+#define limitr (G.limitr )
+#define limitt (G.limitt )
+#define nicelvl (G.nicelvl )
+#define INIT_G() do { \
+ long *p = &limitd; \
+ do *p++ = -2; while (p <= &limitt); \
+} while (0)