[sugj-free:3284] Re: おもしろい書き方
Hiroshi Miura
miurahr @ acm.org
2008年 3月 14日 (金) 20:58:24 JST
お久しぶりです。こういうのは、今のプログラミングの考え方からは、悪い例になりそうですね。
三浦
On 3/14/08, ribbongw master <ribbon @ ns.ribbon.or.jp> wrote:
> Sambaに関する話題ですが、やや余談的なところもあるので、
> こっちにします。
>
> たまたま、Sambaのソースを見ていたんですが、
> lib/debug.cのDebug1という関数の中に、こういうコードを見つけました。
>
> 771 #ifdef WITH_SYSLOG
> 772 if( !lp_syslog_only() )
> 773 #endif
> 774 {
> 775 if( !dbf ) {
> 776 mode_t oldumask = umask( 022 );
> 777
> 778 dbf = x_fopen( debugf,
> O_WRONLY|O_APPEND|O_CREAT, 0644 );
> 779 (void)umask( oldumask );
> 780 if( dbf ) {
> 781 x_setbuf( dbf, NULL );
> 782 } else {
> 783 errno = old_errno;
> 784 return(0);
> 785 }
> 786 }
> 787 }
> 788
>
> ifdefで囲まれている部分、WITH_SYSLOGが定義されていないと、
> if文が消えてなくなります。しかし、次の中括弧の部分は、
> ifdefがあろうとなかろうと、ブロックとして有効なんですね。
> 効率的な書き方といえばそうなんですけどねえ...
>
> こういう書き方、始めて見ました。
>
> oota
>
--
Sent from Gmail for mobile | mobile.google.com
HIroshi Miura
NTT DATA Corp. and IPA OSS center
(株)NTTデータ /(独)情報処理推進機構
三浦広志
sugj-free メーリングリストの案内