14b88c807SRodney W. Grimes /*- 24b88c807SRodney W. Grimes * Copyright (c) 1991, 1993 34b88c807SRodney W. Grimes * The Regents of the University of California. All rights reserved. 44b88c807SRodney W. Grimes * 54b88c807SRodney W. Grimes * This code is derived from software contributed to Berkeley by 64b88c807SRodney W. Grimes * Kenneth Almquist. 74b88c807SRodney W. Grimes * 84b88c807SRodney W. Grimes * Redistribution and use in source and binary forms, with or without 94b88c807SRodney W. Grimes * modification, are permitted provided that the following conditions 104b88c807SRodney W. Grimes * are met: 114b88c807SRodney W. Grimes * 1. Redistributions of source code must retain the above copyright 124b88c807SRodney W. Grimes * notice, this list of conditions and the following disclaimer. 134b88c807SRodney W. Grimes * 2. Redistributions in binary form must reproduce the above copyright 144b88c807SRodney W. Grimes * notice, this list of conditions and the following disclaimer in the 154b88c807SRodney W. Grimes * documentation and/or other materials provided with the distribution. 164b88c807SRodney W. Grimes * 3. All advertising materials mentioning features or use of this software 174b88c807SRodney W. Grimes * must display the following acknowledgement: 184b88c807SRodney W. Grimes * This product includes software developed by the University of 194b88c807SRodney W. Grimes * California, Berkeley and its contributors. 204b88c807SRodney W. Grimes * 4. Neither the name of the University nor the names of its contributors 214b88c807SRodney W. Grimes * may be used to endorse or promote products derived from this software 224b88c807SRodney W. Grimes * without specific prior written permission. 234b88c807SRodney W. Grimes * 244b88c807SRodney W. Grimes * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 254b88c807SRodney W. Grimes * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 264b88c807SRodney W. Grimes * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 274b88c807SRodney W. Grimes * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 284b88c807SRodney W. Grimes * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 294b88c807SRodney W. Grimes * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 304b88c807SRodney W. Grimes * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 314b88c807SRodney W. Grimes * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 324b88c807SRodney W. Grimes * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 334b88c807SRodney W. Grimes * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 344b88c807SRodney W. Grimes * SUCH DAMAGE. 354b88c807SRodney W. Grimes * 364b88c807SRodney W. Grimes * @(#)options.h 8.1 (Berkeley) 5/31/93 374b88c807SRodney W. Grimes */ 384b88c807SRodney W. Grimes 394b88c807SRodney W. Grimes struct shparam { 404b88c807SRodney W. Grimes int nparam; /* number of positional parameters (without $0) */ 414b88c807SRodney W. Grimes char malloc; /* true if parameter list dynamicly allocated */ 424b88c807SRodney W. Grimes char **p; /* parameter list */ 434b88c807SRodney W. Grimes char **optnext; /* next parameter to be processed by getopts */ 444b88c807SRodney W. Grimes char *optptr; /* used by getopts */ 454b88c807SRodney W. Grimes }; 464b88c807SRodney W. Grimes 474b88c807SRodney W. Grimes 484b88c807SRodney W. Grimes 494b88c807SRodney W. Grimes #define eflag optlist[0].val 504b88c807SRodney W. Grimes #define fflag optlist[1].val 514b88c807SRodney W. Grimes #define Iflag optlist[2].val 524b88c807SRodney W. Grimes #define iflag optlist[3].val 534b88c807SRodney W. Grimes #define mflag optlist[4].val 544b88c807SRodney W. Grimes #define nflag optlist[5].val 554b88c807SRodney W. Grimes #define sflag optlist[6].val 564b88c807SRodney W. Grimes #define xflag optlist[7].val 574b88c807SRodney W. Grimes #define vflag optlist[8].val 584b88c807SRodney W. Grimes #define Vflag optlist[9].val 594b88c807SRodney W. Grimes #define Eflag optlist[10].val 604b88c807SRodney W. Grimes #define Cflag optlist[11].val 614b88c807SRodney W. Grimes #define aflag optlist[12].val 624b88c807SRodney W. Grimes #define bflag optlist[13].val 634b88c807SRodney W. Grimes #define uflag optlist[14].val 644b88c807SRodney W. Grimes 654b88c807SRodney W. Grimes #define NOPTS 15 664b88c807SRodney W. Grimes 674b88c807SRodney W. Grimes struct optent { 684b88c807SRodney W. Grimes const char *name; 694b88c807SRodney W. Grimes const char letter; 704b88c807SRodney W. Grimes char val; 714b88c807SRodney W. Grimes }; 724b88c807SRodney W. Grimes 734b88c807SRodney W. Grimes #ifdef DEFINE_OPTIONS 744b88c807SRodney W. Grimes struct optent optlist[NOPTS] = { 754b88c807SRodney W. Grimes "errexit", 'e', 0, 764b88c807SRodney W. Grimes "noglob", 'f', 0, 774b88c807SRodney W. Grimes "ignoreeof", 'I', 0, 784b88c807SRodney W. Grimes "interactive", 'i', 0, 794b88c807SRodney W. Grimes "monitor", 'm', 0, 804b88c807SRodney W. Grimes "noexec", 'n', 0, 814b88c807SRodney W. Grimes "stdin", 's', 0, 824b88c807SRodney W. Grimes "xtrace", 'x', 0, 834b88c807SRodney W. Grimes "verbose", 'v', 0, 844b88c807SRodney W. Grimes "vi", 'V', 0, 854b88c807SRodney W. Grimes "emacs", 'E', 0, 864b88c807SRodney W. Grimes "noclobber", 'C', 0, 874b88c807SRodney W. Grimes "allexport", 'a', 0, 884b88c807SRodney W. Grimes "notify", 'b', 0, 894b88c807SRodney W. Grimes "nounset", 'u', 0, 904b88c807SRodney W. Grimes }; 914b88c807SRodney W. Grimes #else 924b88c807SRodney W. Grimes extern struct optent optlist[NOPTS]; 934b88c807SRodney W. Grimes #endif 944b88c807SRodney W. Grimes 954b88c807SRodney W. Grimes 964b88c807SRodney W. Grimes extern char *minusc; /* argument to -c option */ 974b88c807SRodney W. Grimes extern char *arg0; /* $0 */ 984b88c807SRodney W. Grimes extern struct shparam shellparam; /* $@ */ 994b88c807SRodney W. Grimes extern char **argptr; /* argument list for builtin commands */ 1004b88c807SRodney W. Grimes extern char *optarg; /* set by nextopt */ 1014b88c807SRodney W. Grimes extern char *optptr; /* used by nextopt */ 1024b88c807SRodney W. Grimes 1034b88c807SRodney W. Grimes 1044b88c807SRodney W. Grimes #ifdef __STDC__ 1054b88c807SRodney W. Grimes void procargs(int, char **); 1064b88c807SRodney W. Grimes void setparam(char **); 1074b88c807SRodney W. Grimes void freeparam(struct shparam *); 1084b88c807SRodney W. Grimes int nextopt(char *); 1094b88c807SRodney W. Grimes #else 1104b88c807SRodney W. Grimes void procargs(); 1114b88c807SRodney W. Grimes void setparam(); 1124b88c807SRodney W. Grimes void freeparam(); 1134b88c807SRodney W. Grimes int nextopt(); 1144b88c807SRodney W. Grimes #endif 115