genericopenlibs/openenvcore/backend/src/corebackend/fdesc.cpp
changeset 22 ddc455616bd6
parent 0 e4d67989cc36
child 45 4b03adbd26ca
child 66 38bdaa106551
--- 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;