commit fc700afc2c9e19c2d1fc76aac3d82487117c0a7d
parent 32c2ffdfa13b6d4a132222be1063e1f023b047c7
Author: Matsuda Kenji <info@mtkn.jp>
Date: Sun, 3 Sep 2023 07:35:02 +0900
change FileInfo from interface to struct
Diffstat:
5 files changed, 8 insertions(+), 37 deletions(-)
diff --git a/diskfs/file.go b/diskfs/file.go
@@ -129,7 +129,7 @@ func (f *File) Muid() string {
}
func (f *File) Stat() (fs.FileInfo, error) {
- return &FileInfo{Stat: lib9p.StatFromFile(f)}, nil
+ return &lib9p.FileInfo{Stat: *lib9p.StatFromFile(f)}, nil
}
func (f *File) Close() error {
@@ -157,7 +157,7 @@ func (f *File) ReadDir(n int) ([]*lib9p.DirEntry, error) {
}
id := idFromInfo(info)
de[i] = &lib9p.DirEntry{
- FileInfo: &FileInfo{fiStat(f.fs.qidPool, id, info)},
+ FileInfo: &lib9p.FileInfo{*fiStat(f.fs.qidPool, id, info)},
}
}
return de, nil
diff --git a/diskfs/stat.go b/diskfs/stat.go
@@ -6,23 +6,10 @@ import (
"os/user"
"strconv"
"syscall"
- "time"
"lib9p"
)
-type FileInfo struct {
- Stat *lib9p.Stat
-}
-
-func (fi *FileInfo) Name() string { return fi.Stat.Name }
-func (fi *FileInfo) Size() int64 { return fi.Stat.Length }
-func (fi *FileInfo) Mode() fs.FileMode { return lib9p.Mode9ToFSMode(fi.Stat.Mode) }
-func (fi *FileInfo) ModTime() time.Time { return time.Unix(int64(fi.Stat.Mtime), 0) }
-func (fi *FileInfo) IsDir() bool { return fi.Stat.Mode&lib9p.DMDIR != 0 }
-func (fi *FileInfo) Sys() any { return fi.Stat }
-func (fi *FileInfo) Qid() lib9p.Qid { return fi.Sys().(*lib9p.Stat).Qid }
-
func fiStat(pool *QidPool, id fileID, info fs.FileInfo) *lib9p.Stat {
qid, ok := pool.lookupID(id)
if !ok {
diff --git a/iofs/file.go b/iofs/file.go
@@ -102,7 +102,7 @@ func (f *File) Muid() string {
}
func (f *File) Stat() (fs.FileInfo, error) {
- return &FileInfo{Stat: lib9p.StatFromFile(f)}, nil
+ return &lib9p.FileInfo{Stat: *lib9p.StatFromFile(f)}, nil
}
func (f *File) Close() error {
@@ -145,7 +145,7 @@ func (f *File) ReadDir(n int) ([]*lib9p.DirEntry, error) {
fpath := path.Join(f.path, info.Name())
de[i] = &lib9p.DirEntry{
- FileInfo: &FileInfo{fiStat(f.fs.qidPool, fileID(fpath), info)},
+ FileInfo: &lib9p.FileInfo{*fiStat(f.fs.qidPool, fileID(fpath), info)},
}
}
return de, nil
diff --git a/iofs/stat.go b/iofs/stat.go
@@ -2,23 +2,10 @@ package iofs
import (
"io/fs"
- "time"
"lib9p"
)
-type FileInfo struct {
- Stat *lib9p.Stat
-}
-
-func (fi *FileInfo) Name() string { return fi.Stat.Name }
-func (fi *FileInfo) Size() int64 { return fi.Stat.Length }
-func (fi *FileInfo) Mode() fs.FileMode { return lib9p.Mode9ToFSMode(fi.Stat.Mode) }
-func (fi *FileInfo) ModTime() time.Time { return time.Unix(int64(fi.Stat.Mtime), 0) }
-func (fi *FileInfo) IsDir() bool { return fi.Stat.Mode&lib9p.DMDIR != 0 }
-func (fi *FileInfo) Sys() any { return fi.Stat }
-func (fi *FileInfo) Qid() lib9p.Qid { return fi.Sys().(*lib9p.Stat).Qid }
-
func fiType(fi fs.FileInfo) uint16 { return 0 }
func fiDev(fi fs.FileInfo) uint32 { return 0 }
func fiLength(fi fs.FileInfo) int64 { return fi.Size() }
diff --git a/stat.go b/stat.go
@@ -3,6 +3,7 @@ package lib9p
import (
"fmt"
"io/fs"
+ "time"
)
type FileMode uint32
@@ -121,12 +122,9 @@ func (s *Stat) String() string {
s.Atime, s.Mtime, s.Length, s.Type, s.Dev)
}
-// Sys must return Stat struct.
-type FileInfo = fs.FileInfo
-/*
type FileInfo struct {
- Stat *Stat
+ Stat Stat
}
func (fi *FileInfo) Name() string { return fi.Stat.Name }
@@ -134,6 +132,5 @@ func (fi *FileInfo) Size() int64 { return fi.Stat.Length }
func (fi *FileInfo) Mode() fs.FileMode { return Mode9ToFSMode(fi.Stat.Mode) }
func (fi *FileInfo) ModTime() time.Time { return time.Unix(int64(fi.Stat.Mtime), 0) }
func (fi *FileInfo) IsDir() bool { return fi.Stat.Mode&DMDIR != 0 }
-func (fi *FileInfo) Sys() any { return fi.Stat }
-func (fi *FileInfo) Qid() *Qid { return fi.Sys().(*Stat).Qid }
-*/
+func (fi *FileInfo) Sys() any { return &fi.Stat }
+func (fi *FileInfo) Qid() Qid { return fi.Stat.Qid }