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 {
|
||||
if f.IsDir() {
|
||||
switch f.fileType {
|
||||
case inode.Dir, inode.EDir:
|
||||
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)
|
||||
}
|
||||
@@ -64,6 +73,23 @@ func (f fileInfo) IsDir() bool {
|
||||
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 {
|
||||
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) {
|
||||
out = fs.FileMode(i.Perm)
|
||||
switch i.Data.(type) {
|
||||
case Directory:
|
||||
switch i.Type {
|
||||
case Dir, EDir:
|
||||
out |= fs.ModeDir
|
||||
case EDirectory:
|
||||
out |= fs.ModeDir
|
||||
case Symlink:
|
||||
case Sym, ESym:
|
||||
out |= fs.ModeSymlink
|
||||
case ESymlink:
|
||||
out |= fs.ModeSymlink
|
||||
case Device:
|
||||
case Char, EChar, Block, EBlock:
|
||||
out |= fs.ModeDevice
|
||||
case EDevice:
|
||||
out |= fs.ModeDevice
|
||||
case IPC:
|
||||
out |= fs.ModeNamedPipe
|
||||
case EIPC:
|
||||
case Fifo, EFifo:
|
||||
out |= fs.ModeNamedPipe
|
||||
case Sock, ESock:
|
||||
out |= fs.ModeSocket
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
@@ -190,5 +190,4 @@ func TestSingleFile(t *testing.T) {
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
t.Fatal("HI")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user