mptr->__exclusive = *mode == 'x';
__getmode (const char *mode, __io_mode *mptr){  register unsigned char i;  if (mode == NULL)    badmode ();  memset ((void *) mptr, 0, sizeof (*mptr));  switch (*mode)    {    case 'a':      mptr->__write = mptr->__create = mptr->__append = 1;      break;    case 'w':      mptr->__write = mptr->__create = mptr->__truncate = 1;      break;    case 'r':      mptr->__read = 1;      break;    default:      badmode ();    }  for (i = 1; i < 3; ++i)    {      ++mode;      if (*mode == '\0')	break;      switch (*mode)	{	case '+':	  mptr->__read = mptr->__write = 1;	  break;	case 'b':	  mptr->__binary = 1;	  break;	}    }  if (!mptr->__read && !mptr->__write)    badmode ();  mptr->__exclusive = *mode == 'x';  return 1;}