Warning: Attempt to read property "date" on null in /usr/local/www/websvn.planix.org/blame.php on line 247

Warning: Attempt to read property "msg" on null in /usr/local/www/websvn.planix.org/blame.php on line 247
WebSVN – planix.SVN – Blame – /os/branches/feature_unix/sys/src/cmd/postscript/common/getopt.c – Rev 2

Subversion Repositories planix.SVN

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
#ifndef _POSIX_SOURCE
2
#include <u.h>
3
#include <libc.h>
4
#else
5
#define _BSD_EXTENSION
6
#include <stdlib.h>
7
#include <unistd.h>
8
#include <string.h>
9
#endif
10
 
11
#include	<stdio.h>
12
 
13
#define ERR(str, chr)       if(opterr){fprintf(stderr, "%s%s%c\n", argv[0], str, chr);}
14
 
15
int     opterr = 1;
16
int     optind = 1;
17
int	optopt;
18
char    *optarg;
19
 
20
int
21
getopt (argc, argv, opts)
22
char **argv, *opts;
23
{
24
	static int sp = 1;
25
	register c;
26
	register char *cp;
27
 
28
	if (sp == 1)
29
		if (optind >= argc ||
30
		   argv[optind][0] != '-' || argv[optind][1] == '\0')
31
			return EOF;
32
		else if (strcmp(argv[optind], "--") == 0) {
33
			optind++;
34
			return EOF;
35
		}
36
	optopt = c = argv[optind][sp];
37
	if (c == ':' || (cp=strchr(opts, c)) == NULL) {
38
		ERR (": illegal option -- ", c);
39
		if (argv[optind][++sp] == '\0') {
40
			optind++;
41
			sp = 1;
42
		}
43
		return '?';
44
	}
45
	if (*++cp == ':') {
46
		if (argv[optind][sp+1] != '\0')
47
			optarg = &argv[optind++][sp+1];
48
		else if (++optind >= argc) {
49
			ERR (": option requires an argument -- ", c);
50
			sp = 1;
51
			return '?';
52
		} else
53
			optarg = argv[optind++];
54
		sp = 1;
55
	} else {
56
		if (argv[optind][++sp] == '\0') {
57
			sp = 1;
58
			optind++;
59
		}
60
		optarg = NULL;
61
	}
62
	return c;
63
}