ReactOS  0.4.12-dev-75-g00dd17e
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.

Referenced by getopt().

◆ EMSG

#define EMSG   ""

Definition at line 52 of file getopt.c.

Referenced by getopt().

Function Documentation

◆ getopt()

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

Definition at line 55 of file getopt.c.

Referenced by main(), and optionParse().

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 }
int optopt
Definition: getopt.c:47
struct png_info_def **typedef void(__cdecl typeof(png_destroy_read_struct))(struct png_struct_def **
Definition: typeof.h:47
int optind
Definition: getopt.c:47
_Check_return_ _CRTIMP _CONST_RETURN char *__cdecl strrchr(_In_z_ const char *_Str, _In_ int _Ch)
_Check_return_opt_ _CRTIMP int __cdecl fprintf(_Inout_ FILE *_File, _In_z_ _Printf_format_string_ const char *_Format,...)
smooth NULL
Definition: ftsmooth.c:416
#define BADCH
Definition: getopt.c:51
static char * place
Definition: getopt.c:55
int opterr
Definition: getopt.c:46
const char * optarg
Definition: getopt.c:49
char * strchr(const char *String, int ch)
Definition: utclib.c:501
#define EOF
Definition: stdio.h:24
FILE * stderr
#define EMSG
Definition: getopt.c:52
GLfloat GLfloat p
Definition: glext.h:8902

Variable Documentation

◆ optarg

◆ opterr

int opterr = 1

Definition at line 46 of file getopt.c.

Referenced by _getopt_internal(), and getopt().

◆ optind

◆ optopt

int optopt

Definition at line 47 of file getopt.c.

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