in FreeRTOS-Plus/Source/Reliance-Edge/posix/posix.c [809:857]
int32_t red_open(
const char *pszPath,
uint32_t ulOpenMode)
{
int32_t iFildes = -1; /* Init'd to quiet warnings. */
REDSTATUS ret;
#if REDCONF_READ_ONLY == 1
if(ulOpenMode != RED_O_RDONLY)
{
ret = -RED_EROFS;
}
#else
if( (ulOpenMode != (ulOpenMode & RED_O_MASK))
|| ((ulOpenMode & (RED_O_RDONLY|RED_O_WRONLY|RED_O_RDWR)) == 0U)
|| (((ulOpenMode & RED_O_RDONLY) != 0U) && ((ulOpenMode & (RED_O_WRONLY|RED_O_RDWR)) != 0U))
|| (((ulOpenMode & RED_O_WRONLY) != 0U) && ((ulOpenMode & (RED_O_RDONLY|RED_O_RDWR)) != 0U))
|| (((ulOpenMode & RED_O_RDWR) != 0U) && ((ulOpenMode & (RED_O_RDONLY|RED_O_WRONLY)) != 0U))
|| (((ulOpenMode & (RED_O_TRUNC|RED_O_CREAT|RED_O_EXCL)) != 0U) && ((ulOpenMode & RED_O_RDONLY) != 0U))
|| (((ulOpenMode & RED_O_EXCL) != 0U) && ((ulOpenMode & RED_O_CREAT) == 0U)))
{
ret = -RED_EINVAL;
}
#if REDCONF_API_POSIX_FTRUNCATE == 0
else if((ulOpenMode & RED_O_TRUNC) != 0U)
{
ret = -RED_EINVAL;
}
#endif
#endif
else
{
ret = PosixEnter();
}
if(ret == 0)
{
ret = FildesOpen(pszPath, ulOpenMode, FTYPE_EITHER, &iFildes);
PosixLeave();
}
if(ret != 0)
{
iFildes = PosixReturn(ret);
}
return iFildes;
}