/* $Id: tgetopt.h,v 1.18 2000/05/14 14:39:39 jens Exp $ */
/*
* Copyright (c) 1999, 2000
* Jens A. Nilsson, jnilsson@ludd.luth.se. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#ifndef TGETOPT__H
#define TGETOPT__H
#ifdef MEMDEBUG
#include <memdebug.h>
#endif
/* gos_errno values:
* 0 => OK
* 1 => didn't get required arg, ERROR
* 2 => out of argv:s, OK
* 3 => didn't recognize option, option in *arg, ERROR
* 4 => don't want argument for this option, argument in *arg, ERROR
* 5 => end of argument processing, OK
* 6 => read error, ERROR
* 7 => syntax error, ERROR
* 8 => syntax error expected ']', ERROR
*/
#define GOS_OK 0
#define GOS_ARG_REQ 1
#define GOS_END_OF_OPTIONS 2
#define GOS_UNKNOWN_OPTION 3
#define GOS_DONT_ACCEPT 4
#define GOS_END_OF_ARG_MARK 5
#define GOS_EREAD 6
#define GOS_SYNTAX_E 7
#define GOS_SYNTAX_ES 8
#define GOS_SYNTAX_ES2 9
#define GOS_EONLY_FILE 10
#define GOS_ERRNO 11
#define GOS_ARGV 0
#define GOS_FILE 1
#define GOS_ENV 2
#ifndef __P
#ifdef __STDC__
#define __P(x) x
#else
#define __P(x) ()
#endif
#endif
#ifdef __cplusplus
extern "C" {
#endif
enum go_want_arg {
NO_ARG,
REQ_ARG,
OPT_ARG
};
/* table for option identifiers */
struct get_opt {
int go_opt_num;
const char *go_name; /* like the GNU getlongopt */
char go_sname; /* like getopt */
enum go_want_arg go_want_arg;
};
struct get_opt_state;
int tgetopt __P((struct get_opt_state *gos, int *option, const char **arg));
char * tgetopt_strerror __P((struct get_opt_state *gos));
int tgetopt_errno __P((struct get_opt_state *gos));
void tgetopt_free __P((struct get_opt_state *gos));
void tgetopt_change_go __P((struct get_opt_state *gos, const struct get_opt *go));
char ** tgetopt_sections __P((struct get_opt_state *gos));
struct get_opt_state *
tgetopt_argv_init __P((int argc, char * const *argv, const struct get_opt *go));
int tgetopt_argv_get __P((struct get_opt_state *gos, int *argc, char * const **argv));
struct get_opt_state *
tgetopt_file_init __P((FILE *fp, const char *path, const struct get_opt *go));
struct get_opt_state *
tgetopt_env_init __P((const char *prefix, const struct get_opt *go));
#ifdef __cplusplus
}
#endif
#endif
syntax highlighted by Code2HTML, v. 0.9.1