title: why glibc fcntl is implemented as this?
body: <p>all;I'm looking the glibc source code now;i have a question is this:</p>
  
  <pre><code>int fcntl(int fd, int cmd, ...) {
      va_list ap;
      va_start(ap, cmd);
      void* arg = va_arg(ap, void*);
      va_end(ap);
      return __fcntl64(fd, cmd, arg);
  }
  </code></pre>
  
  <p>why this ???!!!</p>
  
  <pre><code>fcntl(fd,cmd); // is this a trouble?
  fcntl(fd,cmd,i/*int type*/); // and this?
  </code></pre>
  
  <p>Thanks,anyone.</p>