Changeset 2144 for trunk/src/emx/include/getopt.h
- Timestamp:
- Jul 2, 2005, 4:31:40 AM (20 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/emx/include/getopt.h
-
Property cvs2svn:cvs-rev
changed from
1.7
to1.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 2 21 /** @file 3 * FreeBSD 5.2 4 * @changed bird: Added one GNU api from libiberty. 22 * GLIBC 2.3.4 5 23 */ 6 24 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 9 26 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 45 30 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 48 41 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 50 52 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 54 extern "C" { 55 #endif 58 56 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 63 extern 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 77 extern int optind; 78 79 /* Callers store zero here to inhibit the error message `getopt' prints 80 for unrecognized options. */ 81 82 extern int opterr; 83 84 /* Set to an option character which was unrecognized. */ 85 86 extern 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 110 struct 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; 71 118 }; 72 119 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'. */ 81 121 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. */ 156 extern int getopt (int ___argc, char *const *___argv, const char *__shortopts) 157 __THROW; 158 #else /* not __GNU_LIBRARY__ */ 159 extern int getopt (); 160 #endif /* __GNU_LIBRARY__ */ 161 162 #ifndef __need_getopt 163 extern int getopt_long (int ___argc, char *const *___argv, 164 const char *__shortopts, 165 const struct option *__longopts, int *__longind) 166 __THROW; 167 extern int getopt_long_only (int ___argc, char *const *___argv, 168 const char *__shortopts, 169 const struct option *__longopts, int *__longind) 170 __THROW; 171 88 172 #endif 89 173 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 94 177 95 __END_DECLS 178 /* Make sure we later can get all the definitions and declarations. */ 179 #undef __need_getopt 96 180 97 #endif /* !_GETOPT_H_*/181 #endif /* getopt.h */ -
Property cvs2svn:cvs-rev
changed from
Note:
See TracChangeset
for help on using the changeset viewer.