svn commit: r216199 - head/bin/sh

Jilles Tjoelker jilles at FreeBSD.org
Sun Dec 5 16:09:03 UTC 2010


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)


More information about the svn-src-all mailing list