lib9p

Go 9P library.
Log | Files | Refs

commit 3cceefb8a5379b67319a7c61118f335e8028f828
parent ba9d2e2f6b0ab6ae793ed9581b80bdb11ed35f6e
Author: Matsuda Kenji <info@mtkn.jp>
Date:   Sun, 15 Oct 2023 08:16:09 +0900

add open check

Diffstat:
Mfile.go | 10+++++++++-
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 {