diff -r 3a3c1a7fa1e8 -r 18da5738c9b6 genericopenlibs/openenvcore/backend/src/corebackend/fdesc.cpp --- a/genericopenlibs/openenvcore/backend/src/corebackend/fdesc.cpp Mon Mar 15 12:46:24 2010 +0200 +++ b/genericopenlibs/openenvcore/backend/src/corebackend/fdesc.cpp Thu Apr 01 00:15:09 2010 +0300 @@ -117,15 +117,21 @@ else //It's a special file, directory or normal file { RFs& rfs = Backend()->FileSession(); - TSpecialFileType fileType = _SystemSpecialFileBasedFilePath(name, err, rfs); - if(fileType == EFileTypeMkFifo) //special file, FIFO - { - ret = CFileTable::FifoOpen(name, mode, perms, err); - } - else if(fileType == EFileTypeSymLink) //special file, symlink - { - ret = CFileTable::LinkOpen(name, mode, perms, err, rfs); - } + TUint attribval; + TPtrC16 filename1 = (const TText16*)name; + int ret1 = rfs.Att(filename1, attribval); + if (ret1 == 0 && ((attribval & (KEntryAttHidden | KEntryAttSystem))== (KEntryAttHidden | KEntryAttSystem))) + { + TSpecialFileType fileType = _SystemSpecialFileBasedFilePath(name, err, rfs); + if(fileType == EFileTypeMkFifo) //special file, FIFO + { + ret = CFileTable::FifoOpen(name, mode, perms, err); + } + else if(fileType == EFileTypeSymLink) //special file, symlink + { + ret = CFileTable::LinkOpen(name, mode, perms, err, rfs); + } + } else //normal file or directory { TFullName fullName; @@ -634,14 +640,14 @@ int mapped=MapMode(mode, fMode); // if the file is in \sys, use EFileShareReadersOnly not EFileShareReadersOrWriters TParsePtrC pars(aName); - if (pars.Path().FindC(_L("\\SYS\\")) == 0) + if (pars.Path().FindF(_L("\\SYS\\")) == 0) { fMode &= ~EFileShareReadersOrWriters; fMode |= EFileShareReadersOnly; } // if the file is in \resource, dont use EFileShareReadersOrWriters - if (pars.Path().FindC(_L("\\resource\\")) == 0) + if (pars.Path().FindF(_L("\\resource\\")) == 0) { fMode &= ~EFileShareReadersOrWriters; fMode |= EFileShareReadersOnly;