genericopenlibs/openenvcore/backend/src/corebackend/fdesc.cpp
branchRCL_3
changeset 15 18da5738c9b6
parent 0 e4d67989cc36
child 17 ef2ebc87518f
equal deleted inserted replaced
10:3a3c1a7fa1e8 15:18da5738c9b6
   115 		ret = com;
   115 		ret = com;
   116 		}
   116 		}
   117 	else //It's a special file, directory or normal file
   117 	else //It's a special file, directory or normal file
   118 		{
   118 		{
   119 		RFs& rfs = Backend()->FileSession();
   119 		RFs& rfs = Backend()->FileSession();
   120 		TSpecialFileType fileType = _SystemSpecialFileBasedFilePath(name, err, rfs);
   120         TUint attribval;
   121 		if(fileType  == EFileTypeMkFifo) //special file, FIFO
   121         TPtrC16 filename1 = (const TText16*)name;       
   122     		{
   122         int ret1 = rfs.Att(filename1, attribval);
   123     		ret = CFileTable::FifoOpen(name, mode, perms, err);
   123         if (ret1 == 0 && ((attribval & (KEntryAttHidden | KEntryAttSystem))== (KEntryAttHidden | KEntryAttSystem)))
   124     		}
   124             {
   125 		else if(fileType  == EFileTypeSymLink) //special file, symlink
   125             TSpecialFileType fileType = _SystemSpecialFileBasedFilePath(name, err, rfs);
   126 			{
   126             if(fileType  == EFileTypeMkFifo) //special file, FIFO
   127 			ret = CFileTable::LinkOpen(name, mode, perms, err, rfs);
   127                 {
   128 			}
   128                 ret = CFileTable::FifoOpen(name, mode, perms, err);
       
   129                 }
       
   130             else if(fileType  == EFileTypeSymLink) //special file, symlink
       
   131                 {
       
   132                 ret = CFileTable::LinkOpen(name, mode, perms, err, rfs);
       
   133                 }
       
   134             }
   129 		else //normal file or directory
   135 		else //normal file or directory
   130 		    {
   136 		    {
   131 		    TFullName fullName;
   137 		    TFullName fullName;
   132 		    err = GetFullFile(fullName, (const TText16*)name, rfs);
   138 		    err = GetFullFile(fullName, (const TText16*)name, rfs);
   133 		    if(err != KErrNone)
   139 		    if(err != KErrNone)
   632 	// Replace = open a new file, zapping the existing one if necessary
   638 	// Replace = open a new file, zapping the existing one if necessary
   633 
   639 
   634 	int mapped=MapMode(mode, fMode);
   640 	int mapped=MapMode(mode, fMode);
   635 	// if the file is in \sys, use EFileShareReadersOnly not EFileShareReadersOrWriters
   641 	// if the file is in \sys, use EFileShareReadersOnly not EFileShareReadersOrWriters
   636 	TParsePtrC pars(aName);
   642 	TParsePtrC pars(aName);
   637 	if (pars.Path().FindC(_L("\\SYS\\")) == 0)
   643 	if (pars.Path().FindF(_L("\\SYS\\")) == 0)
   638 		{
   644 		{
   639 		fMode &= ~EFileShareReadersOrWriters;
   645 		fMode &= ~EFileShareReadersOrWriters;
   640 		fMode |= EFileShareReadersOnly;
   646 		fMode |= EFileShareReadersOnly;
   641 		}
   647 		}
   642 	
   648 	
   643 	// if the file is in \resource, dont use EFileShareReadersOrWriters
   649 	// if the file is in \resource, dont use EFileShareReadersOrWriters
   644 	if (pars.Path().FindC(_L("\\resource\\")) == 0)
   650 	if (pars.Path().FindF(_L("\\resource\\")) == 0)
   645 		{
   651 		{
   646 		fMode &= ~EFileShareReadersOrWriters;
   652 		fMode &= ~EFileShareReadersOrWriters;
   647 		fMode |= EFileShareReadersOnly;
   653 		fMode |= EFileShareReadersOnly;
   648 		}
   654 		}
   649 
   655