diff options
Diffstat (limited to 'winsup/mingw/include')
-rw-r--r-- | winsup/mingw/include/getopt.h | 100 | ||||
-rw-r--r-- | winsup/mingw/include/unistd.h | 10 |
2 files changed, 105 insertions, 5 deletions
diff --git a/winsup/mingw/include/getopt.h b/winsup/mingw/include/getopt.h index e69de29bb..00cd5473f 100644 --- a/winsup/mingw/include/getopt.h +++ b/winsup/mingw/include/getopt.h @@ -0,0 +1,100 @@ +#ifndef __GETOPT_H__ +/* + * getopt.h + * + * $Id$ + * + * Defines constants and function prototypes required to implement + * the `getopt', `getopt_long' and `getopt_long_only' APIs. + * + * This file is part of the MinGW32 package set. + * + * Contributed by Keith Marshall <keithmarshall@users.sourceforge.net> + * + * + * THIS SOFTWARE IS NOT COPYRIGHTED + * + * This source code is offered for use in the public domain. You may + * use, modify or distribute it freely. + * + * This code is distributed in the hope that it will be useful but + * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY + * DISCLAIMED. This includes but is not limited to warranties of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + * $Revision$ + * $Author$ + * $Date$ + * + */ +#define __GETOPT_H__ + +/* All the headers include this file. */ +#include <_mingw.h> + +#ifdef __cplusplus +extern "C" { +#endif + +extern int optind; /* index of first non-option in argv */ +extern int optopt; /* single option character, as parsed */ +extern int opterr; /* flag to enable built-in diagnostics... */ + /* (user may set to zero, to suppress) */ + +extern char *optarg; /* pointer to argument of current option */ + +extern int getopt( int, char * const [], const char * ); + +#ifdef __cplusplus +} +#endif +/* + * POSIX requires the `getopt' API to be specified in `unistd.h'; + * thus, `unistd.h' includes this header. However, we do not want + * to expose the `getopt_long' or `getopt_long_only' APIs, when + * included in this manner. Thus, close the standard __GETOPT_H__ + * declarations block, and open an additional __GETOPT_LONG_H__ + * specific block, only when *not* __UNISTD_H_SOURCED__, in which + * to declare the extended API. + */ +#endif /* !defined(__GETOPT_H__) */ +#if !defined(__UNISTD_H_SOURCED__) && !defined(__GETOPT_LONG_H__) +#define __GETOPT_LONG_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +struct option /* specification for a long form option... */ +{ + const char *name; /* option name, without leading hyphens */ + int has_arg; /* does it take an argument? */ + int *flag; /* where to save its status, or NULL */ + int val; /* its associated status value */ +}; + +enum /* permitted values for its `has_arg' field... */ +{ + no_argument = 0, /* option never takes an argument */ + required_argument, /* option always requires an argument */ + optional_argument /* option may take an argument */ +}; + +extern int getopt_long( int, char * const [], const char *, const struct option *, int * ); +extern int getopt_long_only( int, char * const [], const char *, const struct option *, int * ); +/* + * Previous MinGW implementation had... + */ +#ifndef HAVE_DECL_GETOPT +/* + * ...for the long form API only; keep this for compatibility. + */ +# define HAVE_DECL_GETOPT 1 +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* !defined(__UNISTD_H_SOURCED__) && !defined(__GETOPT_LONG_H__) */ +/* $RCSfile$Revision$: end of file */ diff --git a/winsup/mingw/include/unistd.h b/winsup/mingw/include/unistd.h index 54dbc6699..3e7f2364a 100644 --- a/winsup/mingw/include/unistd.h +++ b/winsup/mingw/include/unistd.h @@ -1,18 +1,17 @@ +#ifndef _UNISTD_H /* * This file is part of the Mingw32 package. * * unistd.h maps (roughly) to io.h + * Other headers included by unistd.h may be selectively processed; + * __UNISTD_H_SOURCED__ enables such selective processing. */ - -#ifndef _UNISTD_H #define _UNISTD_H +#define __UNISTD_H_SOURCED__ 1 #include <io.h> #include <process.h> - -#define __UNISTD_GETOPT__ #include <getopt.h> -#undef __UNISTD_GETOPT__ /* These are also defined in stdio.h. */ #ifndef SEEK_SET @@ -49,4 +48,5 @@ __CRT_INLINE int ftruncate(int __fd, off_t __length) } #endif +#undef __UNISTD_H_SOURCED__ #endif /* _UNISTD_H */ |