author | Vladimir Marek <Vladimir.Marek@oracle.com> |
Mon, 25 Nov 2013 17:42:18 +0100 | |
branch | s11u1-sru |
changeset 2846 | 308d0c192664 |
parent 789 | 5f074ca23733 |
permissions | -rw-r--r-- |
789
5f074ca23733
7106955 move ksh93 from ON to userland
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff
changeset
|
1 |
diff -r bb8978c251cb -r 6fbea5c30b60 usr/src/cmd/ast/lib/libshell/common/sh/jobs.c |
5f074ca23733
7106955 move ksh93 from ON to userland
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff
changeset
|
2 |
--- a/src/cmd/ksh93/sh/jobs.c Sun Mar 25 23:19:46 2012 -0700 |
5f074ca23733
7106955 move ksh93 from ON to userland
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff
changeset
|
3 |
+++ b/src/cmd/ksh93/sh/jobs.c Mon Mar 26 05:09:19 2012 -0700 |
5f074ca23733
7106955 move ksh93 from ON to userland
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff
changeset
|
4 |
@@ -28,6 +28,9 @@ |
5f074ca23733
7106955 move ksh93 from ON to userland
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff
changeset
|
5 |
* Rewritten April, 1988 |
5f074ca23733
7106955 move ksh93 from ON to userland
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff
changeset
|
6 |
* Revised January, 1992 |
5f074ca23733
7106955 move ksh93 from ON to userland
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff
changeset
|
7 |
*/ |
5f074ca23733
7106955 move ksh93 from ON to userland
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff
changeset
|
8 |
+/* |
5f074ca23733
7106955 move ksh93 from ON to userland
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff
changeset
|
9 |
+ * Copyright (c) 2007, 2012, Oracle and/or its affiliates. All rights reserved. |
5f074ca23733
7106955 move ksh93 from ON to userland
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff
changeset
|
10 |
+ */ |
5f074ca23733
7106955 move ksh93 from ON to userland
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff
changeset
|
11 |
|
5f074ca23733
7106955 move ksh93 from ON to userland
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff
changeset
|
12 |
#include "defs.h" |
5f074ca23733
7106955 move ksh93 from ON to userland
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff
changeset
|
13 |
#include <wait.h> |
5f074ca23733
7106955 move ksh93 from ON to userland
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff
changeset
|
14 |
@@ -57,6 +60,7 @@ |
5f074ca23733
7106955 move ksh93 from ON to userland
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff
changeset
|
15 |
{ |
5f074ca23733
7106955 move ksh93 from ON to userland
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff
changeset
|
16 |
struct jobsave *next; |
5f074ca23733
7106955 move ksh93 from ON to userland
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff
changeset
|
17 |
pid_t pid; |
5f074ca23733
7106955 move ksh93 from ON to userland
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff
changeset
|
18 |
+ short curenv; |
5f074ca23733
7106955 move ksh93 from ON to userland
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff
changeset
|
19 |
unsigned short exitval; |
5f074ca23733
7106955 move ksh93 from ON to userland
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff
changeset
|
20 |
}; |
5f074ca23733
7106955 move ksh93 from ON to userland
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff
changeset
|
21 |
|
5f074ca23733
7106955 move ksh93 from ON to userland
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff
changeset
|
22 |
@@ -232,6 +236,7 @@ |
5f074ca23733
7106955 move ksh93 from ON to userland
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff
changeset
|
23 |
jp->pid = pid; |
5f074ca23733
7106955 move ksh93 from ON to userland
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff
changeset
|
24 |
jp->next = bck.list; |
5f074ca23733
7106955 move ksh93 from ON to userland
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff
changeset
|
25 |
bck.list = jp; |
5f074ca23733
7106955 move ksh93 from ON to userland
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff
changeset
|
26 |
+ jp->curenv = 0; |
5f074ca23733
7106955 move ksh93 from ON to userland
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff
changeset
|
27 |
jp->exitval = 0; |
5f074ca23733
7106955 move ksh93 from ON to userland
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff
changeset
|
28 |
} |
5f074ca23733
7106955 move ksh93 from ON to userland
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff
changeset
|
29 |
return(jp); |
5f074ca23733
7106955 move ksh93 from ON to userland
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff
changeset
|
30 |
@@ -1790,6 +1795,7 @@ |
5f074ca23733
7106955 move ksh93 from ON to userland
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff
changeset
|
31 |
/* save status for future wait */ |
5f074ca23733
7106955 move ksh93 from ON to userland
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff
changeset
|
32 |
if(jp = jobsave_create(pw->p_pid)) |
5f074ca23733
7106955 move ksh93 from ON to userland
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff
changeset
|
33 |
{ |
5f074ca23733
7106955 move ksh93 from ON to userland
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff
changeset
|
34 |
+ jp->curenv = pw->p_env; |
5f074ca23733
7106955 move ksh93 from ON to userland
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff
changeset
|
35 |
jp->exitval = pw->p_exit; |
5f074ca23733
7106955 move ksh93 from ON to userland
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff
changeset
|
36 |
if(pw->p_flag&P_SIGNALLED) |
5f074ca23733
7106955 move ksh93 from ON to userland
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff
changeset
|
37 |
jp->exitval |= SH_EXITSIG; |
5f074ca23733
7106955 move ksh93 from ON to userland
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff
changeset
|
38 |
@@ -1967,7 +1973,7 @@ |
5f074ca23733
7106955 move ksh93 from ON to userland
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff
changeset
|
39 |
for(jp=bck.list; jp; jp=jpnext) |
5f074ca23733
7106955 move ksh93 from ON to userland
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff
changeset
|
40 |
{ |
5f074ca23733
7106955 move ksh93 from ON to userland
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff
changeset
|
41 |
jpnext = jp->next; |
5f074ca23733
7106955 move ksh93 from ON to userland
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff
changeset
|
42 |
- if(jp->pid==sh.spid) |
5f074ca23733
7106955 move ksh93 from ON to userland
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff
changeset
|
43 |
+ if(jp->curenv != sh.curenv || jp->pid==sh.spid) |
5f074ca23733
7106955 move ksh93 from ON to userland
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff
changeset
|
44 |
{ |
5f074ca23733
7106955 move ksh93 from ON to userland
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff
changeset
|
45 |
jp->next = bp->list; |
5f074ca23733
7106955 move ksh93 from ON to userland
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff
changeset
|
46 |
bp->list = jp; |