PageRenderTime 26ms CodeModel.GetById 18ms app.highlight 5ms RepoModel.GetById 2ms app.codeStats 0ms

/usr.bin/make/shell.h

https://bitbucket.org/freebsd/freebsd-head/
C++ Header | 110 lines | 27 code | 18 blank | 65 comment | 0 complexity | c1a5aa9de2e648f58f7cc664fcba57d9 MD5 | raw file
  1/*-
  2 * Copyright (c) 1988, 1989, 1990, 1993
  3 *	The Regents of the University of California.  All rights reserved.
  4 * Copyright (c) 1988, 1989 by Adam de Boor
  5 * Copyright (c) 1989 by Berkeley Softworks
  6 * All rights reserved.
  7 *
  8 * This code is derived from software contributed to Berkeley by
  9 * Adam de Boor.
 10 *
 11 * Redistribution and use in source and binary forms, with or without
 12 * modification, are permitted provided that the following conditions
 13 * are met:
 14 * 1. Redistributions of source code must retain the above copyright
 15 *    notice, this list of conditions and the following disclaimer.
 16 * 2. Redistributions in binary form must reproduce the above copyright
 17 *    notice, this list of conditions and the following disclaimer in the
 18 *    documentation and/or other materials provided with the distribution.
 19 * 3. All advertising materials mentioning features or use of this software
 20 *    must display the following acknowledgement:
 21 *	This product includes software developed by the University of
 22 *	California, Berkeley and its contributors.
 23 * 4. Neither the name of the University nor the names of its contributors
 24 *    may be used to endorse or promote products derived from this software
 25 *    without specific prior written permission.
 26 *
 27 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 28 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 29 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 30 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 31 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 32 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 33 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 34 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 35 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 36 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 37 * SUCH DAMAGE.
 38 *
 39 * $FreeBSD$
 40 */
 41
 42#ifndef shell_h_6002e3b8
 43#define	shell_h_6002e3b8
 44
 45#include <sys/queue.h>
 46
 47#include "str.h"
 48#include "util.h"
 49
 50/**
 51 * Shell Specifications:
 52 *
 53 * Some special stuff goes on if a shell doesn't have error control. In such
 54 * a case, errCheck becomes a printf template for echoing the command,
 55 * should echoing be on and ignErr becomes another printf template for
 56 * executing the command while ignoring the return status. If either of these
 57 * strings is empty when hasErrCtl is FALSE, the command will be executed
 58 * anyway as is and if it causes an error, so be it.
 59 */
 60struct Shell {
 61	TAILQ_ENTRY(Shell) link;	/* link all shell descriptions */
 62
 63	/*
 64	 * the name of the shell. For Bourne and C shells, this is used
 65	 * only to find the shell description when used as the single
 66	 * source of a .SHELL target.
 67	 */
 68	char	*name;
 69
 70	char	*path;		/* full path to the shell */
 71
 72	/* True if both echoOff and echoOn defined */
 73	Boolean	hasEchoCtl;
 74
 75	char	*echoOff;	/* command to turn off echo */
 76	char	*echoOn;	/* command to turn it back on */
 77
 78	/*
 79	 * What the shell prints, and its length, when given the
 80	 * echo-off command. This line will not be printed when
 81	 * received from the shell. This is usually the command which
 82	 * was executed to turn off echoing
 83	 */
 84	char	*noPrint;
 85
 86	/* set if can control error checking for individual commands */
 87	Boolean	hasErrCtl;
 88
 89	/* string to turn error checking on */
 90	char	*errCheck;
 91
 92	/* string to turn off error checking */
 93	char	*ignErr;
 94
 95	char	*echo;	/* command line flag: echo commands */
 96	char	*exit;	/* command line flag: exit on error */
 97
 98	ArgArray builtins;	/* ordered list of shell builtins */
 99	char	*meta;		/* shell meta characters */
100
101	Boolean	unsetenv;	/* unsetenv("ENV") before exec */
102};
103TAILQ_HEAD(Shells, Shell);
104
105extern struct Shell		*commandShell;
106
107void				Shell_Init(void);
108Boolean				Shell_Parse(const char []);
109
110#endif /* shell_h_6002e3b8 */