Subversion Repositories HelenOS

Rev

Rev 2714 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2714 cejka 1
/*  $NetBSD: options.h,v 1.13 1999/07/09 03:05:50 christos Exp $    */
2
 
3
/*-
4
 * Copyright (c) 1991, 1993
5
 *  The Regents of the University of California.  All rights reserved.
6
 *
7
 * This code is derived from software contributed to Berkeley by
8
 * Kenneth Almquist.
9
 *
10
 * Redistribution and use in source and binary forms, with or without
11
 * modification, are permitted provided that the following conditions
12
 * are met:
13
 * 1. Redistributions of source code must retain the above copyright
14
 *    notice, this list of conditions and the following disclaimer.
15
 * 2. Redistributions in binary form must reproduce the above copyright
16
 *    notice, this list of conditions and the following disclaimer in the
17
 *    documentation and/or other materials provided with the distribution.
18
 * 3. All advertising materials mentioning features or use of this software
19
 *    must display the following acknowledgement:
20
 *  This product includes software developed by the University of
21
 *  California, Berkeley and its contributors.
22
 * 4. Neither the name of the University nor the names of its contributors
23
 *    may be used to endorse or promote products derived from this software
24
 *    without specific prior written permission.
25
 *
26
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
27
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
29
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
30
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
31
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
32
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
33
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
34
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
35
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
36
 * SUCH DAMAGE.
37
 *
38
 *  @(#)options.h   8.2 (Berkeley) 5/4/95
39
 */
40
 
41
struct shparam {
42
    int nparam;     /* # of positional parameters (without $0) */
43
    unsigned char malloc;   /* if parameter list dynamically allocated */
44
    char **p;       /* parameter list */
45
    int optind;     /* next parameter to be processed by getopts */
46
    int optoff;     /* used by getopts */
47
};
48
 
49
 
50
 
51
#define eflag optlist[0].val
52
#define fflag optlist[1].val
53
#define Iflag optlist[2].val
54
#define iflag optlist[3].val
55
#define mflag optlist[4].val
56
#define nflag optlist[5].val
57
#define sflag optlist[6].val
58
#define xflag optlist[7].val
59
#define vflag optlist[8].val
60
#define Vflag optlist[9].val
61
#define Eflag optlist[10].val
62
#define Cflag optlist[11].val
63
#define aflag optlist[12].val
64
#define bflag optlist[13].val
65
#define uflag optlist[14].val
66
#define qflag optlist[15].val
67
 
68
#define NOPTS   16
69
 
70
struct optent {
71
    const char *name;
72
    const char letter;
73
    char val;
74
};
75
 
76
#ifdef DEFINE_OPTIONS
77
struct optent optlist[NOPTS] = {
78
    { "errexit",    'e',    0 },
79
    { "noglob", 'f',    0 },
80
    { "ignoreeof"'I',    0 },
81
    { "interactive",'i',    0 },
82
    { "monitor",    'm',    0 },
83
    { "noexec", 'n',    0 },
84
    { "stdin"'s',    0 },
85
    { "xtrace", 'x',    0 },
86
    { "verbose",    'v',    0 },
87
    { "vi",     'V',    0 },
88
    { "emacs"'E',    0 },
89
    { "noclobber"'C',    0 },
90
    { "allexport"'a',    0 },
91
    { "notify", 'b',    0 },
92
    { "nounset",    'u',    0 },
93
    { "quietprofile", 'q'0 },
94
};
95
#else
96
extern struct optent optlist[NOPTS];
97
#endif
98
 
99
 
100
extern char *minusc;        /* argument to -c option */
101
extern char *arg0;      /* $0 */
102
extern struct shparam shellparam;  /* $@ */
103
extern char **argptr;       /* argument list for builtin commands */
104
extern char *optarg;        /* set by nextopt */
105
extern char *optptr;        /* used by nextopt */
106
 
107
void procargs (int, char **);
108
void optschanged (void);
109
void setparam (char **);
110
void freeparam (volatile struct shparam *);
111
int shiftcmd (int, char **);
112
int setcmd (int, char **);
113
int getoptscmd (int, char **);
114
int nextopt (const char *);
115
void getoptsreset (const char *);