Otavio Salvador wrote:
> [EMAIL PROTECTED] writes:
> > From: Benno Schulenberg <[EMAIL PROTECTED]>
> >
> >  _parse_options (int* argc_ptr, char*** argv_ptr)
> >  {
> > [snip]
> >  }
> >
> > +if (wrong == 1)
> > +        return 0;
> > +
> >  *argc_ptr -= optind;
> >  *argv_ptr += optind;
> >  return 1;
>
> I think the if (wrong == 1) block needs to be after the pointers
> change.

You will have to explain why, since when _parse_options() returns 
with 0, _init() immediately jumps to error_done_commands and the 
arg pointers aren't used any more, as far as I can tell.  But it 
won't do any harm to put the return after those pointer changes.
So, okay.

> Another way of doing it might be changing the last return to:
>
> #v+
>         return !wrong;
> #v-
>
> What do you think?

That is indeed more elegant.  New patch is coming up.

But that is not enough to make option parsing satisfactory:
  parted -lm
and
  parted -ml
do not behave the same way.  And GNU policy says that the order of 
options shouldn't matter.

Also
  parted -NONSENSE -l -NONSENSE
will happily execute the -l option, whereas for example grep will 
not do anything wen it finds just a single option that it doesn't 
understand.  And parted is dangerous -- it should be at least as 
reluctant to do anything when the input is not entirely correct.

So the option handling needs some more work.  But not today.  :)

Benno


_______________________________________________
bug-parted mailing list
bug-parted@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-parted

Reply via email to