1
Fork 0

Replace uses of os.IsExist and os.IsNotExist with errors.Is.

The former don't properly unwrap errors.
This commit is contained in:
Juliusz Chroboczek 2024-04-14 13:33:52 +02:00
parent 68887f13d5
commit 3409f5a27f
10 changed files with 21 additions and 19 deletions

View File

@ -264,7 +264,7 @@ func openDiskFile(directory, username, extension string) (*os.File, error) {
) )
if err == nil { if err == nil {
return f, nil return f, nil
} else if !os.IsExist(err) { } else if !errors.Is(err, os.ErrExist) {
return nil, err return nil, err
} }
} }

View File

@ -232,7 +232,7 @@ func getDescriptionFile[T any](name string, allowSubgroups bool, get func(string
Directory, path.Clean("/"+name)+".json", Directory, path.Clean("/"+name)+".json",
) )
r, err := get(fileName) r, err := get(fileName)
if !os.IsNotExist(err) { if !errors.Is(err, os.ErrNotExist) {
return r, fileName, isSubgroup, err return r, fileName, isSubgroup, err
} }
if !allowSubgroups { if !allowSubgroups {
@ -348,7 +348,7 @@ func UpdateDescription(name, etag string, desc *Description) error {
if err == nil { if err == nil {
oldetag = makeETag(old.fileSize, old.modTime) oldetag = makeETag(old.fileSize, old.modTime)
filename = old.FileName filename = old.FileName
} else if os.IsNotExist(err) { } else if errors.Is(err, os.ErrNotExist) {
old = nil old = nil
filename = filepath.Join( filename = filepath.Join(
Directory, path.Clean("/"+name)+".json", Directory, path.Clean("/"+name)+".json",

View File

@ -474,7 +474,7 @@ func add(name string, desc *Description) (*Group, []Client, error) {
} else if !descriptionUnchanged(name, g.description) { } else if !descriptionUnchanged(name, g.description) {
desc, err = readDescription(name, true) desc, err = readDescription(name, true)
if err != nil { if err != nil {
if !os.IsNotExist(err) { if !errors.Is(err, os.ErrNotExist) {
log.Printf("Reading group %v: %v", name, err) log.Printf("Reading group %v: %v", name, err)
} }
deleteUnlocked(g) deleteUnlocked(g)
@ -886,7 +886,7 @@ func GetConfiguration() (*Configuration, error) {
filename := filepath.Join(DataDirectory, "config.json") filename := filepath.Join(DataDirectory, "config.json")
fi, err := os.Stat(filename) fi, err := os.Stat(filename)
if err != nil { if err != nil {
if os.IsNotExist(err) { if errors.Is(err, os.ErrNotExist) {
if !configuration.configuration.Zero() { if !configuration.configuration.Zero() {
configuration.configuration = &Configuration{} configuration.configuration = &Configuration{}
} }

View File

@ -95,7 +95,7 @@ func Update() *configuration {
found = true found = true
file, err := os.Open(ICEFilename) file, err := os.Open(ICEFilename)
if err != nil { if err != nil {
if !os.IsNotExist(err) { if !errors.Is(err, os.ErrNotExist) {
log.Printf("Open %v: %v", ICEFilename, err) log.Printf("Open %v: %v", ICEFilename, err)
} else { } else {
found = false found = false

View File

@ -1299,7 +1299,7 @@ func leaveGroup(c *webClient) {
func closeDownConn(c *webClient, id string, message string) error { func closeDownConn(c *webClient, id string, message string) error {
err := delDownConn(c, id) err := delDownConn(c, id)
if err != nil && !os.IsNotExist(err) { if err != nil && !errors.Is(err, os.ErrNotExist) {
log.Printf("Close down connection: %v", err) log.Printf("Close down connection: %v", err)
} }
err = c.write(clientMessage{ err = c.write(clientMessage{
@ -1413,7 +1413,7 @@ func handleClientMessage(c *webClient, m clientMessage) error {
if err != nil { if err != nil {
var e, s string var e, s string
var autherr *group.NotAuthorisedError var autherr *group.NotAuthorisedError
if os.IsNotExist(err) { if errors.Is(err, os.ErrNotExist) {
s = "group does not exist" s = "group does not exist"
} else if errors.Is(err, group.ErrAnonymousNotAuthorised) { } else if errors.Is(err, group.ErrAnonymousNotAuthorised) {
s = "please choose a username" s = "please choose a username"

View File

@ -62,7 +62,7 @@ func getStateful(token string) (*Stateful, error) {
defer tokens.mu.Unlock() defer tokens.mu.Unlock()
err := tokens.load() err := tokens.load()
if err != nil { if err != nil {
if os.IsNotExist(err) { if errors.Is(err, os.ErrNotExist) {
return nil, nil return nil, nil
} }
return nil, err return nil, err
@ -109,7 +109,7 @@ func (state *state) load() error {
state.modTime = time.Time{} state.modTime = time.Time{}
state.fileSize = 0 state.fileSize = 0
state.tokens = nil state.tokens = nil
if os.IsNotExist(err) { if errors.Is(err, os.ErrNotExist) {
return nil return nil
} }
return err return err
@ -125,7 +125,7 @@ func (state *state) load() error {
state.modTime = time.Time{} state.modTime = time.Time{}
state.fileSize = 0 state.fileSize = 0
state.tokens = nil state.tokens = nil
if os.IsNotExist(err) { if errors.Is(err, os.ErrNotExist) {
return nil return nil
} }
return err return err
@ -153,7 +153,7 @@ func (state *state) load() error {
state.modTime = time.Time{} state.modTime = time.Time{}
state.fileSize = 0 state.fileSize = 0
state.tokens = nil state.tokens = nil
if os.IsNotExist(err) { if errors.Is(err, os.ErrNotExist) {
return nil return nil
} }
return err return err
@ -262,7 +262,7 @@ func (state *state) extend(group, token string, expires time.Time) (*Stateful, e
func (state *state) rewrite() error { func (state *state) rewrite() error {
if state.tokens == nil || len(state.tokens) == 0 { if state.tokens == nil || len(state.tokens) == 0 {
err := os.Remove(state.filename) err := os.Remove(state.filename)
if err == nil || os.IsNotExist(err) { if err == nil || errors.Is(err, os.ErrNotExist) {
return nil return nil
} }
return err return err

View File

@ -2,6 +2,7 @@ package token
import ( import (
"encoding/json" "encoding/json"
"errors"
"io" "io"
"os" "os"
"path/filepath" "path/filepath"
@ -294,7 +295,7 @@ func TestTokenStorage(t *testing.T) {
} }
_, err = os.Stat(s.filename) _, err = os.Stat(s.filename)
if !os.IsNotExist(err) { if !errors.Is(err, os.ErrNotExist) {
t.Errorf("existence check: %v", err) t.Errorf("existence check: %v", err)
} }
} }

View File

@ -5,6 +5,7 @@ import (
"crypto/sha256" "crypto/sha256"
"encoding/hex" "encoding/hex"
"encoding/json" "encoding/json"
"errors"
"fmt" "fmt"
"io" "io"
"net/http" "net/http"
@ -170,7 +171,7 @@ func apiGroupHandler(w http.ResponseWriter, r *http.Request, pth string) {
return return
} else if r.Method == "PUT" { } else if r.Method == "PUT" {
etag, err := group.GetDescriptionTag(g) etag, err := group.GetDescriptionTag(g)
if os.IsNotExist(err) { if errors.Is(err, os.ErrNotExist) {
err = nil err = nil
etag = "" etag = ""
} else if err != nil { } else if err != nil {
@ -299,7 +300,7 @@ func usersHandler(w http.ResponseWriter, r *http.Request, g, pth string) {
return return
} else if r.Method == "PUT" { } else if r.Method == "PUT" {
etag, err := group.GetUserTag(g, username) etag, err := group.GetUserTag(g, username)
if os.IsNotExist(err) { if errors.Is(err, os.ErrNotExist) {
etag = "" etag = ""
err = nil err = nil
} else if err != nil { } else if err != nil {

View File

@ -291,7 +291,7 @@ func TestApi(t *testing.T) {
} }
_, err = group.GetDescription("test") _, err = group.GetDescription("test")
if !os.IsNotExist(err) { if !errors.Is(err, os.ErrNotExist) {
t.Errorf("Group exists after delete") t.Errorf("Group exists after delete")
} }
} }

View File

@ -120,7 +120,7 @@ func notFound(w http.ResponseWriter) {
var ErrIsDirectory = errors.New("is a directory") var ErrIsDirectory = errors.New("is a directory")
func httpError(w http.ResponseWriter, err error) { func httpError(w http.ResponseWriter, err error) {
if os.IsNotExist(err) { if errors.Is(err, os.ErrNotExist) {
notFound(w) notFound(w)
return return
} }
@ -235,7 +235,7 @@ func (fh *fileHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
ff, err := fh.root.Open(index) ff, err := fh.root.Open(index)
if err != nil { if err != nil {
// return 403 if index.html doesn't exist // return 403 if index.html doesn't exist
if os.IsNotExist(err) { if errors.Is(err, os.ErrNotExist) {
http.Error(w, "Forbidden", http.StatusForbidden) http.Error(w, "Forbidden", http.StatusForbidden)
return return
} }