[PATCH] one more hdparm patch with command line parsing bug fix
Tito
farmatito at tiscali.it
Sun May 14 09:01:13 PDT 2006
On Sunday 14 May 2006 16:55, Tito wrote:
> On Saturday 13 May 2006 23:01, Tito wrote:
> > On Saturday 13 May 2006 22:04, you wrote:
> > > On Sat, May 13, 2006 at 09:24:48PM +0200, Tito wrote:
> > > >On Saturday 13 May 2006 18:43, Bernhard Fischer wrote:
> > > >>
> >
> > BTW:
> >
> > +#define opt_noisy (1<<0)
> > +#define opt_verbose (1<<1)
> > +#define opt_get_identity (1<<2)
> > +#define opt_get_geom (1<<3)
> > +#define opt_quiet (1<<4)
> > +#define opt_do_flush (1<<5)
> > +#define opt_do_ctimings (1<<6)
> > +#define opt_do_timings (1<<7)
> >
> > by doing this for all the options don't we risk to overflow static unsigned int opts = 1; /* noisy is on */
> > as this was the problem that made impossible to use bb_getoptulflags without additonal patches from
> > vodz and even with them it was very problematic.
> >
> > Think that we have to manage 38 options
> >
> > #define opt_38th (1<<37) ??? is this ok
> >
> > Ciao,
> > Tito
> >
>
> Maybe something like this would resolve the problem of overflowing the var holding opts.
>
> char opt[n]; /* initialize all to '\0' ? maybe memset or the compiler does it for us ? */
>
> #define opt_noisy opt[0]
> #define opt_verbose opt[1]
> #define opt_get_identity opt[2]
> #define opt_get_geom opt[3]
> #define opt_quiet opt[4]
> #define opt_do_flush opt[5]
> #define opt_do_ctimings opt[6]
> #define opt_do_timings opt[8]
> #define set_* opt[x]
> #define get_* opt[y]
>
> and so on.
>
> to turn an option on
> opt[0] ='1';
>
> to test
>
> if (opt_verbose) /* if (opt[1])
>
> So we could handle whatever number of flags (and/or commandline opts) with one char string
> and remove about 60 long or int vars.
>
> What do you think about it?
>
> Ciao,
> Tito
Update, I have tested this with all 61 vars, it works fine but increases the size slightly
to text data bss dec hex filename
22110 144 712 22966 59b6 hdparm.o
:-(
Tito
>
>
> > >
> > > The set_* get_* should be treated the same way, i.e just mask the bits
> > > which are set and use one unsigned long flgs or something like this.
> > >
> > > Feel free to incooperate any of these changes into your patch.
> > >
> > > Cheers and sorry for being grumpy
> > >
> _______________________________________________
> busybox mailing list
> busybox at busybox.net
> http://busybox.net/cgi-bin/mailman/listinfo/busybox
>
More information about the busybox
mailing list