Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
9169 turbocat 1
/*
2
 * OpenTyrian: A modern cross-platform port of Tyrian
3
 * Copyright (C) 2007-2009  The OpenTyrian Development Team
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
18
 */
19
#ifndef ARG_PARSE_H
20
#define ARG_PARSE_H
21
 
22
#include 
23
 
24
// this is essentially a reimplementation of getopt_long()
25
 
26
typedef struct
27
{
28
	int value;
29
	char short_opt;
30
	const char *long_opt;
31
	bool has_arg;
32
}
33
Options;
34
 
35
enum
36
{
37
	// indicates that argv[argn..argc) are not options
38
	NOT_OPTION = 0,
39
 
40
	/* behavior of parse_args() is undefined after
41
	   it has returned any of the following values */
42
	INVALID_OPTION = -1,
43
	AMBIGUOUS_OPTION = -2,
44
	OPTION_MISSING_ARG = -3
45
};
46
 
47
typedef struct
48
{
49
	int value;
50
	const char *arg;
51
 
52
	int argn;
53
}
54
Option;
55
 
56
Option parse_args( int argc, const char *argv[], const Options *options );
57
 
58
#endif /* ARG_PARSE_H */