Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
J
jacobsa-fuse
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
jacobsa-fuse
Commits
fc1e4aab
Commit
fc1e4aab
authored
May 18, 2015
by
Aaron Jacobs
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
flushFS.ReadDir
parent
2f2c40a3
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
63 additions
and
0 deletions
+63
-0
samples/flushfs/flush_fs.go
samples/flushfs/flush_fs.go
+63
-0
No files found.
samples/flushfs/flush_fs.go
View file @
fc1e4aab
...
...
@@ -270,3 +270,66 @@ func (fs *flushFS) OpenDir(
return
}
func
(
fs
*
flushFS
)
ReadDir
(
op
*
fuseops
.
ReadDirOp
)
{
var
err
error
defer
fuseutil
.
RespondToOp
(
op
,
&
err
)
fs
.
mu
.
Lock
()
defer
fs
.
mu
.
Unlock
()
// Create the appropriate listing.
var
dirents
[]
fuseutil
.
Dirent
switch
op
.
Inode
{
case
fuseops
.
RootInodeID
:
dirents
=
[]
fuseutil
.
Dirent
{
fuseutil
.
Dirent
{
Offset
:
1
,
Inode
:
fooID
,
Name
:
"foo"
,
Type
:
fuseutil
.
DT_File
,
},
fuseutil
.
Dirent
{
Offset
:
2
,
Inode
:
barID
,
Name
:
"bar"
,
Type
:
fuseutil
.
DT_Directory
,
},
}
case
barID
:
default
:
err
=
fmt
.
Errorf
(
"Unexpected inode: %v"
,
op
.
Inode
)
return
}
// If the offset is for the end of the listing, we're done. Otherwise we
// expect it to be for the start.
switch
op
.
Offset
{
case
fuseops
.
DirOffset
(
len
(
dirents
))
:
return
case
0
:
default
:
err
=
fmt
.
Errorf
(
"Unexpected offset: %v"
,
op
.
Offset
)
return
}
// Fill in the listing.
for
_
,
de
:=
range
dirents
{
op
.
Data
=
fuseutil
.
AppendDirent
(
op
.
Data
,
de
)
}
// We don't support doing this in anything more than one shot.
if
len
(
op
.
Data
)
>
op
.
Size
{
err
=
fmt
.
Errorf
(
"Couldn't fit listing in %v bytes"
,
op
.
Size
)
return
}
return
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment