summaryrefslogtreecommitdiff
path: root/src/myriadfs.h
diff options
context:
space:
mode:
authorMike Buland <eichlan@xagasoft.com>2011-02-18 17:41:24 +0000
committerMike Buland <eichlan@xagasoft.com>2011-02-18 17:41:24 +0000
commit26bb069c535e3fd5b0e0fb28fb54a2a540b60a84 (patch)
tree9eab7637e5fa1d881c775a6f0611b74e385196f1 /src/myriadfs.h
parent80c8dd155a164c186fd11e3e3f66e8f3cfdf19fe (diff)
downloadlibbu++-26bb069c535e3fd5b0e0fb28fb54a2a540b60a84.tar.gz
libbu++-26bb069c535e3fd5b0e0fb28fb54a2a540b60a84.tar.bz2
libbu++-26bb069c535e3fd5b0e0fb28fb54a2a540b60a84.tar.xz
libbu++-26bb069c535e3fd5b0e0fb28fb54a2a540b60a84.zip
Some Uuid tweaks, not much, just figuring out the format. MyriadFs is coming
along quite nicely. It looks like it works great for normal programs, but there need to be some tweaks made to a few things before it's working 100% via fuse. Also, the fuse module won't let you specify a file, a little odd.
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