From 619bb023b1af39c877e5cf5c69bb66a1156ca709 Mon Sep 17 00:00:00 2001 From: Caleb Gardner Date: Wed, 12 Mar 2025 00:03:58 -0500 Subject: [PATCH] Fix missing fileInfo.Mode() types --- file_info.go | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/file_info.go b/file_info.go index c6e7b8d..74ecdbc 100644 --- a/file_info.go +++ b/file_info.go @@ -50,11 +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)) - } - if f.IsSymlink() { + 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) } @@ -71,6 +77,19 @@ 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 }