12年前に書いたコードを晒してみる

http://coderepos.org/share/browser/lang/c/friendsd

マルチプロセス&共有メモリによるダウンロード+ select(2) ベースの配信による finger プロキシ。タイムスタンプ見てると、1995年11月〜1996年10月っぽい。

どうみてもダメダメな reader-writer lock が涙を誘います (http://coderepos.org/share/browser/lang/c/friendsd/shm.c#L108

void shmEnter( char *mode ) {
  int waitTime;
  
  if( !strcmp( mode, "w" ) ) {
    flags->wait++;
    for( waitTime = 0; ; waitTime++ ) {
      if( !flags->write && !flags->read )
        break;
      usleep( INTERVAL );
    }
    flags->write++;
  } else {
    for( waitTime = 0; ; waitTime++ ) {
      if( !flags->wait )
        break;
      usleep( INTERVAL );
    }
    flags->read++;
  }
  if( getShmDebug() ) {
    fprintf( stderr, "        shmEnter( \"%s\" ): %d:%d:%d(w:r:wait)\n", mode, flags->write, flags->read, waitTime );
    fflush( stderr );
  }
}