switch (*mode++)
switch (*mode)
_IO_file_fopen (fp, filename, mode, is32not64)     _IO_FILE *fp;     const char *filename;     const char *mode;     int is32not64;{  int oflags = 0, omode;  int read_write;  int oprot = 0666;  if (_IO_file_is_open (fp))    return 0;  switch (*mode++)    {    case 'r':      omode = O_RDONLY;      read_write = _IO_NO_WRITES;      break;    case 'w':      omode = O_WRONLY;      oflags = O_CREAT|O_TRUNC;      read_write = _IO_NO_READS;      break;    case 'a':      omode = O_WRONLY;      oflags = O_CREAT|O_APPEND;      read_write = _IO_NO_READS|_IO_IS_APPENDING;      break;    default:      __set_errno (EINVAL);      return NULL;    }  if (mode[0] == '+' || (mode[0] == 'b' && mode[1] == '+'))    {      omode = O_RDWR;      read_write &= _IO_IS_APPENDING;    }  return _IO_file_open (fp, filename, omode|oflags, oprot, read_write,			is32not64);}