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 */
|
static char *arg0; /* value of $0 */
|
||||||
|
|
||||||
|
|
||||||
/* ============ Interrupts / exceptions
|
/* ============ Interrupts / exceptions */
|
||||||
*
|
|
||||||
|
/*
|
||||||
* We enclose jmp_buf in a structure so that we can declare pointers to
|
* 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 locations. The global variable handler contains the location to
|
||||||
* jump to when an exception occurs, and the global variable exception
|
* jump to when an exception occurs, and the global variable exception
|
||||||
@ -8045,14 +8046,46 @@ localcmd(int argc, char **argv)
|
|||||||
return 0;
|
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[] */
|
/* Forward declarations for builtintab[] */
|
||||||
#if JOBS
|
|
||||||
static int fg_bgcmd(int, char **);
|
|
||||||
#endif
|
|
||||||
static int breakcmd(int, char **);
|
static int breakcmd(int, char **);
|
||||||
#if ENABLE_ASH_CMDCMD
|
|
||||||
static int commandcmd(int, char **);
|
|
||||||
#endif
|
|
||||||
static int dotcmd(int, char **);
|
static int dotcmd(int, char **);
|
||||||
static int evalcmd(int, char **);
|
static int evalcmd(int, char **);
|
||||||
#if ENABLE_ASH_BUILTIN_ECHO
|
#if ENABLE_ASH_BUILTIN_ECHO
|
||||||
@ -8061,39 +8094,22 @@ static int echocmd(int, char **);
|
|||||||
#if ENABLE_ASH_BUILTIN_TEST
|
#if ENABLE_ASH_BUILTIN_TEST
|
||||||
static int testcmd(int, char **);
|
static int testcmd(int, char **);
|
||||||
#endif
|
#endif
|
||||||
static int execcmd(int, char **);
|
|
||||||
static int exitcmd(int, char **);
|
static int exitcmd(int, char **);
|
||||||
static int exportcmd(int, char **);
|
static int exportcmd(int, char **);
|
||||||
static int falsecmd(int, char **);
|
|
||||||
#if ENABLE_ASH_GETOPTS
|
#if ENABLE_ASH_GETOPTS
|
||||||
static int getoptscmd(int, char **);
|
static int getoptscmd(int, char **);
|
||||||
#endif
|
#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
|
#if ENABLE_ASH_MATH_SUPPORT
|
||||||
static int letcmd(int, char **);
|
static int letcmd(int, char **);
|
||||||
#endif
|
#endif
|
||||||
static int pwdcmd(int, char **);
|
|
||||||
static int readcmd(int, char **);
|
static int readcmd(int, char **);
|
||||||
static int returncmd(int, char **);
|
|
||||||
static int setcmd(int, char **);
|
static int setcmd(int, char **);
|
||||||
static int shiftcmd(int, char **);
|
static int shiftcmd(int, char **);
|
||||||
static int timescmd(int, char **);
|
static int timescmd(int, char **);
|
||||||
static int trapcmd(int, char **);
|
static int trapcmd(int, char **);
|
||||||
static int truecmd(int, char **);
|
|
||||||
static int typecmd(int, char **);
|
|
||||||
static int umaskcmd(int, char **);
|
static int umaskcmd(int, char **);
|
||||||
static int unsetcmd(int, char **);
|
static int unsetcmd(int, char **);
|
||||||
static int waitcmd(int, char **);
|
|
||||||
static int ulimitcmd(int, char **);
|
static int ulimitcmd(int, char **);
|
||||||
#if JOBS
|
|
||||||
static int killcmd(int, char **);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define BUILTIN_NOSPEC "0"
|
#define BUILTIN_NOSPEC "0"
|
||||||
#define BUILTIN_SPECIAL "1"
|
#define BUILTIN_SPECIAL "1"
|
||||||
@ -8505,9 +8521,10 @@ prehash(union node *n)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/* ============ Builtin commands
|
||||||
* Builtin commands. Builtin commands whose functions are closely
|
*
|
||||||
* tied to evaluation are implemented here.
|
* 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
|
* 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.
|
* in the standard shell so we don't make it one here.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int
|
static int
|
||||||
breakcmd(int argc, char **argv)
|
breakcmd(int argc, char **argv)
|
||||||
{
|
{
|
||||||
@ -8531,50 +8547,12 @@ breakcmd(int argc, char **argv)
|
|||||||
if (n > loopnest)
|
if (n > loopnest)
|
||||||
n = loopnest;
|
n = loopnest;
|
||||||
if (n > 0) {
|
if (n > 0) {
|
||||||
evalskip = (**argv == 'c')? SKIPCONT : SKIPBREAK;
|
evalskip = (**argv == 'c') ? SKIPCONT : SKIPBREAK;
|
||||||
skipcount = n;
|
skipcount = n;
|
||||||
}
|
}
|
||||||
return 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;
|
|
||||||
}
|
|
||||||
|
|
||||||
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
|
/* ============ input.c
|
||||||
*
|
*
|
||||||
@ -10876,8 +10854,7 @@ parseheredoc(void)
|
|||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* called by editline -- any expansions to the prompt
|
* called by editline -- any expansions to the prompt should be added here.
|
||||||
* should be added here.
|
|
||||||
*/
|
*/
|
||||||
#if ENABLE_ASH_EXPAND_PRMT
|
#if ENABLE_ASH_EXPAND_PRMT
|
||||||
static const char *
|
static const char *
|
||||||
@ -10900,7 +10877,6 @@ expandstr(const char *ps)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Execute a command or commands contained in a string.
|
* 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 */
|
/* If %builtin not in path, check for builtin next */
|
||||||
bcmd = find_builtin(name);
|
bcmd = find_builtin(name);
|
||||||
if (bcmd && (IS_BUILTIN_REGULAR(bcmd) || (
|
if (bcmd) {
|
||||||
act & DO_ALTPATH ? !(act & DO_ALTBLTIN) : builtinloc <= 0
|
if (IS_BUILTIN_REGULAR(bcmd))
|
||||||
)))
|
goto builtin_success;
|
||||||
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. */
|
/* We have to search path. */
|
||||||
prev = -1; /* where to start */
|
prev = -1; /* where to start */
|
||||||
|
Loading…
Reference in New Issue
Block a user