aboutsummaryrefslogtreecommitdiffstats
path: root/builtins/kill.def
diff options
context:
space:
mode:
authorJari Aalto <jari.aalto@cante.net>2001-11-13 17:56:06 +0000
committerJari Aalto <jari.aalto@cante.net>2009-09-12 16:46:54 +0000
commitf73dda092b33638d2d5e9c35375f687a607b5403 (patch)
treef21584e70a444d6a1ecba0fb5e2cf79e8cce91db /builtins/kill.def
parent28ef6c316f1aff914bb95ac09787a3c83c1815fd (diff)
downloadandroid_external_bash-f73dda092b33638d2d5e9c35375f687a607b5403.tar.gz
android_external_bash-f73dda092b33638d2d5e9c35375f687a607b5403.tar.bz2
android_external_bash-f73dda092b33638d2d5e9c35375f687a607b5403.zip
Imported from ../bash-2.05a.tar.gz.
Diffstat (limited to 'builtins/kill.def')
-rw-r--r--builtins/kill.def15
1 files changed, 6 insertions, 9 deletions
diff --git a/builtins/kill.def b/builtins/kill.def
index 4392717..d7aba5b 100644
--- a/builtins/kill.def
+++ b/builtins/kill.def
@@ -58,8 +58,6 @@ extern int errno;
#endif /* !errno */
#if defined (JOB_CONTROL)
-extern int interactive;
-extern int job_control;
extern int posixly_correct;
#if !defined (CONTINUE_AFTER_KILL_ERROR)
@@ -78,6 +76,7 @@ kill_builtin (list)
int signal, any_succeeded, listing, saw_signal;
char *sigspec, *word;
pid_t pid;
+ long pid_value;
if (list == 0)
{
@@ -164,10 +163,10 @@ kill_builtin (list)
if (*word == '-')
word++;
- if (*word && all_digits (word))
+ if (*word && legal_number (word, &pid_value) && (pid_value == (pid_t)pid_value))
{
/* Use the entire argument in case of minus sign presence. */
- pid = (pid_t) atoi (list->word->word);
+ pid = (pid_t) pid_value;
if (kill_pid (pid, signal, 0) < 0)
goto signal_error;
@@ -207,12 +206,10 @@ kill_builtin (list)
if (kill_pid (pid, signal, 1) < 0)
{
signal_error:
- if (errno == EPERM)
- builtin_error ("(%d) - Not owner", (int)pid);
- else if (errno == ESRCH)
- builtin_error ("(%d) - No such pid", (int)pid);
- else
+ if (errno == EINVAL)
builtin_error ("Invalid signal %d", signal);
+ else
+ builtin_error ("(%ld) - %s", (long)pid, strerror (errno));
CONTINUE_OR_FAIL;
}
else