Blame lib/getopt-ext.h

Packit 8f70b4
/* Declarations for getopt (GNU extensions).
Packit 8f70b4
   Copyright (C) 1989-2018 Free Software Foundation, Inc.
Packit 8f70b4
   This file is part of the GNU C Library and is also part of gnulib.
Packit 8f70b4
   Patches to this file should be submitted to both projects.
Packit 8f70b4
Packit 8f70b4
   The GNU C Library is free software; you can redistribute it and/or
Packit 8f70b4
   modify it under the terms of the GNU General Public
Packit 8f70b4
   License as published by the Free Software Foundation; either
Packit 8f70b4
   version 3 of the License, or (at your option) any later version.
Packit 8f70b4
Packit 8f70b4
   The GNU C Library is distributed in the hope that it will be useful,
Packit 8f70b4
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 8f70b4
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit 8f70b4
   General Public License for more details.
Packit 8f70b4
Packit 8f70b4
   You should have received a copy of the GNU General Public
Packit 8f70b4
   License along with the GNU C Library; if not, see
Packit 8f70b4
   <https://www.gnu.org/licenses/>.  */
Packit 8f70b4
Packit 8f70b4
#ifndef _GETOPT_EXT_H
Packit 8f70b4
#define _GETOPT_EXT_H 1
Packit 8f70b4
Packit 8f70b4
/* This header should not be used directly; include getopt.h instead.
Packit 8f70b4
   Unlike most bits headers, it does not have a protective #error,
Packit 8f70b4
   because the guard macro for getopt.h in gnulib is not fixed.  */
Packit 8f70b4
Packit 8f70b4
__BEGIN_DECLS
Packit 8f70b4
Packit 8f70b4
/* Describe the long-named options requested by the application.
Packit 8f70b4
   The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
Packit 8f70b4
   of 'struct option' terminated by an element containing a name which is
Packit 8f70b4
   zero.
Packit 8f70b4
Packit 8f70b4
   The field 'has_arg' is:
Packit 8f70b4
   no_argument		(or 0) if the option does not take an argument,
Packit 8f70b4
   required_argument	(or 1) if the option requires an argument,
Packit 8f70b4
   optional_argument 	(or 2) if the option takes an optional argument.
Packit 8f70b4
Packit 8f70b4
   If the field 'flag' is not NULL, it points to a variable that is set
Packit 8f70b4
   to the value given in the field 'val' when the option is found, but
Packit 8f70b4
   left unchanged if the option is not found.
Packit 8f70b4
Packit 8f70b4
   To have a long-named option do something other than set an 'int' to
Packit 8f70b4
   a compiled-in constant, such as set a value from 'optarg', set the
Packit 8f70b4
   option's 'flag' field to zero and its 'val' field to a nonzero
Packit 8f70b4
   value (the equivalent single-letter option character, if there is
Packit 8f70b4
   one).  For long options that have a zero 'flag' field, 'getopt'
Packit 8f70b4
   returns the contents of the 'val' field.  */
Packit 8f70b4
Packit 8f70b4
struct option
Packit 8f70b4
{
Packit 8f70b4
  const char *name;
Packit 8f70b4
  /* has_arg can't be an enum because some compilers complain about
Packit 8f70b4
     type mismatches in all the code that assumes it is an int.  */
Packit 8f70b4
  int has_arg;
Packit 8f70b4
  int *flag;
Packit 8f70b4
  int val;
Packit 8f70b4
};
Packit 8f70b4
Packit 8f70b4
/* Names for the values of the 'has_arg' field of 'struct option'.  */
Packit 8f70b4
Packit 8f70b4
#define no_argument		0
Packit 8f70b4
#define required_argument	1
Packit 8f70b4
#define optional_argument	2
Packit 8f70b4
Packit 8f70b4
extern int getopt_long (int ___argc, char *__getopt_argv_const *___argv,
Packit 8f70b4
			const char *__shortopts,
Packit 8f70b4
		        const struct option *__longopts, int *__longind)
Packit 8f70b4
       __THROW _GL_ARG_NONNULL ((2, 3));
Packit 8f70b4
extern int getopt_long_only (int ___argc, char *__getopt_argv_const *___argv,
Packit 8f70b4
			     const char *__shortopts,
Packit 8f70b4
		             const struct option *__longopts, int *__longind)
Packit 8f70b4
       __THROW _GL_ARG_NONNULL ((2, 3));
Packit 8f70b4
Packit 8f70b4
__END_DECLS
Packit 8f70b4
Packit 8f70b4
#endif /* _GETOPT_EXT_H */