+ for(rp = &u.u_signal[0], sigmask = 1L; rp < &u.u_signal[NSIG];
+ sigmask <<= 1, rp++) {
+ switch (*rp) {
+
+ case SIG_IGN:
+ case SIG_DFL:
+ case SIG_HOLD:
+ continue;
+
+ default:
+ /*
+ * Normal or deferring catch.
+ * If deferred, now hold it, else
+ * revert to default.
+ */
+ if (SIGISDEFER(*rp))
+ *rp = SIG_HOLD;
+ else
+ *rp = SIG_DFL;
+ if ((int)*rp & 1)
+ u.u_procp->p_siga0 |= sigmask;
+ else
+ u.u_procp->p_siga1 &= ~sigmask;
+ if ((int)*rp & 2)
+ u.u_procp->p_siga1 |= sigmask;
+ else
+ u.u_procp->p_siga1 &= ~sigmask;
+ continue;
+ }
+ }