summaryrefslogtreecommitdiff
path: root/src/myriadfs.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/myriadfs.h')
-rw-r--r--src/myriadfs.h32
1 files changed, 22 insertions, 10 deletions
diff --git a/src/myriadfs.h b/src/myriadfs.h
index 808444b..3eecca5 100644
--- a/src/myriadfs.h
+++ b/src/myriadfs.h
@@ -8,6 +8,8 @@
8#ifndef MYRIAD_FS_H 8#ifndef MYRIAD_FS_H
9#define MYRIAD_FS_H 9#define MYRIAD_FS_H
10 10
11#include <sys/types.h>
12
11#include "bu/myriad.h" 13#include "bu/myriad.h"
12 14
13namespace Bu 15namespace Bu
@@ -38,9 +40,9 @@ namespace Bu
38 * Basic node header format: 40 * Basic node header format:
39 * int32_t iUser 41 * int32_t iUser
40 * int32_t iGroup 42 * int32_t iGroup
41 * int16_t iPerms 43 * uint16_t uPerms
42 * int16_t iLinks 44 * int16_t iLinks
43 * int32_t iStreamIndex 45 * uint32_t uStreamIndex
44 * int32_t iParentNode 46 * int32_t iParentNode
45 * int64_t iATime 47 * int64_t iATime
46 * int64_t iMTime 48 * int64_t iMTime
@@ -51,14 +53,14 @@ namespace Bu
51 * Some types get special formats for their assosiated data stream, or 53 * Some types get special formats for their assosiated data stream, or
52 * other special considerations, here's a list: 54 * other special considerations, here's a list:
53 * 55 *
54 * - typeFifo: No stream, iStreamIndex unused (probably) 56 * - typeFifo: No stream, uStreamIndex unused (probably)
55 * - typeChrDev: No stream, iStreamIndex is device hi/lo 57 * - typeChrDev: No stream, uStreamIndex is device hi/lo
56 * - typeDir: The stream contains a directory contents listing, described 58 * - typeDir: The stream contains a directory contents listing, described
57 * below 59 * below
58 * - typeBlkDev: No stream, iStreamIndex is device hi/lo 60 * - typeBlkDev: No stream, uStreamIndex is device hi/lo
59 * - typeRegFile: The stream is the file data 61 * - typeRegFile: The stream is the file data
60 * - typeSymLink: The stream is the destination of the symlink 62 * - typeSymLink: The stream is the destination of the symlink
61 * - typeSocket: No steram, iStreamIndex unused (probably) 63 * - typeSocket: No steram, uStreamIndex unused (probably)
62 * 64 *
63 * Directory streams have this simple listing format. They contain a list 65 * Directory streams have this simple listing format. They contain a list
64 * of all child elements, with no particular order at the moment. The . and 66 * of all child elements, with no particular order at the moment. The . and
@@ -89,6 +91,7 @@ namespace Bu
89 permSticky = 0001000, 91 permSticky = 0001000,
90 permSetGid = 0002000, 92 permSetGid = 0002000,
91 permSetUid = 0004000, 93 permSetUid = 0004000,
94 permMask = 0007777,
92 typeFifo = 0010000, 95 typeFifo = 0010000,
93 typeChrDev = 0020000, 96 typeChrDev = 0020000,
94 typeDir = 0040000, 97 typeDir = 0040000,
@@ -127,14 +130,23 @@ namespace Bu
127 int64_t iMTime; 130 int64_t iMTime;
128 int64_t iCTime; 131 int64_t iCTime;
129 int32_t iSize; 132 int32_t iSize;
133 uint32_t uDev;
130 Bu::String sName; 134 Bu::String sName;
131 }; 135 };
132 typedef Bu::List<Stat> Dir; 136 typedef Bu::List<Stat> Dir;
133 137
134 void stat( const Bu::String &sPath, Stat &rBuf ); 138 void stat( const Bu::String &sPath, Stat &rBuf );
135 MyriadStream open( const Bu::String &sPath, int iMode ); 139 MyriadStream open( const Bu::String &sPath, int iMode );
136// void create( const Bu::String &sPath, uint16_t iPerms ); 140 void create( const Bu::String &sPath, uint16_t iPerms );
141 void create( const Bu::String &sPath, uint16_t iPerms,
142 uint16_t iDevHi, uint16_t iDevLo );
143 void create( const Bu::String &sPath, uint16_t iPerms,
144 uint32_t uSpecial );
145 void mkDir( const Bu::String &sPath, uint16_t iPerms );
146 Dir readDir( const Bu::String &sPath );
137 147
148 static dev_t devToSys( uint32_t uDev );
149 static uint32_t sysToDev( dev_t uDev );
138 150
139 private: 151 private:
140 class RawStat 152 class RawStat
@@ -144,7 +156,7 @@ namespace Bu
144 int32_t iGroup; 156 int32_t iGroup;
145 uint16_t uPerms; 157 uint16_t uPerms;
146 int16_t iLinks; 158 int16_t iLinks;
147 int32_t iStreamIndex; 159 uint32_t uStreamIndex;
148 int32_t iParentNode; 160 int32_t iParentNode;
149 int64_t iATime; 161 int64_t iATime;
150 int64_t iMTime; 162 int64_t iMTime;
@@ -160,9 +172,9 @@ namespace Bu
160 Dir readDir( int32_t iNode ); 172 Dir readDir( int32_t iNode );
161 MyriadStream openByInode( int32_t iNode ); 173 MyriadStream openByInode( int32_t iNode );
162 int32_t create( int32_t iParent, const Bu::String &sName, 174 int32_t create( int32_t iParent, const Bu::String &sName,
163 uint16_t uPerms ); 175 uint16_t uPerms, uint32_t uSpecial );
164 int32_t allocInode( const Bu::String &sName, int32_t iParent, 176 int32_t allocInode( const Bu::String &sName, int32_t iParent,
165 uint16_t uPerms ); 177 uint16_t uPerms, uint32_t uSpecial );
166 void stat( int32_t iNode, Stat &rBuf, MyriadStream &rIs ); 178 void stat( int32_t iNode, Stat &rBuf, MyriadStream &rIs );
167 void writeHeader(); 179 void writeHeader();
168 180