Hi, On Tuesday 27 March 2007 13:54, Mats Erik Andersson wrote: > Find and remove unnecessary references to GNU-getopt > in order that getopt-susv3 be a viable choice for > at least minimal configurations of Busybox.
If the only difference is long options, then just disable CONFIG_GETOPT_LONG and magically all long options switch off. After this busybox should compile and link against libc with getopt-susv3, no? (Well, except these three applets which use getopt_long *not* thru getopt32) run_parts.c dumpleases.c getopt.c > In particular, this means identifying places where getopt_long > ought to be avoided or forced to be explicitly invoked in a > configuration by the system builder. For this posting I must > disregard anything that depends on getopt32, a speciality of > Busybox, to get starting at all. You do not need to disregard 90% of applets. Internally getopt32() uses getopt() (or getopt_long() if CONFIG_GETOPT_LONG=y). > Using 'grep' I constructed a list of all source files in > Busybox 1.4.0 which call upon getopt.h without using getopt32, > and I did a quick crosscheck against busybox-20070327 to be safe. > This test is done against 1.4.0 since I run two minimal, but different, > systems based on that Busybox edition, and thus can test quickly. The > hits are as follows. I comment individually on them afterwards. > > coreutils/od.c > debianutils/run_parts.c > e2fsprogs/old_e2fsprogs/blkid/dev.c > e2fsprogs/old_e2fsprogs/blkid/tag.c > e2fsprogs/old_e2fsprogs/e2fsck.h > e2fsprogs/old_e2fsprogs/mke2fs.c > e2fsprogs/old_e2fsprogs/tune2fs.c > networking/udhcp/dumpleases.c > shell/hush.c > util-linux/getopt.c > util-linux/hexdump.c > > a) od.c and hexdump.c are very similar. They do not use > long options only standard getopt(argc,argv,opts). > Therefore I tested an alteration to hexdump.c: > > #include "busybox.h" > /* #include <getopt.h> Declaration is already in > busybox.h->libbb.h->unistd.h */ > #include "dump.h" > > Of course I gained nothing except a functional busybox > binary of the same size, but it compiles without errors > and I know (believe?) that getopt-susv3 suffices for od/hexdump. > d) hush.c is clearly coded with short options, yet uses the full > include/getopt.h. I se no reason it should not respond well to > an alteration > > /* #include <getopt.h> */ > #include <unistd.h> To me it looks like bbox with CONFIG_GETOPT_LONG=n and without run_parts, dumpleases, getopt is already can be compiled with susv3 getopt. Make these three applets dependent on CONFIG_GETOPT_LONG=y (or #ifdef out "long options" parts of them (example: dhcpc.c)) and you will have just one option controlling whether you can compile busybox against getopt-sysv3. BTW, what is the size difference? -- vda _______________________________________________ busybox mailing list [email protected] http://busybox.net/cgi-bin/mailman/listinfo/busybox
