Blame SPECS/ksh-20120801-posix-exit.patch
|
Packit Service |
a8c26c |
diff --git a/src/cmd/ksh93/sh/fault.c b/src/cmd/ksh93/sh/fault.c
|
|
Packit Service |
a8c26c |
--- a/src/cmd/ksh93/sh/fault.c
|
|
Packit Service |
a8c26c |
+++ b/src/cmd/ksh93/sh/fault.c
|
|
Packit Service |
a8c26c |
@@ -643,7 +643,7 @@ void sh_done(void *ptr, register int sig)
|
|
Packit Service |
a8c26c |
sfsync((Sfio_t*)sfstdin);
|
|
Packit Service |
a8c26c |
sfsync((Sfio_t*)shp->outpool);
|
|
Packit Service |
a8c26c |
sfsync((Sfio_t*)sfstdout);
|
|
Packit Service |
a8c26c |
- if(savxit&SH_EXITSIG)
|
|
Packit Service |
a8c26c |
+ if((savxit&SH_EXITMASK) == shp->lastsig)
|
|
Packit Service |
a8c26c |
sig = savxit&SH_EXITMASK;
|
|
Packit Service |
a8c26c |
if(sig)
|
|
Packit Service |
a8c26c |
{
|
|
Packit Service |
a8c26c |
@@ -668,6 +668,12 @@ void sh_done(void *ptr, register int sig)
|
|
Packit Service |
a8c26c |
if(sh_isoption(SH_NOEXEC))
|
|
Packit Service |
a8c26c |
kiaclose((Lex_t*)shp->lex_context);
|
|
Packit Service |
a8c26c |
#endif /* SHOPT_KIA */
|
|
Packit Service |
a8c26c |
+
|
|
Packit Service |
a8c26c |
+ /* Return POSIX exit code if last process exits due to signal */
|
|
Packit Service |
a8c26c |
+ if (savxit & SH_EXITSIG) {
|
|
Packit Service |
a8c26c |
+ exit(128 + (savxit&SH_EXITMASK));
|
|
Packit Service |
a8c26c |
+ }
|
|
Packit Service |
a8c26c |
+
|
|
Packit Service |
a8c26c |
exit(savxit&SH_EXITMASK);
|
|
Packit Service |
a8c26c |
}
|