commit 3cceefb8a5379b67319a7c61118f335e8028f828
parent ba9d2e2f6b0ab6ae793ed9581b80bdb11ed35f6e
Author: Matsuda Kenji <info@mtkn.jp>
Date: Sun, 15 Oct 2023 08:16:09 +0900
add open check
Diffstat:
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/file.go b/file.go
@@ -106,6 +106,7 @@ func (cf *ClientFile) Child() ([]File, error) {
if err := cf.Open(OREAD); err != nil {
return nil, fmt.Errorf("open: %v", err)
}
+ defer cf.Close()
}
if cf.qid.Type&QTDIR == 0 {
return nil, fmt.Errorf("not a directory")
@@ -143,8 +144,8 @@ func (cf *ClientFile) Stat() (*FileInfo, error) {
if err := cf.Open(OREAD); err != nil {
return nil, fmt.Errorf("open: %v", err)
}
+ defer cf.Close()
}
- defer cf.Close()
st, err := cf.client.Stat(context.TODO(), cf.fid.fid)
if err != nil {
return nil, err
@@ -153,6 +154,10 @@ func (cf *ClientFile) Stat() (*FileInfo, error) {
}
func (cf *ClientFile) Qid() Qid {
+ if cf.fid == nil {
+ cf.Open(OREAD)
+ defer cf.Close()
+ }
return cf.qid
}
@@ -186,6 +191,9 @@ func (cf *ClientFile) Close() error {
}
func (cf *ClientFile) Read(b []byte) (int, error) {
+ if cf.fid == nil {
+ return 0, fmt.Errorf("not open")
+ }
count := uint32(len(b))
cur := 0
for count > 0 {