VSF Documented
getopt.h
Go to the documentation of this file.
1/* $OpenBSD: getopt.h,v 1.3 2013/11/22 21:32:49 millert 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
37//#include <sys/cdefs.h>
38#ifdef __cplusplus
39# define __BEGIN_DECLS extern "C" {
40# define __END_DECLS }
41#else
42# define __BEGIN_DECLS
43# define __END_DECLS
44#endif
45
46/*
47 * GNU-like getopt_long()
48 */
49#define no_argument 0
50#define required_argument 1
51#define optional_argument 2
52
53struct option {
54 /* name of long option */
55 const char *name;
56 /*
57 * one of no_argument, required_argument, and optional_argument:
58 * whether option takes an argument
59 */
61 /* if not NULL, set *flag to val when option found */
62 int *flag;
63 /* if flag not NULL, value to set *flag to; else return value */
64 int val;
65};
66
68
69int getopt_long(int, char * const *, const char *,
70 const struct option *, int *);
71int getopt_long_only(int, char * const *, const char *,
72 const struct option *, int *);
73int getopt(int, char * const *, const char *);
74
75#ifndef _GETOPT_DEFINED_
76#define _GETOPT_DEFINED_
77
78# if VSF_LINUX_USE_GETOPT == ENABLED && !defined(__VSF_APPLET__)
79// for vsf linux, put these variable in process context and implement them as macro
81extern const vsf_linux_dynlib_mod_t __getopt_long_mod;
83 char *__optarg;
88
89 char *__place;
92
93 struct {
96};
97# define getopt_ctx ((struct __getopt_lib_ctx_t *)vsf_linux_dynlib_ctx_get(&__getopt_long_mod))
98# define opterr (getopt_ctx->__opterr)
99# define optind (getopt_ctx->__optind)
100# define optopt (getopt_ctx->__optopt)
101# define optarg (getopt_ctx->__optarg)
102# define optreset (getopt_ctx->__optreset)
103# else
104extern char *optarg; /* getopt(3) external variables */
105extern int opterr;
106extern int optind;
107extern int optopt;
108extern int optreset;
109# endif
110#endif
112
113#endif /* !_GETOPT_H_ */
int getopt(int, char *const *, const char *)
#define __END_DECLS
Definition getopt.h:43
int getopt_long_only(int, char *const *, const char *, const struct option *, int *)
#define opterr
Definition getopt.h:98
#define __BEGIN_DECLS
Definition getopt.h:42
#define optarg
Definition getopt.h:101
#define optopt
Definition getopt.h:100
__BEGIN_DECLS int getopt_long(int, char *const *, const char *, const struct option *, int *)
#define optreset
Definition getopt.h:102
const vsf_linux_dynlib_mod_t __getopt_long_mod
#define optind
Definition getopt.h:99
Definition getopt.h:82
int __posixly_correct
Definition getopt.h:94
char * __optarg
Definition getopt.h:83
int __optreset
Definition getopt.h:87
char * __place
Definition getopt.h:89
int __nonopt_end
Definition getopt.h:91
int __opterr
Definition getopt.h:84
struct __getopt_lib_ctx_t::@811 getopt_internal
int __optind
Definition getopt.h:85
int __nonopt_start
Definition getopt.h:90
int __optopt
Definition getopt.h:86
Definition getopt.h:53
int val
Definition getopt.h:64
int has_arg
Definition getopt.h:60
int * flag
Definition getopt.h:62
const char * name
Definition getopt.h:55