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 <steve@sk2.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
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 @@
}
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 @@
jp = jp->prev_job;
}
+ if (!found)
+ goto err;
+ jp = found;
+
gotit:
#if JOBS
err_msg = "job %s not created under job control";