projects
/
unix-history
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
tags
|
clone url
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
new signals make read's restarted, thus must setjmp/longjmp to get
[unix-history]
/
usr
/
src
/
old
/
sh
/
fault.c
diff --git
a/usr/src/old/sh/fault.c
b/usr/src/old/sh/fault.c
index
534bb44
..
8dfb99f
100644
(file)
--- a/
usr/src/old/sh/fault.c
+++ b/
usr/src/old/sh/fault.c
@@
-1,4
+1,4
@@
-/* fault.c 4.
1 82/05/07
*/
+/* fault.c 4.
2 83/06/10
*/
#
/*
#
/*
@@
-14,6
+14,7
@@
STRING trapcom[MAXTRAP];
BOOL trapflg[MAXTRAP];
STRING trapcom[MAXTRAP];
BOOL trapflg[MAXTRAP];
+BOOL trapjmp[MAXTRAP];
/* ======== fault handling routines ======== */
/* ======== fault handling routines ======== */
@@
-23,7
+24,6
@@
VOID fault(sig)
{
REG INT flag;
{
REG INT flag;
- signal(sig,fault);
IF sig==MEMF
THEN IF setbrk(brkincr) == -1
THEN error(nospace);
IF sig==MEMF
THEN IF setbrk(brkincr) == -1
THEN error(nospace);
@@
-36,6
+36,11
@@
VOID fault(sig)
trapnote |= flag;
trapflg[sig] |= flag;
FI
trapnote |= flag;
trapflg[sig] |= flag;
FI
+ IF trapjmp[sig] ANDF sig==INTR
+ THEN
+ trapjmp[sig] = 0;
+ longjmp(INTbuf, 1);
+ FI
}
stdsigs()
}
stdsigs()