hush: fix kill builtin without jobs support
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
442a414d66
commit
fd68f1e80d
20
shell/hush.c
20
shell/hush.c
@ -9443,7 +9443,7 @@ static struct pipe *parse_jobspec(const char *str)
|
|||||||
return pi;
|
return pi;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
bb_error_msg("%d: no such job", jobnum);
|
bb_error_msg("%u: no such job", jobnum);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -9691,9 +9691,9 @@ static int FAST_FUNC builtin_kill(char **argv)
|
|||||||
{
|
{
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
argv = skip_dash_dash(argv);
|
# if ENABLE_HUSH_JOB
|
||||||
if (argv[0] && strcmp(argv[0], "-l") != 0) {
|
if (argv[1] && strcmp(argv[1], "-l") != 0) {
|
||||||
int i = 0;
|
int i = 1;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
struct pipe *pi;
|
struct pipe *pi;
|
||||||
@ -9735,12 +9735,9 @@ static int FAST_FUNC builtin_kill(char **argv)
|
|||||||
n = 1;
|
n = 1;
|
||||||
dst = alloca(n * sizeof(int)*4);
|
dst = alloca(n * sizeof(int)*4);
|
||||||
argv[i] = dst;
|
argv[i] = dst;
|
||||||
#if ENABLE_HUSH_JOB
|
|
||||||
if (G_interactive_fd)
|
if (G_interactive_fd)
|
||||||
dst += sprintf(dst, " -%u", (int)pi->pgrp);
|
dst += sprintf(dst, " -%u", (int)pi->pgrp);
|
||||||
else
|
else for (j = 0; j < n; j++) {
|
||||||
#endif
|
|
||||||
for (j = 0; j < n; j++) {
|
|
||||||
struct command *cmd = &pi->cmds[j];
|
struct command *cmd = &pi->cmds[j];
|
||||||
/* Skip exited members of the job */
|
/* Skip exited members of the job */
|
||||||
if (cmd->pid == 0)
|
if (cmd->pid == 0)
|
||||||
@ -9755,13 +9752,12 @@ static int FAST_FUNC builtin_kill(char **argv)
|
|||||||
*dst = '\0';
|
*dst = '\0';
|
||||||
} while (argv[++i]);
|
} while (argv[++i]);
|
||||||
}
|
}
|
||||||
|
# endif
|
||||||
|
|
||||||
if (argv[0] || ret == 0) {
|
if (argv[1] || ret == 0) {
|
||||||
argv--;
|
|
||||||
argv[0] = (char*)"kill"; /* why? think about "kill -- PID" */
|
|
||||||
/* kill_main also handles "killall" etc, so it does look at argv[0]! */
|
|
||||||
ret = run_applet_main(argv, kill_main);
|
ret = run_applet_main(argv, kill_main);
|
||||||
}
|
}
|
||||||
|
/* else: ret = 1, "kill %bad_jobspec" case */
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user