1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/os/kernelhwsrv/userlibandfileserver/fileserver/sfat32/fat_dir_entry.h Fri Jun 15 03:10:57 2012 +0200
1.3 @@ -0,0 +1,129 @@
1.4 +// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
1.5 +// All rights reserved.
1.6 +// This component and the accompanying materials are made available
1.7 +// under the terms of the License "Eclipse Public License v1.0"
1.8 +// which accompanies this distribution, and is available
1.9 +// at the URL "http://www.eclipse.org/legal/epl-v10.html".
1.10 +//
1.11 +// Initial Contributors:
1.12 +// Nokia Corporation - initial contribution.
1.13 +//
1.14 +// Contributors:
1.15 +//
1.16 +// Description:
1.17 +// f32\sfat\inc\fat_dir_entry.h
1.18 +// FAT directory entry related stuff definitions.
1.19 +//
1.20 +//
1.21 +
1.22 +/**
1.23 + @file
1.24 + @internalTechnology
1.25 +*/
1.26 +
1.27 +#if !defined(FAT_DIR_ENTRY_H)
1.28 +#define FAT_DIR_ENTRY_H
1.29 +
1.30 +
1.31 +//-------------------------------------------------------------------------------------------------------------------
1.32 +
1.33 +
1.34 +const TInt KFatDirNameSize = 11; ///< Dos directory/File name length
1.35 +const TInt KVFatEntryAttribute = 0x0F; ///< VFat entry attribute setting
1.36 +const TUint8 KDotEntryByte = 0x2e; ///< Dot value for self and parent pointer directory entries
1.37 +const TUint8 KBlankSpace = 0x20; ///< Blank space in a directory entry
1.38 +const TInt KSizeOfFatDirEntryLog2 = 5; ///< Log2 of size in bytes of a Fat directry entry
1.39 +const TUint KSizeOfFatDirEntry = 1 << KSizeOfFatDirEntryLog2; ///< Size in bytes of a Fat directry entry
1.40 +
1.41 +const TUint16 KReservedIdOldEntry = 1; ///< Rugged FAT "OldEntry" id
1.42 +const TUint16 KReservedIdNewEntry = 0; ///< Rugged FAT "ReservedIdNewEntry" id
1.43 +
1.44 +
1.45 +typedef TBuf8<KFatDirNameSize> TShortName; ///< Buffer type fot short names in dos entries
1.46 +
1.47 +//-------------------------------------------------------------------------------------------------------------------
1.48 +
1.49 +/**
1.50 + Fat DOS directory entry structure
1.51 +*/
1.52 +struct SFatDirEntry
1.53 + {
1.54 + TUint8 iName[KFatDirNameSize]; ///< :0 File/Directory name
1.55 + TUint8 iAttributes; ///< :11 File/Directory attributes
1.56 + TUint8 iReserved1[2]; ///< :12 2 reserved bytes(in our implementation), some versions of Windows may use them
1.57 + TUint16 iTimeC; ///< :14 Creation time
1.58 + TUint16 iDateC; ///< :16 Creation date
1.59 + 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
1.60 + TUint16 iStartClusterHi; ///< :20 High 16 bits of the File/Directory cluster number (Fat32 only)
1.61 + TUint16 iTime; ///< :22 last write access time
1.62 + TUint16 iDate; ///< :24 last write access date
1.63 + TUint16 iStartClusterLo; ///< :26 Low 16 bits of the File/Directory cluster number
1.64 + TUint32 iSize; ///< :28 File/Directory size in bytes
1.65 + };
1.66 +
1.67 +
1.68 +//-------------------------------------------------------------------------------------------------------------------
1.69 +
1.70 +/**
1.71 +Provides access to the Fat directory entry parameters
1.72 +*/
1.73 +class TFatDirEntry
1.74 + {
1.75 +public:
1.76 + inline TFatDirEntry();
1.77 + inline void InitZ();
1.78 +
1.79 + inline const TPtrC8 Name() const;
1.80 + inline TInt Attributes() const;
1.81 + inline TTime Time(TTimeIntervalSeconds aOffset) const;
1.82 + inline TInt StartCluster() const;
1.83 + inline TUint32 Size() const;
1.84 + inline TBool IsErased() const;
1.85 + inline TBool IsCurrentDirectory() const;
1.86 + inline TBool IsParentDirectory() const;
1.87 + inline TBool IsEndOfDirectory() const;
1.88 + inline TBool IsGarbage() const;
1.89 + inline void SetName(const TDesC8& aDes);
1.90 + inline void SetAttributes(TInt anAtt);
1.91 + inline void SetTime(TTime aTime, TTimeIntervalSeconds aOffset);
1.92 + inline void SetCreateTime(TTime aTime, TTimeIntervalSeconds aOffset);
1.93 + inline void SetStartCluster(TInt aStartCluster);
1.94 + inline void SetSize(TUint32 aFilesize);
1.95 + inline void SetErased();
1.96 + inline void SetCurrentDirectory();
1.97 + inline void SetParentDirectory();
1.98 + inline void SetEndOfDirectory();
1.99 + inline TUint RuggedFatEntryId() const;
1.100 + inline void SetRuggedFatEntryId(TUint16 aId);
1.101 +
1.102 +public:
1.103 + void InitializeAsVFat(TUint8 aCheckSum);
1.104 + void SetVFatEntry(const TDesC& aName,TInt aRemainderLen);
1.105 + void ReadVFatEntry(TDes16& aVBuf) const;
1.106 + inline TBool IsLongNameStart() const;
1.107 + inline TBool IsVFatEntry() const;
1.108 + inline TInt NumFollowing() const;
1.109 + inline TUint8 CheckSum() const;
1.110 +
1.111 +
1.112 +public:
1.113 + TUint8 iData[KSizeOfFatDirEntry]; ///< The directory entry data
1.114 + };
1.115 +
1.116 +
1.117 +
1.118 +#endif //FAT_DIR_ENTRY_H
1.119 +
1.120 +
1.121 +
1.122 +
1.123 +
1.124 +
1.125 +
1.126 +
1.127 +
1.128 +
1.129 +
1.130 +
1.131 +
1.132 +