Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/bin/sh/exec.h
39478 views
1
/*-
2
* Copyright (c) 1991, 1993
3
* The Regents of the University of California. All rights reserved.
4
*
5
* This code is derived from software contributed to Berkeley by
6
* Kenneth Almquist.
7
*
8
* Redistribution and use in source and binary forms, with or without
9
* modification, are permitted provided that the following conditions
10
* are met:
11
* 1. Redistributions of source code must retain the above copyright
12
* notice, this list of conditions and the following disclaimer.
13
* 2. Redistributions in binary form must reproduce the above copyright
14
* notice, this list of conditions and the following disclaimer in the
15
* documentation and/or other materials provided with the distribution.
16
* 3. Neither the name of the University nor the names of its contributors
17
* may be used to endorse or promote products derived from this software
18
* without specific prior written permission.
19
*
20
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
24
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30
* SUCH DAMAGE.
31
*/
32
33
/* values of cmdtype */
34
#define CMDUNKNOWN -1 /* no entry in table for command */
35
#define CMDNORMAL 0 /* command is an executable program */
36
#define CMDBUILTIN 1 /* command is a shell builtin */
37
#define CMDFUNCTION 2 /* command is a shell function */
38
39
/* values for typecmd_impl's third parameter */
40
enum {
41
TYPECMD_SMALLV, /* command -v */
42
TYPECMD_BIGV, /* command -V */
43
TYPECMD_TYPE /* type */
44
};
45
46
union node;
47
struct cmdentry {
48
int cmdtype;
49
union param {
50
int index;
51
struct funcdef *func;
52
} u;
53
int special;
54
const char *cmdname;
55
};
56
57
58
/* action to find_command() */
59
#define DO_ERR 0x01 /* prints errors */
60
#define DO_NOFUNC 0x02 /* don't return shell functions, for command */
61
62
void shellexec(char **, char **, const char *, int) __dead2;
63
char *padvance(const char **, const char **, const char *);
64
void find_command(const char *, struct cmdentry *, int, const char *);
65
int find_builtin(const char *, int *);
66
void hashcd(void);
67
void changepath(const char *);
68
void defun(const char *, union node *);
69
int unsetfunc(const char *);
70
int isfunc(const char *);
71
int typecmd_impl(int, char **, int, const char *);
72
void clearcmdentry(void);
73
const void *itercmd(const void *, struct cmdentry *);
74
75