xref: /freebsd/bin/sh/options.h (revision 4b88c807ea9c629dc5691abc7e3cac9ea0d776dd)
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