[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[freewnn:00774] Re: [RFC] error.c rewrite



小野寛生です。

% まだ make していません。
一緒に、signal handler の方も直したかったので、error.c への変更追加。
(2) の変更が問題ないなら de.c も変更を追加します。

(1) extern int errno という宣言は、errno.h を include しているので不要
    ではないでしょうか。あって問題にはならないと思いますが、

(2) signal handler をまとめてみました。
    daemon_fin() は再入可能ではないはずなので、その対策をいれてみました。
    exit_hand() も、signal_handler(250) とよべばまとめられるでしょう。
    現状は実質つかわれていませんが、default が SIG_IGN でない signal に
    ついてはこれを signal() で指定すればよいかと思います。(de.c)。
    こんなものでどうでしょうか。
    % 尚、対応して、de_header.h も修正が必要。

style 考えていませんが…。

void
signal_handler (signal)
  int signal
{
  static int st;
  if (st > 1) {
    return;
  }
  st = 1;
  switch signal {
  case SIGHUP:  /* FALLTHROUGH */
  case SIGINT:  /* FALLTHROUGH */
  case SIGQUIT:
    #ifdef SYSVR2
    signal (signal, signal_hand);
    #endif
    st = 0;
    break;
  case SIGTERM:
    st = 2;
    daemon_fin ();
    exit (0);
    break;
  default:
    st = 2;
    daemon_fin ();
    exit (signal);
    break;
  }
}


http://www.freewnn.org/ FreeWnn Project