src/signals.c
changeset 71 0a13030f795d
parent 48 4841f4398fd2
child 109 bfe9b9a8fe5b
equal deleted inserted replaced
70:a9a4c5e6aa30 71:0a13030f795d
    80 
    80 
    81     // ok
    81     // ok
    82     return SUCCESS;
    82     return SUCCESS;
    83 }
    83 }
    84 
    84 
       
    85 err_t signal_ignore (int signum, struct error_info *err)
       
    86 {
       
    87     struct sigaction act = {
       
    88         .sa_handler     = SIG_IGN,
       
    89     };
       
    90     
       
    91     // signall the handler
       
    92     if (sigaction(signum, &act, NULL))
       
    93         RETURN_SET_ERROR_ERRNO(err, ERR_SIGACTION);
       
    94 
       
    95     // ok
       
    96     return SUCCESS;
       
    97 }
       
    98 
    85 struct signals *signals_default (struct event_base *ev_base) 
    99 struct signals *signals_default (struct event_base *ev_base) 
    86 {
   100 {
    87     struct signals *signals = NULL;
   101     struct signals *signals = NULL;
       
   102     struct error_info err;
    88     
   103     
    89     // alloc signals
   104     // alloc signals
    90     if (signals_create(&signals, ev_base))
   105     if (signals_create(&signals, ev_base))
    91         return NULL;
   106         return NULL;
    92     
   107     
    93     // add the set of default signals
   108     // add the set of default signals
    94     if (    signals_add(signals,    SIGPIPE,    &signals_ignore,        signals)
   109     if (signal_ignore(SIGPIPE, &err))
    95         ||  signals_add(signals,    SIGINT,     &signals_loopexit,      signals)
   110         log_err_info(&err, "signal_ignore(SIGPIPE)");
    96     ) 
   111 
       
   112     if ((ERROR_CODE(&err) = signals_add(signals, SIGINT, &signals_loopexit, signals))) {
       
   113         log_err_info(&err, "signals_add(SIGINT)");
    97         goto error;
   114         goto error;
    98     
   115     }
       
   116 
    99     // ok
   117     // ok
   100     return signals;
   118     return signals;
   101 
   119 
   102 error:
   120 error:
   103     if (signals)
   121     signals_free(signals);
   104         signals_free(signals);
       
   105 
   122 
   106     return NULL;
   123     return NULL;
   107 }   
   124 }   
   108 
   125 
   109 void signals_free (struct signals *signals) 
   126 void signals_free (struct signals *signals)