ReactOS 0.4.15-dev-7788-g1ad9096
getopt.c File Reference
#include "precomp.h"
Include dependency graph for getopt.c:

Go to the source code of this file.

Macros

#define BADCH   (int)'?'
 
#define EMSG   ""
 

Functions

int getopt (int nargc, char *const *nargv, const char *ostr)
 

Variables

int opterr = 1
 
int optind = 1
 
int optopt
 
const charoptarg
 

Macro Definition Documentation

◆ BADCH

#define BADCH   (int)'?'

Definition at line 51 of file getopt.c.

◆ EMSG

#define EMSG   ""

Definition at line 52 of file getopt.c.

Function Documentation

◆ getopt()

int getopt ( int  nargc,
char *const nargv,
const char ostr 
)

Definition at line 55 of file getopt.c.

56{
57 static const char *place = EMSG; /* option letter processing */
58 register char *oli; /* option letter list index */
59 char *p;
60
61 if (!*place) { /* update scanning pointer */
62 if (optind >= nargc || *(place = nargv[optind]) != '-') {
63 place = EMSG;
64 return(EOF);
65 }
66 if (place[1] && *++place == '-') { /* found "--" */
67 ++optind;
68 place = EMSG;
69 return(EOF);
70 }
71 } /* option letter okay? */
72 if ((optopt = (int)*place++) == (int)':' ||
73 !(oli = strchr(ostr, optopt))) {
74 /*
75 * if the user didn't specify '-' as an option,
76 * assume it means EOF.
77 */
78 if (optopt == (int)'-')
79 return(EOF);
80 if (!*place)
81 ++optind;
82 if (opterr) {
83 if (!(p = strrchr(*nargv, '/')))
84 p = *nargv;
85 else
86 ++p;
87 (void)fprintf(stderr, "%s: illegal option -- %c\n",
88 p, optopt);
89 }
90 return(BADCH);
91 }
92 if (*++oli != ':') { /* don't need argument */
93 optarg = NULL;
94 if (!*place)
95 ++optind;
96 }
97 else { /* need an argument */
98 if (*place) /* no white space */
99 optarg = place;
100 else if (nargc <= ++optind) { /* no arg */
101 place = EMSG;
102 if (!(p = strrchr(*nargv, '/')))
103 p = *nargv;
104 else
105 ++p;
106 if (opterr)
108 "%s: option requires an argument -- %c\n",
109 p, optopt);
110 return(BADCH);
111 }
112 else /* white space */
113 optarg = nargv[optind];
114 place = EMSG;
115 ++optind;
116 }
117 return(optopt); /* dump back option letter */
118}
char * strchr(const char *String, int ch)
Definition: utclib.c:501
#define BADCH
Definition: getopt.c:51
int optopt
Definition: getopt.c:48
#define EMSG
Definition: getopt.c:52
const char * optarg
Definition: getopt.c:49
int optind
Definition: getopt.c:47
int opterr
Definition: getopt.c:46
#define NULL
Definition: types.h:112
GLfloat GLfloat p
Definition: glext.h:8902
#define EOF
Definition: stdio.h:24
#define stderr
Definition: stdio.h:100
_Check_return_opt_ _CRTIMP int __cdecl fprintf(_Inout_ FILE *_File, _In_z_ _Printf_format_string_ const char *_Format,...)
_Check_return_ _CRTIMP _CONST_RETURN char *__cdecl strrchr(_In_z_ const char *_Str, _In_ int _Ch)
static char * place
Definition: getopt.c:55

Referenced by main(), and optionParse().

Variable Documentation

◆ optarg

◆ opterr

int opterr = 1

Definition at line 46 of file getopt.c.

Referenced by _getopt_internal(), and getopt().

◆ optind

int optind = 1

◆ optopt

int optopt

Definition at line 48 of file getopt.c.

Referenced by _getopt_internal(), check_option(), getopt(), getopt_internal(), and getopt_long().