Changeset d10ea719a3b2a41c372e4557d5cd0c6b863617a8
- Timestamp:
- 08/31/07 21:21:37
(1 year ago)
- Author:
- Rémi Denis-Courmont <rem@videolan.org>
- git-committer:
- Rémi Denis-Courmont <rem@videolan.org> 1188588097 +0000
- git-parent:
[0b1c15a38655d23327a74c577fc7c1297b3eb84e]
- git-author:
- Rémi Denis-Courmont <rem@videolan.org> 1188588097 +0000
- Message:
Dequeue "dummy" signals
-
Files:
-
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
| r54668b7 |
rd10ea71 |
|
| 234 | 234 | static void *SigHandler (void *data) |
|---|
| 235 | 235 | { |
|---|
| 236 | | const sigset_t *set = (sigset_t *)data; |
|---|
| | 236 | const sigset_t *exitset = (sigset_t *)data; |
|---|
| | 237 | sigset_t fullset; |
|---|
| 237 | 238 | time_t abort_time = 0; |
|---|
| 238 | 239 | |
|---|
| | 240 | pthread_sigmask (SIG_BLOCK, exitset, &fullset); |
|---|
| | 241 | |
|---|
| 239 | 242 | for (;;) |
|---|
| 240 | 243 | { |
|---|
| 241 | 244 | int i_signal, state; |
|---|
| 242 | | (void)sigwait (set, &i_signal); |
|---|
| | 245 | (void)sigwait (&fullset, &i_signal); |
|---|
| 243 | 246 | |
|---|
| 244 | 247 | #ifdef __APPLE__ |
|---|
| … | … | |
| 247 | 250 | pthread_testcancel(); |
|---|
| 248 | 251 | #endif |
|---|
| | 252 | |
|---|
| | 253 | if (!sigismember (exitset, i_signal)) |
|---|
| | 254 | continue; /* Ignore "dummy" signals */ |
|---|
| 249 | 255 | |
|---|
| 250 | 256 | /* Once a signal has been trapped, the termination sequence will be |
|---|
| … | … | |
| 268 | 274 | { |
|---|
| 269 | 275 | /* If user asks again more than 2 seconds later, die badly */ |
|---|
| 270 | | pthread_sigmask (SIG_UNBLOCK, set, NULL); |
|---|
| | 276 | pthread_sigmask (SIG_UNBLOCK, exitset, NULL); |
|---|
| 271 | 277 | fprintf (stderr, "user insisted too much, dying badly\n"); |
|---|
| 272 | 278 | abort (); |
|---|