i should explain further, since this is sneaky. since we're calling ARGBEGIN lots of times, we hit a special case. the defn is
#define ARGBEGIN for((argv0||(argv0=*argv)),argv++,argc--;\ a subsequent call to ARGBEGIN will not reset argv0, and worse, argv0 can be pointing to bogus memory. - erik