Author: jilles
Date: Fri Aug 16 13:56:43 2013
New Revision: 254413
URL: http://svnweb.freebsd.org/changeset/base/254413

Log:
  sh: Recognize "--" as end of options in bg/fg/jobid builtins.

Added:
  head/tools/regression/bin/sh/builtins/jobid2.0   (contents, props changed)
Modified:
  head/bin/sh/jobs.c

Modified: head/bin/sh/jobs.c
==============================================================================
--- head/bin/sh/jobs.c  Fri Aug 16 13:48:11 2013        (r254412)
+++ head/bin/sh/jobs.c  Fri Aug 16 13:56:43 2013        (r254413)
@@ -183,13 +183,14 @@ out:                              out2fmt_flush("sh: 
can't access 
 
 #if JOBS
 int
-fgcmd(int argc __unused, char **argv)
+fgcmd(int argc __unused, char **argv __unused)
 {
        struct job *jp;
        pid_t pgrp;
        int status;
 
-       jp = getjob(argv[1]);
+       nextopt("");
+       jp = getjob(*argptr);
        if (jp->jobctl == 0)
                error("job not created under job control");
        printjobcmd(jp);
@@ -210,8 +211,9 @@ bgcmd(int argc, char **argv)
 {
        struct job *jp;
 
+       nextopt("");
        do {
-               jp = getjob(*++argv);
+               jp = getjob(*argptr);
                if (jp->jobctl == 0)
                        error("job not created under job control");
                if (jp->state == JOBDONE)
@@ -220,7 +222,7 @@ bgcmd(int argc, char **argv)
                jp->foreground = 0;
                out1fmt("[%td] ", jp - jobtab + 1);
                printjobcmd(jp);
-       } while (--argc > 1);
+       } while (*argptr != NULL && *++argptr != NULL);
        return 0;
 }
 
@@ -542,12 +544,13 @@ waitcmdloop(struct job *job)
 
 
 int
-jobidcmd(int argc __unused, char **argv)
+jobidcmd(int argc __unused, char **argv __unused)
 {
        struct job *jp;
        int i;
 
-       jp = getjob(argv[1]);
+       nextopt("");
+       jp = getjob(*argptr);
        for (i = 0 ; i < jp->nprocs ; ) {
                out1fmt("%d", (int)jp->ps[i].pid);
                out1c(++i < jp->nprocs? ' ' : '\n');

Added: head/tools/regression/bin/sh/builtins/jobid2.0
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/tools/regression/bin/sh/builtins/jobid2.0      Fri Aug 16 13:56:43 
2013        (r254413)
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+: &
+p1=$(jobid)
+p2=$(jobid --)
+p3=$(jobid %+)
+p4=$(jobid -- %+)
+[ "${p1:?}" = "${p2:?}" ] && [ "${p2:?}" = "${p3:?}" ] &&
+[ "${p3:?}" = "${p4:?}" ] && [ "${p4:?}" = "${p1:?}" ]
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "[email protected]"

Reply via email to