~ubuntu-branches/ubuntu/intrepid/orbital-eunuchs-sniper/intrepid

« back to all changes in this revision

Viewing changes to src/petopt.h

  • Committer: Bazaar Package Importer
  • Author(s): Kees Cook
  • Date: 2007-05-29 09:32:48 UTC
  • mfrom: (1.1.1 upstream) (2.1.2 gutsy)
  • Revision ID: james.westby@ubuntu.com-20070529093248-laj1bsm2dffohdf9
Tags: 1.30+svn20070601-1
Fix broken "upstream" rule to generate correctly versioned orig.tar.gz
to avoid native package.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
** petopt.h - Command line argument parser header file
 
3
**
 
4
** Copyright (c) 1999 Peter Eriksson <pen@lysator.liu.se>
 
5
**
 
6
** This program is free software; you can redistribute it and/or
 
7
** modify it as you wish - as long as you don't claim that you wrote
 
8
** it.
 
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.
 
13
*/
 
14
 
 
15
#ifndef PETOPT_H
 
16
#define PETOPT_H
 
17
 
 
18
/* Option types and flags */
 
19
#define POF_TYPEMASK    0x00FF
 
20
 
 
21
#define POF_NONE        0x0000
 
22
#define POF_INT         0x0001  /* Argument is an 'int' number */
 
23
#define POF_STR         0x0002  /* Argument is a  'char *' string */
 
24
#define POF_BOOL        0x0003  /* Argument is a  'int' boolean */
 
25
 
 
26
#define POF_OPT         0x0100  /* Argument is optional */
 
27
#define POF_DUP         0x0200  /* strdup() the assigned var (if string) */
 
28
 
 
29
/* Global flags */
 
30
#define POF_SYSLOG      0x1000  /* Send errors to syslog */
 
31
#define POF_NOERRPRINT  0x2000  /* Do not print errors to stderr */
 
32
#define POF_PRDEFAULT   0x4000  /* Print default values in usage text */
 
33
 
 
34
/* Error returns */
 
35
#define POE_EOF         -1
 
36
 
 
37
#define POE_OPTION      -2 /* Invalid option */
 
38
#define POE_MULTI       -3 /* Option is not unique */
 
39
#define POE_MISSING     -4 /* Required argument to option is missing */
 
40
#define POE_INVALID     -5 /* Invalid argument to option */
 
41
#define POE_INTERNAL    -6 /* Internal error */
 
42
 
 
43
 
 
44
typedef struct petopt_option
 
45
{
 
46
    int s;      /* Short option character */
 
47
    int f;      /* Argument flags */
 
48
    char *l;    /* Long option name */
 
49
    void *v;    /* Variable pointer */
 
50
    char *h;    /* Help/usage string */
 
51
} PETOPTS;
 
52
 
 
53
 
 
54
typedef struct petopt
 
55
{
 
56
    int f;
 
57
    int ai;
 
58
    int ci;
 
59
    int saved_ai;
 
60
    int saved_ci;
 
61
    int argc;
 
62
    const char **argv;
 
63
    PETOPTS *pov;
 
64
    int (*parse)(struct petopt *pp, PETOPTS *pov, const char *arg);
 
65
    int (*errpr)(struct petopt *pp, PETOPTS *pov, int err, FILE *fp);
 
66
    int oac;
 
67
    char **oav;
 
68
} PETOPT;
 
69
 
 
70
 
 
71
extern int
 
72
petopt_setup(PETOPT **popp,
 
73
             int f,
 
74
             int argc,
 
75
             char **argv,
 
76
             PETOPTS *pov,
 
77
             int (*parse)(PETOPT *pop, PETOPTS *pov, const char *arg),
 
78
             int (*errpr)(PETOPT *pop, PETOPTS *pov, int err, FILE *fp));
 
79
             
 
80
 
 
81
extern int
 
82
petopt_parse(PETOPT *pop,
 
83
             int *o_argc,
 
84
             char ***o_argv);
 
85
 
 
86
extern int
 
87
petopt_print_error(PETOPT *pop,
 
88
                   PETOPTS *pov,
 
89
                   int err,
 
90
                   FILE *fp);
 
91
     
 
92
extern int
 
93
petopt_print_usage(PETOPT *pop,
 
94
                   FILE *fp);
 
95
 
 
96
extern int
 
97
petopt_cleanup(PETOPT *pop);
 
98
 
 
99
#endif