Skip to content

Commit 39bd9ff

Browse files
sivileriXinfengZhang
authored andcommitted
Import OpenBSD getopt for MSVC from mesa/f9bb5323
Signed-off-by: Sil Vilerino <[email protected]>
1 parent 309252d commit 39bd9ff

File tree

3 files changed

+602
-0
lines changed

3 files changed

+602
-0
lines changed

getopt/getopt.h

+82
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
/* $OpenBSD: getopt.h,v 1.2 2008/06/26 05:42:04 ray Exp $ */
2+
/* $NetBSD: getopt.h,v 1.4 2000/07/07 10:43:54 ad Exp $ */
3+
4+
/*-
5+
* Copyright (c) 2000 The NetBSD Foundation, Inc.
6+
* All rights reserved.
7+
*
8+
* This code is derived from software contributed to The NetBSD Foundation
9+
* by Dieter Baron and Thomas Klausner.
10+
*
11+
* Redistribution and use in source and binary forms, with or without
12+
* modification, are permitted provided that the following conditions
13+
* are met:
14+
* 1. Redistributions of source code must retain the above copyright
15+
* notice, this list of conditions and the following disclaimer.
16+
* 2. Redistributions in binary form must reproduce the above copyright
17+
* notice, this list of conditions and the following disclaimer in the
18+
* documentation and/or other materials provided with the distribution.
19+
*
20+
* THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
21+
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
22+
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23+
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
24+
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25+
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26+
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27+
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28+
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29+
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30+
* POSSIBILITY OF SUCH DAMAGE.
31+
*/
32+
33+
#ifndef _GETOPT_H_
34+
#define _GETOPT_H_
35+
36+
/*
37+
* GNU-like getopt_long() and 4.4BSD getsubopt()/optreset extensions
38+
*/
39+
#define no_argument 0
40+
#define required_argument 1
41+
#define optional_argument 2
42+
43+
#ifdef __cplusplus
44+
extern "C" {
45+
#endif
46+
47+
struct option {
48+
/* name of long option */
49+
const char *name;
50+
/*
51+
* one of no_argument, required_argument, and optional_argument:
52+
* whether option takes an argument
53+
*/
54+
int has_arg;
55+
/* if not NULL, set *flag to val when option found */
56+
int *flag;
57+
/* if flag not NULL, value to set *flag to; else return value */
58+
int val;
59+
};
60+
61+
int getopt_long(int, char * const *, const char *,
62+
const struct option *, int *);
63+
int getopt_long_only(int, char * const *, const char *,
64+
const struct option *, int *);
65+
#ifndef _GETOPT_DEFINED_
66+
#define _GETOPT_DEFINED_
67+
int getopt(int, char * const *, const char *);
68+
int getsubopt(char **, char * const *, char **);
69+
70+
extern char *optarg; /* getopt(3) external variables */
71+
extern int opterr;
72+
extern int optind;
73+
extern int optopt;
74+
extern int optreset;
75+
extern char *suboptarg; /* getsubopt(3) external variable */
76+
#endif
77+
78+
#ifdef __cplusplus
79+
}
80+
#endif
81+
82+
#endif /* !_GETOPT_H_ */

0 commit comments

Comments
 (0)