From 203e8395faa9135956e3b2a2b749b6dd96a7e988 Mon Sep 17 00:00:00 2001 From: Stephen Kitt Date: Mon, 6 Jun 2016 22:45:27 +0800 Subject: jobs: Handle string-based job descriptors When looking for a job using a string descriptor, e.g. fg %man the relevant loop in src/jobs.c only ever exits to the err label. With this patch, when the end condition is reached, we check whether a job was found, and if so, set things up to exit correctly via gotit. Multiple matches are already caught using the test in the match block. Signed-off-by: Stephen Kitt Signed-off-by: Herbert Xu --- src/jobs.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/jobs.c b/src/jobs.c index 3997863..4f02e38 100644 --- a/src/jobs.c +++ b/src/jobs.c @@ -714,9 +714,7 @@ check: } found = 0; - while (1) { - if (!jp) - goto err; + while (jp) { if (match(jp->ps[0].cmd, p)) { if (found) goto err; @@ -726,6 +724,10 @@ check: jp = jp->prev_job; } + if (!found) + goto err; + jp = found; + gotit: #if JOBS err_msg = "job %s not created under job control"; -- cgit 1.4.1