From d0a071a5281f8ba4b291f0c3beb74bee1f8df6a3 Mon Sep 17 00:00:00 2001 From: Denis Vlasenko Date: Mon, 17 Mar 2008 09:33:45 +0000 Subject: brctl: eliminate stray data object brctl: use constant fd to reduce parameter passing runsvdir: do not use data/bss od: reuse bb_argv_dash last: do not go into endless loop on read error mount: make it not fail scripts/find_bad_common_bufsiz check dc: add INIT_G() (no-op for dc, but we want uniform usage of "G trick") function old new delta runsvdir_main 1646 1672 +26 set_pgrp 1 - -1 exitsoon 1 - -1 check 679 678 -1 svnum 4 - -4 svdir 4 - -4 sv 4 - -4 stamplog 4 - -4 rploglen 4 - -4 rplog 4 - -4 mount_main 995 988 -7 static.default_file_list 8 - -8 pfd 8 - -8 logpipe 8 - -8 static.info 20 - -20 brctl_main 767 739 -28 ------------------------------------------------------------------------------ (add/remove: 0/12 grow/shrink: 1/3 up/down: 26/-106) Total: -80 bytes text data bss dec hex filename 793327 662 7412 801401 c3a79 busybox_old 793329 641 7372 801342 c3a3e busybox_unstripped --- runit/runsvdir.c | 41 ++++++++++++++++++++++++++++++----------- 1 file changed, 30 insertions(+), 11 deletions(-) (limited to 'runit/runsvdir.c') diff --git a/runit/runsvdir.c b/runit/runsvdir.c index bca5c901c..32e4764d1 100644 --- a/runit/runsvdir.c +++ b/runit/runsvdir.c @@ -42,17 +42,34 @@ struct service { smallint isgone; }; -static struct service *sv; -static char *svdir; -static int svnum; -static char *rplog; -static int rploglen; -static struct fd_pair logpipe; -static struct pollfd pfd[1]; -static unsigned stamplog; -static smallint check = 1; -static smallint exitsoon; -static smallint set_pgrp; +struct globals { + struct service *sv; + char *svdir; + char *rplog; + int svnum; + int rploglen; + struct fd_pair logpipe; + struct pollfd pfd[1]; + unsigned stamplog; + smallint check; /* = 1; */ + smallint exitsoon; + smallint set_pgrp; +}; +#define G (*(struct globals*)&bb_common_bufsiz1) +#define sv (G.sv ) +#define svdir (G.svdir ) +#define rplog (G.rplog ) +#define svnum (G.svnum ) +#define rploglen (G.rploglen ) +#define logpipe (G.logpipe ) +#define pfd (G.pfd ) +#define stamplog (G.stamplog ) +#define check (G.check ) +#define exitsoon (G.exitsoon ) +#define set_pgrp (G.set_pgrp ) +#define INIT_G() do { \ + check = 1; \ +} while (0) static void fatal2_cannot(const char *m1, const char *m2) { @@ -222,6 +239,8 @@ int runsvdir_main(int argc ATTRIBUTE_UNUSED, char **argv) char ch; int i; + INIT_G(); + argv++; if (!*argv) bb_show_usage(); -- cgit v1.2.3