Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • owl.c

    ra7fac14 rb8a3e00  
    389389}
    390390
    391 #define OR_DIE(s, syscall)      \
     391#define CHECK_RESULT(s, syscall) \
    392392  G_STMT_START {                 \
    393     if ((syscall) == -1) {       \
     393    if ((syscall) != 0) {        \
    394394      perror((s));               \
    395395      exit(1);                   \
     
    402402  sigset_t sigset;
    403403  int ret, i;
    404   const int reset_signals[] = { SIGABRT, SIGBUS, SIGCHLD, SIGFPE, SIGILL,
    405                                 SIGQUIT, SIGSEGV, };
    406   /* Don't bother resetting watched ones because owl_signal_init will. */
    407   const int watch_signals[] = { SIGWINCH, SIGTERM, SIGHUP, SIGINT, };
     404  const int signals[] = { SIGABRT, SIGBUS, SIGCHLD, SIGFPE, SIGHUP, SIGILL,
     405                          SIGINT, SIGQUIT, SIGSEGV, SIGTERM, SIGWINCH };
    408406
    409407  /* Sanitize our signals; the mask and dispositions from our parent
    410408   * aren't really useful. Signal list taken from equivalent code in
    411409   * Chromium. */
    412   OR_DIE("sigemptyset", sigemptyset(&sigset));
     410  CHECK_RESULT("sigemptyset", sigemptyset(&sigset));
    413411  if ((ret = pthread_sigmask(SIG_SETMASK, &sigset, NULL)) != 0) {
    414412    errno = ret;
    415413    perror("pthread_sigmask");
    416     exit(1);
    417   }
    418   for (i = 0; i < G_N_ELEMENTS(reset_signals); i++) {
    419     OR_DIE("sigaction", sigaction(reset_signals[i], &sig_default, NULL));
     414  }
     415  for (i = 0; i < G_N_ELEMENTS(signals); i++) {
     416    CHECK_RESULT("sigaction", sigaction(signals[i], &sig_default, NULL));
    420417  }
    421418
    422419  /* Turn off SIGPIPE; we check the return value of write. */
    423   OR_DIE("sigaction", sigaction(SIGPIPE, &sig_ignore, NULL));
     420  CHECK_RESULT("sigaction", sigaction(SIGPIPE, &sig_ignore, NULL));
    424421
    425422  /* Register some signals with the signal thread. */
    426   owl_signal_init(watch_signals, G_N_ELEMENTS(watch_signals),
    427                   sig_handler, NULL);
     423  CHECK_RESULT("sigaddset", sigaddset(&sigset, SIGWINCH));
     424  CHECK_RESULT("sigaddset", sigaddset(&sigset, SIGTERM));
     425  CHECK_RESULT("sigaddset", sigaddset(&sigset, SIGHUP));
     426  CHECK_RESULT("sigaddset", sigaddset(&sigset, SIGINT));
     427  owl_signal_init(&sigset, sig_handler, NULL);
    428428}
    429429
Note: See TracChangeset for help on using the changeset viewer.