Ignore:
Timestamp:
Jul 2, 2005, 4:31:40 AM (20 years ago)
Author:
bird
Message:

o Ported GLIBC argp and getopt (argp requires the GLIBC one).

This means no optreset anylonger.

o Some corrections / hacks in the weak_alias departement.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/emx/include/getopt.h

    • Property cvs2svn:cvs-rev changed from 1.7 to 1.8
    r2143 r2144  
    1 /* getopt.h,v 1.6 2004/09/14 22:27:33 bird Exp */
     1/* Declarations for getopt.
     2   Copyright (C) 1989-1994,1996-1999,2001,2003,2004
     3   Free Software Foundation, Inc.
     4   This file is part of the GNU C Library.
     5
     6   The GNU C Library is free software; you can redistribute it and/or
     7   modify it under the terms of the GNU Lesser General Public
     8   License as published by the Free Software Foundation; either
     9   version 2.1 of the License, or (at your option) any later version.
     10
     11   The GNU C Library is distributed in the hope that it will be useful,
     12   but WITHOUT ANY WARRANTY; without even the implied warranty of
     13   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     14   Lesser General Public License for more details.
     15
     16   You should have received a copy of the GNU Lesser General Public
     17   License along with the GNU C Library; if not, write to the Free
     18   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
     19   02111-1307 USA.  */
     20
    221/** @file
    3  * FreeBSD 5.2
    4  * @changed bird: Added one GNU api from libiberty.
     22 * GLIBC 2.3.4
    523 */
    624
    7 /*      $NetBSD: getopt.h,v 1.4 2000/07/07 10:43:54 ad Exp $    */
    8 /*      $FreeBSD: src/include/getopt.h,v 1.6 2004/02/24 08:09:20 ache Exp $ */
     25#ifndef _GETOPT_H
    926
    10 /*-
    11  * Copyright (c) 2000 The NetBSD Foundation, Inc.
    12  * All rights reserved.
    13  *
    14  * This code is derived from software contributed to The NetBSD Foundation
    15  * by Dieter Baron and Thomas Klausner.
    16  *
    17  * Redistribution and use in source and binary forms, with or without
    18  * modification, are permitted provided that the following conditions
    19  * are met:
    20  * 1. Redistributions of source code must retain the above copyright
    21  *    notice, this list of conditions and the following disclaimer.
    22  * 2. Redistributions in binary form must reproduce the above copyright
    23  *    notice, this list of conditions and the following disclaimer in the
    24  *    documentation and/or other materials provided with the distribution.
    25  * 3. All advertising materials mentioning features or use of this software
    26  *    must display the following acknowledgement:
    27  *        This product includes software developed by the NetBSD
    28  *        Foundation, Inc. and its contributors.
    29  * 4. Neither the name of The NetBSD Foundation nor the names of its
    30  *    contributors may be used to endorse or promote products derived
    31  *    from this software without specific prior written permission.
    32  *
    33  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
    34  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
    35  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
    36  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
    37  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    38  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    39  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    40  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    41  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    42  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    43  * POSSIBILITY OF SUCH DAMAGE.
    44  */
     27#ifndef __need_getopt
     28# define _GETOPT_H 1
     29#endif
    4530
    46 #ifndef _GETOPT_H_
    47 #define _GETOPT_H_
     31/* If __GNU_LIBRARY__ is not already defined, either we are being used
     32   standalone, or this is the first header included in the source file.
     33   If we are being used with glibc, we need to include <features.h>, but
     34   that does not exist if we are standalone.  So: if __GNU_LIBRARY__ is
     35   not defined, include <ctype.h>, which will pull in <features.h> for us
     36   if it's from glibc.  (Why ctype.h?  It's guaranteed to exist and it
     37   doesn't flood the namespace with stuff the way some other headers do.)  */
     38#if !defined __GNU_LIBRARY__
     39# include <ctype.h>
     40#endif
    4841
    49 #include <sys/cdefs.h>
     42#ifndef __THROW
     43# ifndef __GNUC_PREREQ
     44#  define __GNUC_PREREQ(maj, min) (0)
     45# endif
     46# if defined __cplusplus && __GNUC_PREREQ (2,8)
     47#  define __THROW       throw ()
     48# else
     49#  define __THROW
     50# endif
     51#endif
    5052
    51 /*
    52  * GNU-like getopt_long()/getopt_long_only() with 4.4BSD optreset extension.
    53  * getopt() is declared here too for GNU programs.
    54  */
    55 #define no_argument        0
    56 #define required_argument  1
    57 #define optional_argument  2
     53#ifdef  __cplusplus
     54extern "C" {
     55#endif
    5856
    59 struct option {
    60         /* name of long option */
    61         const char *name;
    62         /*
    63          * one of no_argument, required_argument, and optional_argument:
    64          * whether option takes an argument
    65          */
    66         int has_arg;
    67         /* if not NULL, set *flag to val when option found */
    68         int *flag;
    69         /* if flag not NULL, value to set *flag to; else return value */
    70         int val;
     57/* For communication from `getopt' to the caller.
     58   When `getopt' finds an option that takes an argument,
     59   the argument value is returned here.
     60   Also, when `ordering' is RETURN_IN_ORDER,
     61   each non-option ARGV-element is returned here.  */
     62
     63extern char *optarg;
     64
     65/* Index in ARGV of the next element to be scanned.
     66   This is used for communication to and from the caller
     67   and for communication between successive calls to `getopt'.
     68
     69   On entry to `getopt', zero means this is the first call; initialize.
     70
     71   When `getopt' returns -1, this is the index of the first of the
     72   non-option elements that the caller should itself scan.
     73
     74   Otherwise, `optind' communicates from one call to the next
     75   how much of ARGV has been scanned so far.  */
     76
     77extern int optind;
     78
     79/* Callers store zero here to inhibit the error message `getopt' prints
     80   for unrecognized options.  */
     81
     82extern int opterr;
     83
     84/* Set to an option character which was unrecognized.  */
     85
     86extern int optopt;
     87
     88#ifndef __need_getopt
     89/* Describe the long-named options requested by the application.
     90   The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
     91   of `struct option' terminated by an element containing a name which is
     92   zero.
     93
     94   The field `has_arg' is:
     95   no_argument          (or 0) if the option does not take an argument,
     96   required_argument    (or 1) if the option requires an argument,
     97   optional_argument    (or 2) if the option takes an optional argument.
     98
     99   If the field `flag' is not NULL, it points to a variable that is set
     100   to the value given in the field `val' when the option is found, but
     101   left unchanged if the option is not found.
     102
     103   To have a long-named option do something other than set an `int' to
     104   a compiled-in constant, such as set a value from `optarg', set the
     105   option's `flag' field to zero and its `val' field to a nonzero
     106   value (the equivalent single-letter option character, if there is
     107   one).  For long options that have a zero `flag' field, `getopt'
     108   returns the contents of the `val' field.  */
     109
     110struct option
     111{
     112  const char *name;
     113  /* has_arg can't be an enum because some compilers complain about
     114     type mismatches in all the code that assumes it is an int.  */
     115  int has_arg;
     116  int *flag;
     117  int val;
    71118};
    72119
    73 __BEGIN_DECLS
    74 int     getopt_long(int, char * const *, const char *,
    75         const struct option *, int *);
    76 int     getopt_long_only(int, char * const *, const char *,
    77         const struct option *, int *);
    78 #ifndef _GETOPT_DECLARED
    79 #define _GETOPT_DECLARED
    80 int      getopt(int, char * const [], const char *);
     120/* Names for the values of the `has_arg' field of `struct option'.  */
    81121
    82 extern char *optarg;                    /* getopt(3) external variables */
    83 extern int optind, opterr, optopt;
    84 #endif
    85 #ifndef _OPTRESET_DECLARED
    86 #define _OPTRESET_DECLARED
    87 extern int optreset;                    /* getopt(3) external variable */
     122# define no_argument            0
     123# define required_argument      1
     124# define optional_argument      2
     125#endif  /* need getopt */
     126
     127
     128/* Get definitions and prototypes for functions to process the
     129   arguments in ARGV (ARGC of them, minus the program name) for
     130   options given in OPTS.
     131
     132   Return the option character from OPTS just read.  Return -1 when
     133   there are no more options.  For unrecognized options, or options
     134   missing arguments, `optopt' is set to the option letter, and '?' is
     135   returned.
     136
     137   The OPTS string is a list of characters which are recognized option
     138   letters, optionally followed by colons, specifying that that letter
     139   takes an argument, to be placed in `optarg'.
     140
     141   If a letter in OPTS is followed by two colons, its argument is
     142   optional.  This behavior is specific to the GNU `getopt'.
     143
     144   The argument `--' causes premature termination of argument
     145   scanning, explicitly telling `getopt' that there are no more
     146   options.
     147
     148   If OPTS begins with `--', then non-option arguments are treated as
     149   arguments to the option '\0'.  This behavior is specific to the GNU
     150   `getopt'.  */
     151
     152#ifdef __GNU_LIBRARY__
     153/* Many other libraries have conflicting prototypes for getopt, with
     154   differences in the consts, in stdlib.h.  To avoid compilation
     155   errors, only prototype getopt for the GNU C library.  */
     156extern int getopt (int ___argc, char *const *___argv, const char *__shortopts)
     157       __THROW;
     158#else /* not __GNU_LIBRARY__ */
     159extern int getopt ();
     160#endif /* __GNU_LIBRARY__ */
     161
     162#ifndef __need_getopt
     163extern int getopt_long (int ___argc, char *const *___argv,
     164                        const char *__shortopts,
     165                        const struct option *__longopts, int *__longind)
     166       __THROW;
     167extern int getopt_long_only (int ___argc, char *const *___argv,
     168                             const char *__shortopts,
     169                             const struct option *__longopts, int *__longind)
     170       __THROW;
     171
    88172#endif
    89173
    90 /* bird - start: this is provided thru libiberty. */
    91 int _getopt_internal __P((int, char *const *, const char *,
    92     const struct option *, int *, int));
    93 /* bird - end */
     174#ifdef  __cplusplus
     175}
     176#endif
    94177
    95 __END_DECLS
     178/* Make sure we later can get all the definitions and declarations.  */
     179#undef __need_getopt
    96180
    97 #endif /* !_GETOPT_H_ */
     181#endif /* getopt.h */
Note: See TracChangeset for help on using the changeset viewer.