userlibandfileserver/fileserver/inc/rofs.h
author Tom Cosgrove <tom.cosgrove@nokia.com>
Fri, 28 May 2010 16:26:05 +0100
branchRCL_3
changeset 136 743008598095
parent 0 a41df078684a
permissions -rw-r--r--
Fix for bug 2283 (RVCT 4.0 support is missing from PDK 3.0.h) Have multiple extension sections in the bld.inf, one for each version of the compiler. The RVCT version building the tools will build the runtime libraries for its version, but make sure we extract all the other versions from zip archives. Also add the archive for RVCT4.

// Copyright (c) 1995-2009 Nokia Corporation and/or its subsidiary(-ies).
// All rights reserved.
// This component and the accompanying materials are made available
// under the terms of the License "Eclipse Public License v1.0"
// which accompanies this distribution, and is available
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
//
// Initial Contributors:
// Nokia Corporation - initial contribution.
//
// Contributors:
//
// Description:
//
// WARNING: This file contains some APIs which are internal and are subject
//          to change without notice. Such APIs should therefore not be used
//          outside the Kernel and Hardware Services package.
//

/**
 @file
 @internalAll
*/

#ifndef ROFS_H
#define ROFS_H

/**
@internalAll
@released
*/
const TUint16 KRofsFormatVersion = 0x200;

class TRofsEntry
/**
@internalAll
@released
*/
	{
public:
	TUint16 iStructSize;	// Total size of entry, header + name + any padding
	TUint8	iUids[sizeof(TCheckedUid)];		// A copy of all the UID info
	TUint8	iNameOffset;	// offset of iName from start of entry
	TUint8	iAtt;			// standard file attributes
	TUint32 iFileSize;		// real size of file in bytes (may be different from size in image)
							// for subdirectories this is the total size of the directory
							// block entry excluding padding
	TUint32 iFileAddress;	// address in image of file start
	TUint8	iAttExtra;		// extra ROFS attributes (these are inverted so 0 = enabled)
	TUint8	iNameLength;	// length of iName
	TUint16 iName[1];
	};

/**
@internalAll
@released
*/
const TUint KRofsEntryNameOffset = _FOFF( TRofsEntry, iName );
/**
@internalAll
@released
*/
const TUint KRofsEntryHeaderSize = KRofsEntryNameOffset;

class TRofsDir
/**
@internalAll
@released
*/
	{
	public:
	TUint16	iStructSize;		// Total size of this directory block including padding
	TUint8	padding;
	TUint8	iFirstEntryOffset;	// offset to first entry
	TUint32 iFileBlockAddress;	// address of associated file block
	TUint32	iFileBlockSize;		// size of associated file block
	TRofsEntry	iSubDir;		// first subdir entry (not present if no subdirs)
	};

/**
@internalAll
@released
*/
const TUint KRofsDirFirstEntryOffset = _FOFF( TRofsDir, iSubDir );
/**
@internalAll
@released
*/
const TUint KRofsDirHeaderSize = KRofsDirFirstEntryOffset;

class TRofsHeader
/**
@internalAll
@released
*/
	{
	public:
	TUint8		iIdentifier[4];		// ROFS identifier
	TUint8		iHeaderSize;
	TUint8		iReserved;
	TUint16		iRofsFormatVersion;
	TUint		iDirTreeOffset;	// offset to start of directory structure
	TUint		iDirTreeSize;		// size in bytes of directory
	TUint		iDirFileEntriesOffset;	// offset to start of file entries
	TUint		iDirFileEntriesSize;	// size in bytes of file entry block
	TInt64		iTime;
	TVersion	iImageVersion;		// licensee image version
	TUint32		iImageSize;
	TUint		iCheckSum;
	TUint32		iMaxImageSize;
	};
/**
@internalAll
@released
*/

class TExtensionRofsHeader
	{
	public:    
	TUint8		iIdentifier[4];		// ROFS Extension identifier
	TUint8		iHeaderSize;
	TUint8		iReserved;
	TUint16		iRofsFormatVersion;
	TUint		iDirTreeOffset;	        // offset to start of directory structure
	TUint		iDirTreeSize;		// size in bytes of directory
	TUint		iDirFileEntriesOffset;	// offset to start of file entries
	TUint		iDirFileEntriesSize;	// size in bytes of file entry block
	TInt64		iTime;
	TVersion	iImageVersion;		// licensee image version
	TUint32		iImageSize;
	TUint		iCheckSum;
	TUint32		iMaxImageSize;
	};

const TUint KRofsHeaderSize = sizeof(TRofsHeader);
const TUint KExtensionRofsHeaderSize = sizeof(TExtensionRofsHeader);

/**
@internalAll
@released
*/
const TInt16 KEarliestSupportedFormatVersion = KRofsFormatVersion;
/**
@internalAll
@released
*/
const TInt16 KLatestSupportedFormatVersion = KRofsFormatVersion;

const TUint KRofsMangleNameLength = 7;

#endif