Update contrib.
1 // Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
2 // All rights reserved.
3 // This component and the accompanying materials are made available
4 // under the terms of the License "Eclipse Public License v1.0"
5 // which accompanies this distribution, and is available
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
8 // Initial Contributors:
9 // Nokia Corporation - initial contribution.
14 // f32\sfat\inc\fat_dir_entry.h
15 // FAT directory entry related stuff definitions.
24 #if !defined(FAT_DIR_ENTRY_H)
25 #define FAT_DIR_ENTRY_H
28 //-------------------------------------------------------------------------------------------------------------------
31 const TInt KFatDirNameSize = 11; ///< Dos directory/File name length
32 const TInt KVFatEntryAttribute = 0x0F; ///< VFat entry attribute setting
33 const TUint8 KDotEntryByte = 0x2e; ///< Dot value for self and parent pointer directory entries
34 const TUint8 KBlankSpace = 0x20; ///< Blank space in a directory entry
35 const TInt KSizeOfFatDirEntryLog2 = 5; ///< Log2 of size in bytes of a Fat directry entry
36 const TUint KSizeOfFatDirEntry = 1 << KSizeOfFatDirEntryLog2; ///< Size in bytes of a Fat directry entry
38 const TUint16 KReservedIdOldEntry = 1; ///< Rugged FAT "OldEntry" id
39 const TUint16 KReservedIdNewEntry = 0; ///< Rugged FAT "ReservedIdNewEntry" id
42 typedef TBuf8<KFatDirNameSize> TShortName; ///< Buffer type fot short names in dos entries
44 //-------------------------------------------------------------------------------------------------------------------
47 Fat DOS directory entry structure
51 TUint8 iName[KFatDirNameSize]; ///< :0 File/Directory name
52 TUint8 iAttributes; ///< :11 File/Directory attributes
53 TUint8 iReserved1[2]; ///< :12 2 reserved bytes(in our implementation), some versions of Windows may use them
54 TUint16 iTimeC; ///< :14 Creation time
55 TUint16 iDateC; ///< :16 Creation date
56 TUint16 iReserved2; ///< :18 2 reserved bytes(in our implementation), FAT specs say that this is "last access date". Rugged FAT uses them as a special entry ID
57 TUint16 iStartClusterHi; ///< :20 High 16 bits of the File/Directory cluster number (Fat32 only)
58 TUint16 iTime; ///< :22 last write access time
59 TUint16 iDate; ///< :24 last write access date
60 TUint16 iStartClusterLo; ///< :26 Low 16 bits of the File/Directory cluster number
61 TUint32 iSize; ///< :28 File/Directory size in bytes
65 //-------------------------------------------------------------------------------------------------------------------
68 Provides access to the Fat directory entry parameters
73 inline TFatDirEntry();
76 inline const TPtrC8 Name() const;
77 inline TInt Attributes() const;
78 inline TTime Time(TTimeIntervalSeconds aOffset) const;
79 inline TInt StartCluster() const;
80 inline TUint32 Size() const;
81 inline TBool IsErased() const;
82 inline TBool IsCurrentDirectory() const;
83 inline TBool IsParentDirectory() const;
84 inline TBool IsEndOfDirectory() const;
85 inline TBool IsGarbage() const;
86 inline void SetName(const TDesC8& aDes);
87 inline void SetAttributes(TInt anAtt);
88 inline void SetTime(TTime aTime, TTimeIntervalSeconds aOffset);
89 inline void SetCreateTime(TTime aTime, TTimeIntervalSeconds aOffset);
90 inline void SetStartCluster(TInt aStartCluster);
91 inline void SetSize(TUint32 aFilesize);
92 inline void SetErased();
93 inline void SetCurrentDirectory();
94 inline void SetParentDirectory();
95 inline void SetEndOfDirectory();
96 inline TUint RuggedFatEntryId() const;
97 inline void SetRuggedFatEntryId(TUint16 aId);
100 void InitializeAsVFat(TUint8 aCheckSum);
101 void SetVFatEntry(const TDesC& aName,TInt aRemainderLen);
102 void ReadVFatEntry(TDes16& aVBuf) const;
103 inline TBool IsLongNameStart() const;
104 inline TBool IsVFatEntry() const;
105 inline TInt NumFollowing() const;
106 inline TUint8 CheckSum() const;
110 TUint8 iData[KSizeOfFatDirEntry]; ///< The directory entry data
115 #endif //FAT_DIR_ENTRY_H