summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Buland <eichlan@xagasoft.com>2011-02-17 09:50:30 +0000
committerMike Buland <eichlan@xagasoft.com>2011-02-17 09:50:30 +0000
commit5c1dfe87cb4021c905529451e5ff7718c6c94b2f (patch)
tree4be3b3537175fd9fea791aa0329ac5fe06da4a39 /src
parent2aeffdea0647df45c808d8203972ad1c0de9a04f (diff)
downloadlibbu++-5c1dfe87cb4021c905529451e5ff7718c6c94b2f.tar.gz
libbu++-5c1dfe87cb4021c905529451e5ff7718c6c94b2f.tar.bz2
libbu++-5c1dfe87cb4021c905529451e5ff7718c6c94b2f.tar.xz
libbu++-5c1dfe87cb4021c905529451e5ff7718c6c94b2f.zip
Made some great progress on the MyriadFs spec...it's interesting, a few more
decisions to make and we're set.
Diffstat (limited to 'src')
-rw-r--r--src/myriadfs.cpp14
-rw-r--r--src/myriadfs.h31
2 files changed, 37 insertions, 8 deletions
diff --git a/src/myriadfs.cpp b/src/myriadfs.cpp
index 9f68253..c8d23b6 100644
--- a/src/myriadfs.cpp
+++ b/src/myriadfs.cpp
@@ -61,15 +61,15 @@ Bu::MyriadFs::MyriadFs( Bu::Stream &rStore, int iBlockSize ) :
61#endif 61#endif
62 int32_t iTmp32 = 0; 62 int32_t iTmp32 = 0;
63 int16_t iTmp16 = 0; 63 int16_t iTmp16 = 0;
64 ms.write( &iUser, 4 ); 64 ms.write( &iUser, 4 ); // User
65 ms.write( &iGroup, 4 ); 65 ms.write( &iGroup, 4 ); // Group
66 ms.write( &iTmp16, 2 ); 66 ms.write( &iTmp16, 2 ); // Meta? I...don't remember this
67 ms.write( &iTmp16, 2 ); 67 ms.write( &iTmp16, 2 ); // Permissions/types
68 iTmp32 = 3; 68 iTmp32 = 3;
69 ms.write( &iTmp32, 4 ); 69 ms.write( &iTmp32, 4 ); // Stream index
70 iTmp32 = 0; 70 iTmp32 = 0;
71 ms.write( &iTmp32, 4 ); 71 ms.write( &iTmp32, 4 ); // Parent inode
72 ms.write( &iTmp16, 2 ); 72 ms.write( &iTmp16, 2 ); // Name size
73 } 73 }
74 74
75 // Create inode 0's storage stream. 75 // Create inode 0's storage stream.
diff --git a/src/myriadfs.h b/src/myriadfs.h
index edbdaf5..856137c 100644
--- a/src/myriadfs.h
+++ b/src/myriadfs.h
@@ -19,6 +19,8 @@ namespace Bu
19 /** 19 /**
20 * A POSIX compliant, node based filesystem built on top of Myriad. 20 * A POSIX compliant, node based filesystem built on top of Myriad.
21 * 21 *
22 * Think about putting this all in one stream, on block boundaries.
23 *
22 * A header is placed into stream 1. 24 * A header is placed into stream 1.
23 * Header format: 25 * Header format:
24 * int32_t iMagicHeader (A7188B39) 26 * int32_t iMagicHeader (A7188B39)
@@ -39,10 +41,13 @@ namespace Bu
39 * Basic node header format: 41 * Basic node header format:
40 * int32_t iUser 42 * int32_t iUser
41 * int32_t iGroup 43 * int32_t iGroup
42 * int16_t iMeta
43 * int16_t iPerms 44 * int16_t iPerms
45 * int16_t iLinks
44 * int32_t iStreamIndex 46 * int32_t iStreamIndex
45 * int32_t iParentNode 47 * int32_t iParentNode
48 * int64_t iATime
49 * int64_t iMTime
50 * int64_t iCTime
46 * int16_t iNameSize 51 * int16_t iNameSize
47 * char[iNameSize] sName 52 * char[iNameSize] sName
48 */ 53 */
@@ -52,6 +57,30 @@ namespace Bu
52 MyriadFs( Bu::Stream &rStore, int iBlockSize=512 ); 57 MyriadFs( Bu::Stream &rStore, int iBlockSize=512 );
53 virtual ~MyriadFs(); 58 virtual ~MyriadFs();
54 59
60 enum
61 {
62 permOthX = 0000001,
63 permOthW = 0000002,
64 permOthR = 0000004,
65 permGrpX = 0000010,
66 permGrpW = 0000020,
67 permGrpR = 0000040,
68 permUsrX = 0000100,
69 permUsrW = 0000200,
70 permUsrR = 0000400,
71 permSticky = 0001000,
72 permSetGid = 0002000,
73 permSetUid = 0004000,
74 typeFifo = 0010000,
75 typeChrDev = 0020000,
76 typeDir = 0040000,
77 typeBlkDev = 0060000,
78 typeRegFile = 0100000,
79 typeSymLink = 0120000,
80 typeSocket = 0140000,
81 typeMask = 0170000
82 }
83
55 private: 84 private:
56 Bu::Stream &rStore; 85 Bu::Stream &rStore;
57 Bu::Myriad mStore; 86 Bu::Myriad mStore;