summaryrefslogtreecommitdiffstats
path: root/bin/sh/jobs.c
diff options
context:
space:
mode:
Diffstat (limited to 'bin/sh/jobs.c')
-rw-r--r--bin/sh/jobs.c24
1 files changed, 19 insertions, 5 deletions
diff --git a/bin/sh/jobs.c b/bin/sh/jobs.c
index aa8d988..7129a9f 100644
--- a/bin/sh/jobs.c
+++ b/bin/sh/jobs.c
@@ -96,6 +96,7 @@ static void restartjob(struct job *);
#endif
static void freejob(struct job *);
static int waitcmdloop(struct job *);
+static struct job *getjob_nonotfound(char *);
static struct job *getjob(char *);
pid_t getjobpgrp(char *);
static pid_t dowait(int, struct job *);
@@ -467,8 +468,11 @@ waitcmd(int argc __unused, char **argv __unused)
return (waitcmdloop(NULL));
do {
- job = getjob(*argptr);
- retval = waitcmdloop(job);
+ job = getjob_nonotfound(*argptr);
+ if (job == NULL)
+ retval = 127;
+ else
+ retval = waitcmdloop(job);
argptr++;
} while (*argptr != NULL);
@@ -558,7 +562,7 @@ jobidcmd(int argc __unused, char **argv)
*/
static struct job *
-getjob(char *name)
+getjob_nonotfound(char *name)
{
int jobno;
struct job *found, *jp;
@@ -623,12 +627,22 @@ currentjob: if ((jp = getcurjob(NULL)) == NULL)
return jp;
}
}
- error("No such job: %s", name);
- /*NOTREACHED*/
return NULL;
}
+static struct job *
+getjob(char *name)
+{
+ struct job *jp;
+
+ jp = getjob_nonotfound(name);
+ if (jp == NULL)
+ error("No such job: %s", name);
+ return (jp);
+}
+
+
pid_t
getjobpgrp(char *name)
{
OpenPOWER on IntegriCloud