ash: cleanup part 2.8
This commit is contained in:
parent
0dec6de38b
commit
f98dc4db7a
132
shell/ash.c
132
shell/ash.c
@ -155,8 +155,9 @@ static char gotsig[NSIG - 1];
|
||||
static char *arg0; /* value of $0 */
|
||||
|
||||
|
||||
/* ============ Interrupts / exceptions
|
||||
*
|
||||
/* ============ Interrupts / exceptions */
|
||||
|
||||
/*
|
||||
* We enclose jmp_buf in a structure so that we can declare pointers to
|
||||
* jump locations. The global variable handler contains the location to
|
||||
* jump to when an exception occurs, and the global variable exception
|
||||
@ -8045,14 +8046,46 @@ localcmd(int argc, char **argv)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
falsecmd(int argc, char **argv)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int
|
||||
truecmd(int argc, char **argv)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
execcmd(int argc, char **argv)
|
||||
{
|
||||
if (argc > 1) {
|
||||
iflag = 0; /* exit on error */
|
||||
mflag = 0;
|
||||
optschanged();
|
||||
shellexec(argv + 1, pathval(), 0);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* The return command.
|
||||
*/
|
||||
static int
|
||||
returncmd(int argc, char **argv)
|
||||
{
|
||||
/*
|
||||
* If called outside a function, do what ksh does;
|
||||
* skip the rest of the file.
|
||||
*/
|
||||
evalskip = funcnest ? SKIPFUNC : SKIPFILE;
|
||||
return argv[1] ? number(argv[1]) : exitstatus;
|
||||
}
|
||||
|
||||
/* Forward declarations for builtintab[] */
|
||||
#if JOBS
|
||||
static int fg_bgcmd(int, char **);
|
||||
#endif
|
||||
static int breakcmd(int, char **);
|
||||
#if ENABLE_ASH_CMDCMD
|
||||
static int commandcmd(int, char **);
|
||||
#endif
|
||||
static int dotcmd(int, char **);
|
||||
static int evalcmd(int, char **);
|
||||
#if ENABLE_ASH_BUILTIN_ECHO
|
||||
@ -8061,39 +8094,22 @@ static int echocmd(int, char **);
|
||||
#if ENABLE_ASH_BUILTIN_TEST
|
||||
static int testcmd(int, char **);
|
||||
#endif
|
||||
static int execcmd(int, char **);
|
||||
static int exitcmd(int, char **);
|
||||
static int exportcmd(int, char **);
|
||||
static int falsecmd(int, char **);
|
||||
#if ENABLE_ASH_GETOPTS
|
||||
static int getoptscmd(int, char **);
|
||||
#endif
|
||||
static int hashcmd(int, char **);
|
||||
#if !ENABLE_FEATURE_SH_EXTRA_QUIET
|
||||
static int helpcmd(int argc, char **argv);
|
||||
#endif
|
||||
#if JOBS
|
||||
static int jobscmd(int, char **);
|
||||
#endif
|
||||
#if ENABLE_ASH_MATH_SUPPORT
|
||||
static int letcmd(int, char **);
|
||||
#endif
|
||||
static int pwdcmd(int, char **);
|
||||
static int readcmd(int, char **);
|
||||
static int returncmd(int, char **);
|
||||
static int setcmd(int, char **);
|
||||
static int shiftcmd(int, char **);
|
||||
static int timescmd(int, char **);
|
||||
static int trapcmd(int, char **);
|
||||
static int truecmd(int, char **);
|
||||
static int typecmd(int, char **);
|
||||
static int umaskcmd(int, char **);
|
||||
static int unsetcmd(int, char **);
|
||||
static int waitcmd(int, char **);
|
||||
static int ulimitcmd(int, char **);
|
||||
#if JOBS
|
||||
static int killcmd(int, char **);
|
||||
#endif
|
||||
|
||||
#define BUILTIN_NOSPEC "0"
|
||||
#define BUILTIN_SPECIAL "1"
|
||||
@ -8505,9 +8521,10 @@ prehash(union node *n)
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Builtin commands. Builtin commands whose functions are closely
|
||||
* tied to evaluation are implemented here.
|
||||
/* ============ Builtin commands
|
||||
*
|
||||
* Builtin commands whose functions are closely tied to evaluation
|
||||
* are implemented here.
|
||||
*/
|
||||
|
||||
/*
|
||||
@ -8520,7 +8537,6 @@ prehash(union node *n)
|
||||
* be an error to break out of more loops than exist, but it isn't
|
||||
* in the standard shell so we don't make it one here.
|
||||
*/
|
||||
|
||||
static int
|
||||
breakcmd(int argc, char **argv)
|
||||
{
|
||||
@ -8531,50 +8547,12 @@ breakcmd(int argc, char **argv)
|
||||
if (n > loopnest)
|
||||
n = loopnest;
|
||||
if (n > 0) {
|
||||
evalskip = (**argv == 'c')? SKIPCONT : SKIPBREAK;
|
||||
evalskip = (**argv == 'c') ? SKIPCONT : SKIPBREAK;
|
||||
skipcount = n;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* The return command.
|
||||
*/
|
||||
static int
|
||||
returncmd(int argc, char **argv)
|
||||
{
|
||||
/*
|
||||
* If called outside a function, do what ksh does;
|
||||
* skip the rest of the file.
|
||||
*/
|
||||
evalskip = funcnest ? SKIPFUNC : SKIPFILE;
|
||||
return argv[1] ? number(argv[1]) : exitstatus;
|
||||
}
|
||||
|
||||
static int
|
||||
falsecmd(int argc, char **argv)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int
|
||||
truecmd(int argc, char **argv)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
execcmd(int argc, char **argv)
|
||||
{
|
||||
if (argc > 1) {
|
||||
iflag = 0; /* exit on error */
|
||||
mflag = 0;
|
||||
optschanged();
|
||||
shellexec(argv + 1, pathval(), 0);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/* ============ input.c
|
||||
*
|
||||
@ -10876,8 +10854,7 @@ parseheredoc(void)
|
||||
|
||||
|
||||
/*
|
||||
* called by editline -- any expansions to the prompt
|
||||
* should be added here.
|
||||
* called by editline -- any expansions to the prompt should be added here.
|
||||
*/
|
||||
#if ENABLE_ASH_EXPAND_PRMT
|
||||
static const char *
|
||||
@ -10900,7 +10877,6 @@ expandstr(const char *ps)
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
* Execute a command or commands contained in a string.
|
||||
*/
|
||||
@ -11207,10 +11183,16 @@ find_command(char *name, struct cmdentry *entry, int act, const char *path)
|
||||
|
||||
/* If %builtin not in path, check for builtin next */
|
||||
bcmd = find_builtin(name);
|
||||
if (bcmd && (IS_BUILTIN_REGULAR(bcmd) || (
|
||||
act & DO_ALTPATH ? !(act & DO_ALTBLTIN) : builtinloc <= 0
|
||||
)))
|
||||
goto builtin_success;
|
||||
if (bcmd) {
|
||||
if (IS_BUILTIN_REGULAR(bcmd))
|
||||
goto builtin_success;
|
||||
if (act & DO_ALTPATH) {
|
||||
if (!(act & DO_ALTBLTIN))
|
||||
goto builtin_success;
|
||||
} else if (builtinloc <= 0) {
|
||||
goto builtin_success;
|
||||
}
|
||||
}
|
||||
|
||||
/* We have to search path. */
|
||||
prev = -1; /* where to start */
|
||||
|
Loading…
Reference in New Issue
Block a user