This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] manual: Document optind zero set behaviour (BZ#23157)


On 05/21/2018 03:38 PM, Adhemerval Zanella wrote:
> POSIX [1] does not explicit state the expected way to rescans the same
> vector more than once.  FreeBSD [2], for instance, exports a non-standard
> variable 'optreset' which must be set to '1' prior the second and each
> additional call to 'getopt'.  GLIBC in turn requires the program to
> reset 'optind' to 0 instead (and POSIX states the behavior is unspecified).

I see 5 getopt test cases that use optind = 1 to reparse the options.

Is it optind = 1 or optind = 0?

Can you verify the exact behaviour by adding a specific test case that
tests for *just* this particular behaviour?

> Unfortunately this is not documented on the manual, only on man-pages [3]
> (on NOTES).  This patch adds an explanation of this behavior on manual.
> 
> 	* manual/getopt.texi: Document optind zero set behaviour.
> 
> [1] http://pubs.opengroup.org/onlinepubs/9699919799/
> [2] https://www.freebsd.org/cgi/man.cgi?getopt(3)
> [3] http://man7.org/linux/man-pages/man3/getopt.3.html
> ---
>  ChangeLog          | 4 ++++
>  manual/getopt.texi | 6 ++++++
>  2 files changed, 10 insertions(+)
> 
> diff --git a/manual/getopt.texi b/manual/getopt.texi
> index 5485fc4..a4f6366 100644
> --- a/manual/getopt.texi
> +++ b/manual/getopt.texi
> @@ -45,6 +45,12 @@ of the @var{argv} array to be processed.  Once @code{getopt} has found
>  all of the option arguments, you can use this variable to determine
>  where the remaining non-option arguments begin.  The initial value of
>  this variable is @code{1}.
> +
> +Resetting the variable value to @code{0} forces the invocation of an
> +internal initialization routine and it is used mainly when a program
> +wants to rescan the same vector more than once.  It also should be used
> +to scan multiple argument vectors or if @code{POSIXLY_CORRECT} is changed
> +between scans.
>  @end deftypevar

Suggest:
Resetting the variable's value to @code{0} forces the invocation of an
internal initialization routine and, on subsequent calls to getopt, causes
the program to rescan the same vector more than once.  This behaviour may
also be used to scan multiple argument vectors or if @code{POSIXLY_CORRECT}
is changed between scans.
  
>  @deftypevar {char *} optarg
> 

-- 
Cheers,
Carlos.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]