From 32933cca79ac4fc425ee0f771324baef1b914133 Mon Sep 17 00:00:00 2001 From: simonzhangsz Date: Fri, 6 Sep 2024 15:28:44 +0800 Subject: [PATCH] fix: file not contain owner and group --- lib/file/file_linux.go | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/lib/file/file_linux.go b/lib/file/file_linux.go index 9e459ef5..b38053b2 100644 --- a/lib/file/file_linux.go +++ b/lib/file/file_linux.go @@ -6,6 +6,7 @@ package file import ( "fmt" "os" + "os/user" "path/filepath" "syscall" ) @@ -42,12 +43,24 @@ func GetFileInfo(dir, suffix string) ([]FileInfo, error) { // check if match suffix if (suffix != "" && filepath.Ext(path) == suffix) || suffix == "" { + stat, ok := info.Sys().(*syscall.Stat_t) + if !ok { + return fmt.Errorf("not a syscall.Stat_t") + } + userInfo, err := user.LookupId(fmt.Sprint(stat.Uid)) + if err != nil { + return err + } + groupInfo, err := user.LookupGroupId(fmt.Sprint(stat.Gid)) + if err != nil { + return err + } fileInfo := FileInfo{ FileType: fileType, FileMode: info.Mode().String(), LinkCount: int64(info.Sys().(*syscall.Stat_t).Nlink), - Owner: fmt.Sprintf("%d", info.Sys().(*syscall.Stat_t).Uid), - Group: fmt.Sprintf("%d", info.Sys().(*syscall.Stat_t).Gid), + Owner: userInfo.Username, + Group: groupInfo.Name, Size: info.Size(), ModifiedTime: info.ModTime().Unix(), FileName: info.Name(),