diff options
Diffstat (limited to 'src/tools')
-rw-r--r-- | src/tools/myriadfs.cpp | 62 |
1 files changed, 57 insertions, 5 deletions
diff --git a/src/tools/myriadfs.cpp b/src/tools/myriadfs.cpp index c4004b7..8db59d7 100644 --- a/src/tools/myriadfs.cpp +++ b/src/tools/myriadfs.cpp | |||
@@ -29,7 +29,6 @@ extern "C" { | |||
29 | { | 29 | { |
30 | try | 30 | try |
31 | { | 31 | { |
32 | printf("myriadfs_getattr: Statting file: %s\n", sPath ); | ||
33 | Bu::MyriadFs::Stat st; | 32 | Bu::MyriadFs::Stat st; |
34 | pFs->stat( sPath, st ); | 33 | pFs->stat( sPath, st ); |
35 | stbuf->st_ino = st.iNode; | 34 | stbuf->st_ino = st.iNode; |
@@ -78,7 +77,8 @@ extern "C" { | |||
78 | Bu::MyriadStream ms = pFs->open( sPath, 0 ); | 77 | Bu::MyriadStream ms = pFs->open( sPath, 0 ); |
79 | fi->fh = iNextFileId; | 78 | fi->fh = iNextFileId; |
80 | hOpenFiles.insert( iNextFileId++, ms ); | 79 | hOpenFiles.insert( iNextFileId++, ms ); |
81 | printf("File opened, %d files open now.\n", hOpenFiles.getSize() ); | 80 | printf("File '%s' opened, %d files open now.\n", |
81 | sPath, hOpenFiles.getSize() ); | ||
82 | return 0; | 82 | return 0; |
83 | } | 83 | } |
84 | catch(...) | 84 | catch(...) |
@@ -108,10 +108,11 @@ extern "C" { | |||
108 | { | 108 | { |
109 | try | 109 | try |
110 | { | 110 | { |
111 | Bu::MyriadStream ms = pFs->open( sPath, 0 ); | 111 | Bu::MyriadStream ms = pFs->open( sPath, 0, uPerms ); |
112 | fi->fh = iNextFileId; | 112 | fi->fh = iNextFileId; |
113 | hOpenFiles.insert( iNextFileId++, ms ); | 113 | hOpenFiles.insert( iNextFileId++, ms ); |
114 | printf("File created, %d files open now.\n", hOpenFiles.getSize() ); | 114 | printf("File '%s' created, %d files open now.\n", |
115 | sPath, hOpenFiles.getSize() ); | ||
115 | return 0; | 116 | return 0; |
116 | } | 117 | } |
117 | catch(...) | 118 | catch(...) |
@@ -136,7 +137,8 @@ extern "C" { | |||
136 | static int myriadfs_release( const char *sPath, struct fuse_file_info *fi ) | 137 | static int myriadfs_release( const char *sPath, struct fuse_file_info *fi ) |
137 | { | 138 | { |
138 | hOpenFiles.erase( fi->fh ); | 139 | hOpenFiles.erase( fi->fh ); |
139 | printf("File released, %d files open now.\n", hOpenFiles.getSize() ); | 140 | printf("File '%s' released, %d files open now.\n", |
141 | sPath, hOpenFiles.getSize() ); | ||
140 | 142 | ||
141 | return 0; | 143 | return 0; |
142 | } | 144 | } |
@@ -155,6 +157,52 @@ extern "C" { | |||
155 | return 0; | 157 | return 0; |
156 | } | 158 | } |
157 | 159 | ||
160 | static int myriadfs_unlink( const char *sPath ) | ||
161 | { | ||
162 | try | ||
163 | { | ||
164 | pFs->unlink( sPath ); | ||
165 | } | ||
166 | catch( Bu::MyriadFsException &e ) | ||
167 | { | ||
168 | printf("MyriadFsException: %s\n", e.what() ); | ||
169 | return -EACCES; | ||
170 | } | ||
171 | return 0; | ||
172 | } | ||
173 | |||
174 | static int myriadfs_symlink( const char *sTarget, const char *sPath ) | ||
175 | { | ||
176 | try | ||
177 | { | ||
178 | printf("Path = '%s', Target = '%s'\n", sPath, sTarget ); | ||
179 | pFs->mkSymLink( sPath, sTarget ); | ||
180 | } | ||
181 | catch( Bu::MyriadFsException &e ) | ||
182 | { | ||
183 | printf("MyriadFsException: %s\n", e.what() ); | ||
184 | return -EACCES; | ||
185 | } | ||
186 | return 0; | ||
187 | } | ||
188 | |||
189 | static int myriadfs_readlink( const char *sPath, char *sOut, size_t s ) | ||
190 | { | ||
191 | try | ||
192 | { | ||
193 | Bu::String sTrg = pFs->readSymLink( sPath ); | ||
194 | size_t iLen = (s-1>sTrg.getSize())?(sTrg.getSize()):(s-1); | ||
195 | memcpy( sOut, sTrg.getStr(), iLen ); | ||
196 | sOut[iLen] = '\0'; | ||
197 | } | ||
198 | catch( Bu::MyriadFsException &e ) | ||
199 | { | ||
200 | printf("MyriadFsException: %s\n", e.what() ); | ||
201 | return -EACCES; | ||
202 | } | ||
203 | return 0; | ||
204 | } | ||
205 | |||
158 | static struct fuse_operations myriadfs_oper; | 206 | static struct fuse_operations myriadfs_oper; |
159 | 207 | ||
160 | int main( int argc, char *argv[] ) | 208 | int main( int argc, char *argv[] ) |
@@ -172,6 +220,10 @@ extern "C" { | |||
172 | myriadfs_oper.mknod = myriadfs_mknod; | 220 | myriadfs_oper.mknod = myriadfs_mknod; |
173 | myriadfs_oper.release = myriadfs_release; | 221 | myriadfs_oper.release = myriadfs_release; |
174 | myriadfs_oper.utimens = myriadfs_utimens; | 222 | myriadfs_oper.utimens = myriadfs_utimens; |
223 | myriadfs_oper.unlink = myriadfs_unlink; | ||
224 | myriadfs_oper.rmdir = myriadfs_unlink; | ||
225 | myriadfs_oper.symlink = myriadfs_symlink; | ||
226 | myriadfs_oper.readlink = myriadfs_readlink; | ||
175 | printf("Starting fuse_main.\n"); | 227 | printf("Starting fuse_main.\n"); |
176 | int iRet = fuse_main( argc, argv, &myriadfs_oper, NULL ); | 228 | int iRet = fuse_main( argc, argv, &myriadfs_oper, NULL ); |
177 | printf("Done with fuse_main.\n"); | 229 | printf("Done with fuse_main.\n"); |