imgtools/romtools/rofsbuild/fsnode.h
changeset 605 122d2b873fd1
child 647 53d1ab72f5bc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/imgtools/romtools/rofsbuild/fsnode.h	Fri Jun 25 20:58:33 2010 +0800
@@ -0,0 +1,85 @@
+/*
+* Copyright (c) 2010 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: 
+*
+*/
+#ifndef __FILE_SYSTEM_ITEM_HEADER__
+#define __FILE_SYSTEM_ITEM_HEADER__ 
+#include "fatdefines.h"
+#include <time.h>
+class UTF16String; 
+class TFSNode {
+public :
+   TFSNode(TFSNode* aParent = 0 ,const char* aFileName = 0, TUint8 aAttrs = 0, const char* aPCSideName = 0);
+	~TFSNode() ;
+#ifdef _DEBUG
+	void PrintTree(int nTab = 0);
+#endif
+	inline TUint8 GetAttrs() const { return iAttrs ;}
+	inline const char* GetFileName() const { return (iFileName != 0) ? iFileName : "" ;}
+	inline const char* GetPCSideName() const { return (iPCSideName != 0) ? iPCSideName : "" ;}
+	inline TFSNode* GetParent() const { return iParent;}
+	inline TFSNode* GetFirstChild() const {return iFirstChild;}
+	inline TFSNode* GetSibling() const { return iSibling ;}
+	
+	// return the size of memory needed to store this entry in a FAT system
+	// for a file entry, it's size of file
+	// for a directory entry, it's sumup of memory for subdir and files entry storage
+	TUint GetSize() const ; 
+	
+	bool IsDirectory() const ;
+	
+	//Except for "." and "..", every direcoty/file entry in FAT filesystem are treated as with
+	//"long name", for the purpose of reserving case sensitive file name.
+	// This function is for GetLongEntries() to know length of long name .
+	int GetWideNameLength() const ;
+	
+	// To init the entry,
+	// For a file entry, aSize is the known file size,
+	// For a directory entry, aSize is not cared.	
+	void Init(time_t aCreateTime, time_t aAccessTime, time_t aWriteTime, TUint aSize );
+	
+	//This function is used by TFatImgGenerator::PrepareClusters, to prepare the clusters 
+	// aClusterData should points to a buffer which is at least the size returns by 
+	// GetSize() 
+	void WriteDirEntries(TUint aStartIndex, TUint8* aClusterData ); 
+	
+	static TFSNode* CreateFromFolder(const char* aPath,TFSNode* aParent = NULL);
+	
+	
+	
+protected:
+	void GenerateBasicName();
+	void MakeUniqueShortName(char rShortName[12],TUint baseNameLength) const;
+	void GetShortEntry(TShortDirEntry* aEntry);
+	int GetLongEntries(TLongDirEntry* aEntries) ; 
+	TFSNode* iParent ;
+	TFSNode* iFirstChild ;
+	TFSNode* iSibling ;
+	TUint8 iAttrs ;
+	char* iPCSideName;
+	char* iFileName;
+	char iShortName[12];
+	UTF16String* iWideName ;	
+	TTimeInteger iCrtTime ;
+	TDateInteger iCrtDate ;
+	TUint8 iCrtTimeTenth ;
+	TDateInteger iLstAccDate ;
+	TTimeInteger iWrtTime ;
+	TDateInteger iWrtDate ;
+	TUint iFileSize ;
+	TShortDirEntry* iFATEntry ;
+};
+ 
+#endif