userlibandfileserver/fileserver/inc/rofs.h
changeset 9 96e5fb8b040d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/userlibandfileserver/fileserver/inc/rofs.h	Thu Dec 17 09:24:54 2009 +0200
@@ -0,0 +1,151 @@
+// 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