単体と配列とポインタ

http://www.apsis.ch/pound/
昼休みにPoundのソースを読んでいる。ApacheRubyに比べると圧倒的にコンパクトかつきれいなコードなので、大変読みやすい(設計の善し悪しは僕には分からない)。

それはさておき、svc.cの1375行目あたりにthr_controlというリクエストを待ち受ける関数があって、pollで読み出し可能かどうかを調べているのだけれと、pollの第一引数に単体の構造体のアドレスを渡していたので、少し混乱した。配列を受け取るんじゃなかったっけ?

void *
thr_control(void *arg)
{
    ...
    struct pollfd   polls;
    ...
    for(;;) {
        polls.fd = control_sock;
        polls.events = POLLIN | POLLPRI;
        polls.revents = 0;
        if(poll(&polls, 1, -1) < 0) {
            logmsg(LOG_WARNING, "thr_control() poll: %s", strerror(errno));
            continue;
        }

それでまあしばらく考えてみて、ポインタで渡せば単体も配列も関係ないことに気がついた。
C初心者にはいろいろ発見があるなぁ。