Subversion Repositories Kolibri OS

Rev

Rev 4874 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4874 Rev 4921
Line 58... Line 58...
58
      break;
58
      break;
59
    default:			/* illegal mode */
59
    default:			/* illegal mode */
60
      ptr->_errno = EINVAL;
60
      ptr->_errno = EINVAL;
61
      return (0);
61
      return (0);
62
    }
62
    }
63
  if (mode[1] && (mode[1] == '+' || mode[2] == '+'))
63
  while (*++mode)
64
    {
64
    {
65
      ret = (ret & ~(__SRD | __SWR)) | __SRW;
-
 
66
      m = O_RDWR;
65
      switch (*mode)
67
    }
-
 
68
  if (mode[1] && (mode[1] == 'b' || mode[2] == 'b'))
-
 
69
    {
66
	{
-
 
67
	case '+':
-
 
68
      ret = (ret & ~(__SRD | __SWR)) | __SRW;
-
 
69
	  m = (m & ~O_ACCMODE) | O_RDWR;
-
 
70
	  break;
-
 
71
	case 'b':
70
#ifdef O_BINARY
72
#ifdef O_BINARY
71
      m |= O_BINARY;
73
      m |= O_BINARY;
72
#endif
74
#endif
73
    }
75
	  break;
74
#ifdef __CYGWIN__
76
#ifdef __CYGWIN__
75
  else if (mode[1] && (mode[1] == 't' || mode[2] == 't'))
-
 
76
#else
-
 
77
  else
-
 
78
#endif
-
 
79
    {
-
 
80
#ifdef O_TEXT
77
	case 't':
81
      m |= O_TEXT;
78
	  m |= O_TEXT;
-
 
79
	  break;
-
 
80
#endif
-
 
81
#if defined (O_CLOEXEC) && defined (_GLIBC_EXTENSION)
-
 
82
	case 'e':
-
 
83
	  m |= O_CLOEXEC;
-
 
84
	  break;
82
#endif
85
#endif
-
 
86
	case 'x':
-
 
87
	  m |= O_EXCL;
-
 
88
	  break;
-
 
89
	default:
-
 
90
	  break;
-
 
91
	}
83
    }
92
    }
-
 
93
#if defined (O_TEXT) && !defined (__CYGWIN__)
-
 
94
  if (!(m | O_BINARY))
-
 
95
      m |= O_TEXT;
-
 
96
#endif
84
  *optr = m | o;
97
  *optr = m | o;
85
  return ret;
98
  return ret;
86
}
99
}