Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 3a48a0bcdc | |||
| f11416493e | |||
| 619bb023b1 | |||
| 38e4761d21 | |||
| 06d2ef3056 |
+27
-1
@@ -50,8 +50,17 @@ func (f fileInfo) Size() int64 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (f fileInfo) Mode() fs.FileMode {
|
func (f fileInfo) Mode() fs.FileMode {
|
||||||
if f.IsDir() {
|
switch f.fileType {
|
||||||
|
case inode.Dir, inode.EDir:
|
||||||
return fs.FileMode(f.perm | uint32(fs.ModeDir))
|
return fs.FileMode(f.perm | uint32(fs.ModeDir))
|
||||||
|
case inode.Sym, inode.ESym:
|
||||||
|
return fs.FileMode(f.perm | uint32(fs.ModeSymlink))
|
||||||
|
case inode.Char, inode.EChar, inode.Block, inode.EBlock:
|
||||||
|
return fs.FileMode(f.perm | uint32(fs.ModeDevice))
|
||||||
|
case inode.Fifo, inode.EFifo:
|
||||||
|
return fs.FileMode(f.perm | uint32(fs.ModeNamedPipe))
|
||||||
|
case inode.Sock, inode.ESock:
|
||||||
|
return fs.FileMode(f.perm | uint32(fs.ModeSocket))
|
||||||
}
|
}
|
||||||
return fs.FileMode(f.perm)
|
return fs.FileMode(f.perm)
|
||||||
}
|
}
|
||||||
@@ -64,6 +73,23 @@ func (f fileInfo) IsDir() bool {
|
|||||||
return f.fileType == inode.Dir || f.fileType == inode.EDir
|
return f.fileType == inode.Dir || f.fileType == inode.EDir
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (f fileInfo) IsSymlink() bool {
|
||||||
|
return f.fileType == inode.Sym || f.fileType == inode.ESym
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f fileInfo) IsDevice() bool {
|
||||||
|
return f.fileType == inode.Block || f.fileType == inode.EBlock ||
|
||||||
|
f.fileType == inode.Char || f.fileType == inode.EChar
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f fileInfo) IsFifo() bool {
|
||||||
|
return f.fileType == inode.Fifo || f.fileType == inode.EFifo
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f fileInfo) IsSocket() bool {
|
||||||
|
return f.fileType == inode.Sock || f.fileType == inode.ESock
|
||||||
|
}
|
||||||
|
|
||||||
func (f fileInfo) Sys() any {
|
func (f fileInfo) Sys() any {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
+7
-13
@@ -81,23 +81,17 @@ func Read(r io.Reader, blockSize uint32) (i Inode, err error) {
|
|||||||
|
|
||||||
func (i Inode) Mode() (out fs.FileMode) {
|
func (i Inode) Mode() (out fs.FileMode) {
|
||||||
out = fs.FileMode(i.Perm)
|
out = fs.FileMode(i.Perm)
|
||||||
switch i.Data.(type) {
|
switch i.Type {
|
||||||
case Directory:
|
case Dir, EDir:
|
||||||
out |= fs.ModeDir
|
out |= fs.ModeDir
|
||||||
case EDirectory:
|
case Sym, ESym:
|
||||||
out |= fs.ModeDir
|
|
||||||
case Symlink:
|
|
||||||
out |= fs.ModeSymlink
|
out |= fs.ModeSymlink
|
||||||
case ESymlink:
|
case Char, EChar, Block, EBlock:
|
||||||
out |= fs.ModeSymlink
|
|
||||||
case Device:
|
|
||||||
out |= fs.ModeDevice
|
out |= fs.ModeDevice
|
||||||
case EDevice:
|
case Fifo, EFifo:
|
||||||
out |= fs.ModeDevice
|
|
||||||
case IPC:
|
|
||||||
out |= fs.ModeNamedPipe
|
|
||||||
case EIPC:
|
|
||||||
out |= fs.ModeNamedPipe
|
out |= fs.ModeNamedPipe
|
||||||
|
case Sock, ESock:
|
||||||
|
out |= fs.ModeSocket
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -190,5 +190,4 @@ func TestSingleFile(t *testing.T) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
t.Fatal("HI")
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user