diff -r 47c74d1534e1 -r ddc455616bd6 genericopenlibs/openenvcore/backend/src/corebackend/fdesc.cpp --- a/genericopenlibs/openenvcore/backend/src/corebackend/fdesc.cpp Fri Apr 16 16:46:38 2010 +0300 +++ b/genericopenlibs/openenvcore/backend/src/corebackend/fdesc.cpp Mon May 03 14:06:43 2010 +0300 @@ -117,23 +117,27 @@ 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; + TFullName fullName; + err = GetFullFile(fullName, (const TText16*)name, rfs); + if(err != KErrNone) + return NULL; + int ret1 = rfs.Att(fullName, 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; - err = GetFullFile(fullName, (const TText16*)name, rfs); - if(err != KErrNone) - return NULL; - - //Try opening as a file + //Try opening as a file CFileDesc* file = new CFileDesc; if(file != NULL) { @@ -634,14 +638,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;