Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion cmd/p9/export.go
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,12 @@ func (cmd *exportCmd) Run(options GlobalOptions, args []string) error {
if err != nil {
return util.Errorf("listen: %w", err)
}
defer lis.Close()
defer func() {
err := lis.Close()
if err != nil {
_, _ = fmt.Fprintf(fset.Output(), "Error closing listener: %v", err)
}
}()

errC := make(chan error, 1)
go func() {
Expand Down
11 changes: 9 additions & 2 deletions cmd/p9/ls.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,12 @@ func (cmd *lsCmd) Run(options GlobalOptions, args []string) error {
if err != nil {
return util.Errorf("open %q: %w", arg, err)
}
defer d.Close()
defer func(d *p9.Remote) {
err := d.Close()
if err != nil {
_, _ = fmt.Fprintf(fset.Output(), "Error closing remote %q: %v\n", arg, err)
}
}(d)

fi, err := d.Stat("")
if err != nil {
Expand Down Expand Up @@ -96,7 +101,9 @@ func (cmd *lsCmd) printEntries(entries []p9.DirEntry) {
' ',
0,
)
defer w.Flush()
defer func() {
_ = w.Flush()
}()

for _, entry := range entries {
if cmd.showDetails {
Expand Down
20 changes: 17 additions & 3 deletions cmd/p9/p9.go
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,12 @@ func attach(options GlobalOptions, f func(*p9.Remote) error) error {
if err != nil {
return err
}
defer c.Close()
defer func() {
err := c.Close()
if err != nil {
_, _ = fmt.Fprintf(os.Stderr, "Error closing connection: %v", err)
}
}()

_, err = c.Handshake(uint32(options.MSize))
if err != nil {
Expand All @@ -117,7 +122,12 @@ func attach(options GlobalOptions, f func(*p9.Remote) error) error {
if err != nil {
return util.Errorf("attach %q: %w", options.AName, err)
}
defer a.Close()
defer func() {
err := a.Close()
if err != nil {
_, _ = fmt.Fprintf(os.Stderr, "Error closing remote: %v\n", err)
}
}()

return f(a)
}
Expand Down Expand Up @@ -160,7 +170,11 @@ func main() {
flag.Parse()

if p9.IsNamespaceAddr(options.Address) {
os.MkdirAll(p9.NamespaceDir(), 0700)
err := os.MkdirAll(p9.NamespaceDir(), 0700)
if err != nil {
_, _ = fmt.Fprintf(os.Stderr, "Error creating namespace directory: %v\n", err)
return
}
}

options.Network, options.Address = p9.ParseAddr(options.Address)
Expand Down
21 changes: 18 additions & 3 deletions cmd/p9/read.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,12 @@ func (cmd *readCmd) Run(options GlobalOptions, args []string) error {
}

writeFile := func(arg string, f *p9.Remote) error {
defer f.Close()
defer func() {
err := f.Close()
if err != nil {
_, _ = fmt.Fprintf(fset.Output(), "Error closing remote: %v", err)
}
}()

_, err = io.Copy(os.Stdout, f)
if err != nil {
Expand All @@ -60,10 +65,20 @@ func (cmd *readCmd) Run(options GlobalOptions, args []string) error {

if cmd.tar {
out := tar.NewWriter(os.Stdout)
defer out.Close()
defer func() {
err := out.Close()
if err != nil {
_, _ = fmt.Fprintf(fset.Output(), "Error closing tar writer: %v", err)
}
}()

writeFile = func(arg string, f *p9.Remote) error {
defer f.Close()
defer func() {
err := f.Close()
if err != nil {
_, _ = fmt.Fprintf(fset.Output(), "Error closing remote: %v", err)
}
}()

fi, err := f.Stat("")
if err != nil {
Expand Down
4 changes: 3 additions & 1 deletion cmd/p9/stat.go
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,9 @@ func (cmd *statCmd) printText(fi p9.DirEntry) {
' ',
0,
)
defer w.Flush()
defer func() {
_ = w.Flush()
}()

const timeFormat = "03:04 PM, January 2, 2006"

Expand Down
7 changes: 6 additions & 1 deletion cmd/p9/write.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,12 @@ func (cmd *writeCmd) Run(options GlobalOptions, args []string) error {
if err != nil {
return util.Errorf("open %q: %v", args[0], err)
}
defer f.Close()
defer func() {
err := f.Close()
if err != nil {
_, _ = fmt.Fprintf(fset.Output(), "Error closing remote %q: %v\n", args[0], err)
}
}()

if *app {
_, err := f.Seek(0, io.SeekEnd)
Expand Down
29 changes: 25 additions & 4 deletions cmd/p9w/p9w.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (
"io"
"log"
"net/http"
"os"
"path/filepath"
"strings"

Expand Down Expand Up @@ -57,7 +58,12 @@ func AttachHandler(h http.Handler) http.Handler {
Error(rw, err, http.StatusBadRequest)
return
}
defer c.Close()
defer func() {
err := c.Close()
if err != nil {
_, _ = fmt.Fprintf(os.Stderr, "Error closing connection: %v", err)
}
}()

_, err = c.Handshake(4096)
if err != nil {
Expand All @@ -70,7 +76,12 @@ func AttachHandler(h http.Handler) http.Handler {
Error(rw, err, http.StatusBadRequest)
return
}
defer a.Close()
defer func() {
err := a.Close()
if err != nil {
_, _ = fmt.Fprintf(os.Stderr, "Error closing remote: %v\n", err)
}
}()

ctx := req.Context()
ctx = context.WithValue(ctx, AddrKey, addr)
Expand Down Expand Up @@ -132,7 +143,12 @@ func handleLS(rw http.ResponseWriter, req *http.Request) {
Error(rw, err, http.StatusBadRequest)
return
}
defer f.Close()
defer func() {
err := f.Close()
if err != nil {
log.Printf("Error closing remote: %v\n", err)
}
}()

entries, err := f.Readdir()
if err != nil {
Expand All @@ -158,7 +174,12 @@ func handleRead(rw http.ResponseWriter, req *http.Request) {
Error(rw, err, http.StatusBadRequest)
return
}
defer f.Close()
defer func() {
err := f.Close()
if err != nil {
log.Printf("Error closing remote: %v\n", err)
}
}()

_, err = io.Copy(rw, f)
if err != nil {
Expand Down
7 changes: 6 additions & 1 deletion fs.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"encoding/binary"
"fmt"
"io"
"os"
"path"
"sync"
"time"
Expand Down Expand Up @@ -720,7 +721,11 @@ func (h *fsHandler) Close() error {
h.fids.Range(func(k, v any) bool {
file := v.(*fsFile)
if file.file != nil {
file.file.Close()
err := file.file.Close()
if err != nil {
_, _ = fmt.Fprintf(os.Stderr, "Error closing file: %v\n", err)
return false
}
}
return true
})
Expand Down
14 changes: 12 additions & 2 deletions proto/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,12 @@ func Serve(lis net.Listener, p Proto, connHandler ConnHandler) (err error) {
}

go func() {
defer c.Close()
defer func(c net.Conn) {
err := c.Close()
if err != nil {
log.Printf("Error closing connection: %v", err)
}
}(c)

if h, ok := connHandler.(handleConn); ok {
h.HandleConn(c)
Expand All @@ -33,7 +38,12 @@ func Serve(lis net.Listener, p Proto, connHandler ConnHandler) (err error) {

mh := connHandler.MessageHandler()
if c, ok := mh.(io.Closer); ok {
defer c.Close()
defer func(c io.Closer) {
err := c.Close()
if err != nil {
log.Printf("Error closing connection: %v", err)
}
}(c)
}

handleMessages(c, p, mh)
Expand Down
9 changes: 8 additions & 1 deletion remote.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@ package p9
import (
"bufio"
"errors"
"fmt"
"io"
"os"
"path"
"strings"
"sync"
Expand Down Expand Up @@ -313,7 +315,12 @@ func (file *Remote) Stat(p string) (DirEntry, error) {
if err != nil {
return DirEntry{}, err
}
defer file.Close()
defer func() {
err := file.Close()
if err != nil {
_, _ = fmt.Fprintf(os.Stderr, "Error closing file %q: %v", p, err)
}
}()

return file.Stat("")
}
Expand Down
4 changes: 2 additions & 2 deletions stat.go
Original file line number Diff line number Diff line change
Expand Up @@ -318,7 +318,7 @@ type StatChanges struct {
}

func (c StatChanges) Mode() (FileMode, bool) {
return c.DirEntry.FileMode, c.DirEntry.FileMode != 0xFFFFFFFF
return c.FileMode, c.FileMode != 0xFFFFFFFF
}

func (c StatChanges) ATime() (time.Time, bool) {
Expand All @@ -334,7 +334,7 @@ func (c StatChanges) Length() (uint64, bool) {
}

func (c StatChanges) Name() (string, bool) {
return c.DirEntry.EntryName, c.DirEntry.EntryName != ""
return c.EntryName, c.EntryName != ""
}

func (c StatChanges) UID() (string, bool) {
Expand Down