Author: jilles
Date: Sun Dec  5 16:09:03 2010
New Revision: 216199
URL: http://svn.freebsd.org/changeset/base/216199

Log:
  sh: jobs -p: Do not ask the kernel for the pgid.
  
  The getpgid() call will fail if the first process in the job has already
  terminated, resulting in output of "-1".
  
  The pgid of a job is always the pid of the first process in the job and
  other code already relies on this.

Modified:
  head/bin/sh/jobs.c

Modified: head/bin/sh/jobs.c
==============================================================================
--- head/bin/sh/jobs.c  Sun Dec  5 10:15:23 2010        (r216198)
+++ head/bin/sh/jobs.c  Sun Dec  5 16:09:03 2010        (r216199)
@@ -308,7 +308,6 @@ showjob(struct job *jp, pid_t pid, int m
        struct procstat *ps;
        struct job *j;
        int col, curr, i, jobno, prev, procno;
-       pid_t ppid;
        char c;
 
        procno = (mode == SHOWJOBS_PGIDS) ? 1 : jp->nprocs;
@@ -323,9 +322,7 @@ showjob(struct job *jp, pid_t pid, int m
 #endif
        for (ps = jp->ps ; ; ps++) {    /* for each process */
                if (mode == SHOWJOBS_PIDS || mode == SHOWJOBS_PGIDS) {
-                       ppid = (mode == SHOWJOBS_PIDS) ? ps->pid :
-                           getpgid(ps->pid);
-                       out1fmt("%d\n", (int)ppid);
+                       out1fmt("%d\n", (int)ps->pid);
                        goto skip;
                }
                if (mode != SHOWJOBS_VERBOSE && ps != jp->ps && pid == 0)
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to