sig_init(): * Initialize all signal stuff */
| 111 | * Initialize all signal stuff |
| 112 | */ |
| 113 | protected int |
| 114 | sig_init(EditLine *el) |
| 115 | { |
| 116 | size_t i; |
| 117 | sigset_t *nset, oset; |
| 118 | |
| 119 | el->el_signal = el_malloc(sizeof(*el->el_signal)); |
| 120 | if (el->el_signal == NULL) |
| 121 | return -1; |
| 122 | |
| 123 | nset = &el->el_signal->sig_set; |
| 124 | (void) sigemptyset(nset); |
| 125 | #define _DO(a) (void) sigaddset(nset, a); |
| 126 | ALLSIGS |
| 127 | #undef _DO |
| 128 | (void) sigprocmask(SIG_BLOCK, nset, &oset); |
| 129 | |
| 130 | for (i = 0; sighdl[i] != -1; i++) { |
| 131 | el->el_signal->sig_action[i].sa_handler = SIG_ERR; |
| 132 | el->el_signal->sig_action[i].sa_flags = 0; |
| 133 | sigemptyset(&el->el_signal->sig_action[i].sa_mask); |
| 134 | } |
| 135 | |
| 136 | (void) sigprocmask(SIG_SETMASK, &oset, NULL); |
| 137 | |
| 138 | return 0; |
| 139 | } |
| 140 | |
| 141 | |
| 142 | /* sig_end(): |