options.h revision 90111
1238438Sdteske/*- 2245106Sdteske * Copyright (c) 1991, 1993 3238438Sdteske * The Regents of the University of California. All rights reserved. 4238438Sdteske * 5238438Sdteske * This code is derived from software contributed to Berkeley by 6238438Sdteske * Kenneth Almquist. 7238438Sdteske * 8238438Sdteske * Redistribution and use in source and binary forms, with or without 9238438Sdteske * modification, are permitted provided that the following conditions 10238438Sdteske * are met: 11238438Sdteske * 1. Redistributions of source code must retain the above copyright 12238438Sdteske * notice, this list of conditions and the following disclaimer. 13238438Sdteske * 2. Redistributions in binary form must reproduce the above copyright 14238438Sdteske * notice, this list of conditions and the following disclaimer in the 15238438Sdteske * documentation and/or other materials provided with the distribution. 16238438Sdteske * 3. All advertising materials mentioning features or use of this software 17238438Sdteske * must display the following acknowledgement: 18238438Sdteske * This product includes software developed by the University of 19238438Sdteske * California, Berkeley and its contributors. 20238438Sdteske * 4. Neither the name of the University nor the names of its contributors 21238438Sdteske * may be used to endorse or promote products derived from this software 22238438Sdteske * without specific prior written permission. 23238438Sdteske * 24238438Sdteske * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 25238438Sdteske * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 26238438Sdteske * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 27238438Sdteske * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 28252803Sdteske * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 29238438Sdteske * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 30238438Sdteske * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 31238438Sdteske * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 32238438Sdteske * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 33238438Sdteske * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 34238438Sdteske * SUCH DAMAGE. 35238438Sdteske * 36238438Sdteske * @(#)options.h 8.2 (Berkeley) 5/4/95 37238438Sdteske * $FreeBSD: head/bin/sh/options.h 90111 2002-02-02 06:50:57Z imp $ 38238438Sdteske */ 39238438Sdteske 40238438Sdteskestruct shparam { 41238438Sdteske int nparam; /* # of positional parameters (without $0) */ 42238438Sdteske unsigned char malloc; /* if parameter list dynamically allocated */ 43238438Sdteske unsigned char reset; /* if getopts has been reset */ 44238438Sdteske char **p; /* parameter list */ 45238438Sdteske char **optnext; /* next parameter to be processed by getopts */ 46238438Sdteske char *optptr; /* used by getopts */ 47238438Sdteske}; 48238438Sdteske 49252815Sdteske 50252815Sdteske 51252815Sdteske#define eflag optlist[0].val 52238438Sdteske#define fflag optlist[1].val 53238438Sdteske#define Iflag optlist[2].val 54238438Sdteske#define iflag optlist[3].val 55252813Sdteske#define mflag optlist[4].val 56252813Sdteske#define nflag optlist[5].val 57252813Sdteske#define sflag optlist[6].val 58252813Sdteske#define xflag optlist[7].val 59252813Sdteske#define vflag optlist[8].val 60252813Sdteske#define Vflag optlist[9].val 61245052Sdteske#define Eflag optlist[10].val 62245052Sdteske#define Cflag optlist[11].val 63245052Sdteske#define aflag optlist[12].val 64245052Sdteske#define bflag optlist[13].val 65245052Sdteske#define uflag optlist[14].val 66245052Sdteske#define privileged optlist[15].val 67245052Sdteske#define Tflag optlist[16].val 68245052Sdteske 69245052Sdteske#define NOPTS 17 70245052Sdteske 71245052Sdteskestruct optent { 72238438Sdteske const char *name; 73238438Sdteske const char letter; 74238438Sdteske char val; 75238438Sdteske}; 76238438Sdteske 77238438Sdteske#ifdef DEFINE_OPTIONS 78238438Sdteskestruct optent optlist[NOPTS] = { 79238438Sdteske { "errexit", 'e', 0 }, 80238438Sdteske { "noglob", 'f', 0 }, 81238438Sdteske { "ignoreeof", 'I', 0 }, 82238438Sdteske { "interactive",'i', 0 }, 83238438Sdteske { "monitor", 'm', 0 }, 84238438Sdteske { "noexec", 'n', 0 }, 85238444Sjoel { "stdin", 's', 0 }, 86238438Sdteske { "xtrace", 'x', 0 }, 87238438Sdteske { "verbose", 'v', 0 }, 88238438Sdteske { "vi", 'V', 0 }, 89238438Sdteske { "emacs", 'E', 0 }, 90238438Sdteske { "noclobber", 'C', 0 }, 91252804Sdteske { "allexport", 'a', 0 }, 92252804Sdteske { "notify", 'b', 0 }, 93238438Sdteske { "nounset", 'u', 0 }, 94238444Sjoel { "privileged", 'p', 0 }, 95238438Sdteske { "trapsasync", 'T', 0 }, 96238438Sdteske}; 97238438Sdteske#else 98238438Sdteskeextern struct optent optlist[NOPTS]; 99238438Sdteske#endif 100238438Sdteske 101238438Sdteske 102238438Sdteskeextern char *minusc; /* argument to -c option */ 103252804Sdteskeextern char *arg0; /* $0 */ 104252804Sdteskeextern struct shparam shellparam; /* $@ */ 105238438Sdteskeextern char **argptr; /* argument list for builtin commands */ 106238438Sdteskeextern char *shoptarg; /* set by nextopt */ 107238444Sjoelextern char *optptr; /* used by nextopt */ 108238438Sdteske 109238438Sdteskevoid procargs(int, char **); 110238438Sdteskevoid optschanged(void); 111238438Sdteskevoid setparam(char **); 112238438Sdteskevoid freeparam(struct shparam *); 113238438Sdteskeint shiftcmd(int, char **); 114238438Sdteskeint setcmd(int, char **); 115238438Sdteskeint getoptscmd(int, char **); 116238438Sdteskeint nextopt(char *); 117241330Sjoelvoid getoptsreset(const char *); 118252804Sdteske