From 3240e105be7ea1a2d3012674e7a694dcafafc237 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Mon, 7 Mar 2016 03:25:29 +0100 Subject: Proper error handling --- cmd/acme/file.go | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) (limited to 'cmd/acme/file.go') diff --git a/cmd/acme/file.go b/cmd/acme/file.go index dbc8bd1..7c1c6d9 100644 --- a/cmd/acme/file.go +++ b/cmd/acme/file.go @@ -14,8 +14,15 @@ import ( func NewFile(fname string, mode os.FileMode) (io.WriteCloser, error) { err := os.Rename(fname, fname+".bak") - if e, ok := err.(*os.LinkError); ok && e.Err != syscall.ENOENT { - return nil, err + if err != nil { + switch e := err.(type) { + case *os.LinkError: + if e.Err != syscall.ENOENT { + return nil, err + } + default: + return nil, err + } } flags := os.O_WRONLY | os.O_CREATE | os.O_TRUNC return os.OpenFile(fname, flags, mode) @@ -53,8 +60,15 @@ func (d domain) Save(cert tls.Certificate) error { func (d domain) Load() (tls.Certificate, error) { crt, err := tls.LoadX509KeyPair(d.CrtFile, d.KeyFile) - if e, ok := err.(*os.PathError); ok && e.Err != syscall.ENOENT { - return tls.Certificate{}, nil + if err != nil { + switch e := err.(type) { + case *os.PathError: + if e.Err != syscall.ENOENT { + return tls.Certificate{}, err + } + default: + return tls.Certificate{}, nil + } } crt.Leaf, err = x509.ParseCertificate(crt.Certificate[0]) return crt, err -- cgit v1.2.3