Main

May 03, 2006

久しぶりにソース

パッケージ生活どっぷりでしたが、久しぶりにソースからインストール。
qmailにsmtpd-authのパッチをあててmake setup checkしたら

warning: return type of 'main' is not 'int'

てなwarningが出た。
別に放置しても構わないけど、今後の仕事でqmail何回もインストールしないといけないっぽいのでググってみる。
ANSI Cでは一般的に「main関数は int型の数値を返すように設計されるべきである」と推奨してるようだ。
理由は返り値によってプログラムの成功か失敗かを正確に判定するため。
実際にqmail-smtpd.cのソースを見ると

void main()
{
  sig_pipeignore();
  if (chdir(auto_qmail) == -1) die_control();
  setup();
  if (ipme_init() != 1) die_ipme();
  smtp_greet("220 ");
  out(" ESMTP\r\n");
  if (commands(&ssin,&smtpcommands) == 0) die_read();
  die_nomem();
}

main関数の返り値がvoidになってる。