src/pkg/[a-m]*: gofix -r error -force=error
R=golang-dev, iant
CC=golang-dev
https://golang.org/cl/5322051
diff --git a/src/pkg/exp/ebnf/ebnf.go b/src/pkg/exp/ebnf/ebnf.go
index 7070cc7..15c199a 100644
--- a/src/pkg/exp/ebnf/ebnf.go
+++ b/src/pkg/exp/ebnf/ebnf.go
@@ -23,8 +23,8 @@
package ebnf
import (
+ "errors"
"fmt"
- "os"
"scanner"
"unicode"
"utf8"
@@ -33,27 +33,27 @@
// ----------------------------------------------------------------------------
// Error handling
-type errorList []os.Error
+type errorList []error
-func (list errorList) Error() os.Error {
+func (list errorList) Err() error {
if len(list) == 0 {
return nil
}
return list
}
-func (list errorList) String() string {
+func (list errorList) Error() string {
switch len(list) {
case 0:
return "no errors"
case 1:
- return list[0].String()
+ return list[0].Error()
}
return fmt.Sprintf("%s (and %d more errors)", list[0], len(list)-1)
}
-func newError(pos scanner.Position, msg string) os.Error {
- return os.NewError(fmt.Sprintf("%s: %s", pos, msg))
+func newError(pos scanner.Position, msg string) error {
+ return errors.New(fmt.Sprintf("%s: %s", pos, msg))
}
// ----------------------------------------------------------------------------
@@ -262,8 +262,8 @@
//
// Position information is interpreted relative to the file set fset.
//
-func Verify(grammar Grammar, start string) os.Error {
+func Verify(grammar Grammar, start string) error {
var v verifier
v.verify(grammar, start)
- return v.errors.Error()
+ return v.errors.Err()
}
diff --git a/src/pkg/exp/ebnf/parser.go b/src/pkg/exp/ebnf/parser.go
index b550c2b..2dad9b4 100644
--- a/src/pkg/exp/ebnf/parser.go
+++ b/src/pkg/exp/ebnf/parser.go
@@ -6,7 +6,6 @@
import (
"io"
- "os"
"scanner"
"strconv"
)
@@ -184,7 +183,7 @@
// more than once; the filename is used only for error
// positions.
//
-func Parse(filename string, src io.Reader) (Grammar, os.Error) {
+func Parse(filename string, src io.Reader) (Grammar, error) {
var p parser
grammar := p.parse(filename, src)
return grammar, p.errors.Err()
diff --git a/src/pkg/exp/ebnflint/ebnflint.go b/src/pkg/exp/ebnflint/ebnflint.go
index c827716..6d6f516 100644
--- a/src/pkg/exp/ebnflint/ebnflint.go
+++ b/src/pkg/exp/ebnflint/ebnflint.go
@@ -31,7 +31,7 @@
close = []byte(`</pre>`)
)
-func report(err os.Error) {
+func report(err error) {
scanner.PrintError(os.Stderr, err)
os.Exit(1)
}
@@ -78,7 +78,7 @@
var (
filename string
src []byte
- err os.Error
+ err error
)
switch flag.NArg() {
case 0:
diff --git a/src/pkg/exp/gotype/gotype.go b/src/pkg/exp/gotype/gotype.go
index 9199213..bc4a112 100644
--- a/src/pkg/exp/gotype/gotype.go
+++ b/src/pkg/exp/gotype/gotype.go
@@ -5,6 +5,7 @@
package main
import (
+ "errors"
"exp/types"
"flag"
"fmt"
@@ -38,7 +39,7 @@
os.Exit(2)
}
-func report(err os.Error) {
+func report(err error) {
scanner.PrintError(os.Stderr, err)
exitCode = 2
}
@@ -111,7 +112,7 @@
}
if file := parse(fset, filename, src); file != nil {
if files[filename] != nil {
- report(os.NewError(fmt.Sprintf("%q: duplicate file", filename)))
+ report(errors.New(fmt.Sprintf("%q: duplicate file", filename)))
continue
}
files[filename] = file
diff --git a/src/pkg/exp/gui/gui.go b/src/pkg/exp/gui/gui.go
index 1714991..a69f83a 100644
--- a/src/pkg/exp/gui/gui.go
+++ b/src/pkg/exp/gui/gui.go
@@ -8,7 +8,6 @@
import (
"image"
"image/draw"
- "os"
)
// A Window represents a single graphics window.
@@ -21,7 +20,7 @@
// mouse movements and window resizes.
EventChan() <-chan interface{}
// Close closes the window.
- Close() os.Error
+ Close() error
}
// A KeyEvent is sent for a key press or release.
@@ -54,5 +53,5 @@
// An ErrEvent is sent when an error occurs.
type ErrEvent struct {
- Err os.Error
+ Err error
}
diff --git a/src/pkg/exp/gui/x11/auth.go b/src/pkg/exp/gui/x11/auth.go
index 732f103..24e941c 100644
--- a/src/pkg/exp/gui/x11/auth.go
+++ b/src/pkg/exp/gui/x11/auth.go
@@ -6,12 +6,13 @@
import (
"bufio"
+ "errors"
"io"
"os"
)
// readU16BE reads a big-endian uint16 from r, using b as a scratch buffer.
-func readU16BE(r io.Reader, b []byte) (uint16, os.Error) {
+func readU16BE(r io.Reader, b []byte) (uint16, error) {
_, err := io.ReadFull(r, b[0:2])
if err != nil {
return 0, err
@@ -20,13 +21,13 @@
}
// readStr reads a length-prefixed string from r, using b as a scratch buffer.
-func readStr(r io.Reader, b []byte) (string, os.Error) {
+func readStr(r io.Reader, b []byte) (string, error) {
n, err := readU16BE(r, b)
if err != nil {
return "", err
}
if int(n) > len(b) {
- return "", os.NewError("Xauthority entry too long for buffer")
+ return "", errors.New("Xauthority entry too long for buffer")
}
_, err = io.ReadFull(r, b[0:n])
if err != nil {
@@ -37,7 +38,7 @@
// readAuth reads the X authority file and returns the name/data pair for the display.
// displayStr is the "12" out of a $DISPLAY like ":12.0".
-func readAuth(displayStr string) (name, data string, err os.Error) {
+func readAuth(displayStr string) (name, data string, err error) {
// b is a scratch buffer to use and should be at least 256 bytes long
// (i.e. it should be able to hold a hostname).
var b [256]byte
@@ -48,7 +49,7 @@
if fn == "" {
home := os.Getenv("HOME")
if home == "" {
- err = os.NewError("Xauthority not found: $XAUTHORITY, $HOME not set")
+ err = errors.New("Xauthority not found: $XAUTHORITY, $HOME not set")
return
}
fn = home + "/.Xauthority"
diff --git a/src/pkg/exp/gui/x11/conn.go b/src/pkg/exp/gui/x11/conn.go
index f4a453e..15afc65 100644
--- a/src/pkg/exp/gui/x11/conn.go
+++ b/src/pkg/exp/gui/x11/conn.go
@@ -10,6 +10,7 @@
import (
"bufio"
+ "errors"
"exp/gui"
"image"
"image/draw"
@@ -86,7 +87,7 @@
for y := b.Min.Y; y < b.Max.Y; y++ {
setU32LE(c.flushBuf0[16:20], uint32(y<<16))
if _, err := c.w.Write(c.flushBuf0[:24]); err != nil {
- if err != os.EOF {
+ if err != io.EOF {
log.Println("x11:", err)
}
return
@@ -105,7 +106,7 @@
}
x += nx
if _, err := c.w.Write(c.flushBuf1[:nx]); err != nil {
- if err != os.EOF {
+ if err != io.EOF {
log.Println("x11:", err)
}
return
@@ -113,7 +114,7 @@
}
}
if err := c.w.Flush(); err != nil {
- if err != os.EOF {
+ if err != io.EOF {
log.Println("x11:", err)
}
return
@@ -133,7 +134,7 @@
}
}
-func (c *conn) Close() os.Error {
+func (c *conn) Close() error {
// Shut down the writeSocket goroutine. This will close the socket to the
// X11 server, which will cause c.eventc to close.
close(c.flush)
@@ -156,7 +157,7 @@
for {
// X events are always 32 bytes long.
if _, err := io.ReadFull(c.r, c.buf[:32]); err != nil {
- if err != os.EOF {
+ if err != io.EOF {
c.eventc <- gui.ErrEvent{err}
}
return
@@ -167,7 +168,7 @@
if cookie != 1 {
// We issued only one request (GetKeyboardMapping) with a cookie of 1,
// so we shouldn't get any other reply from the X server.
- c.eventc <- gui.ErrEvent{os.NewError("x11: unexpected cookie")}
+ c.eventc <- gui.ErrEvent{errors.New("x11: unexpected cookie")}
return
}
keysymsPerKeycode = int(c.buf[1])
@@ -180,7 +181,7 @@
for j := range m {
u, err := readU32LE(c.r, c.buf[:4])
if err != nil {
- if err != os.EOF {
+ if err != io.EOF {
c.eventc <- gui.ErrEvent{err}
}
return
@@ -253,10 +254,10 @@
// connect("/tmp/launch-123/:0") // calls net.Dial("unix", "", "/tmp/launch-123/:0"), displayStr="0"
// connect("hostname:2.1") // calls net.Dial("tcp", "", "hostname:6002"), displayStr="2"
// connect("tcp/hostname:1.0") // calls net.Dial("tcp", "", "hostname:6001"), displayStr="1"
-func connect(display string) (conn net.Conn, displayStr string, err os.Error) {
+func connect(display string) (conn net.Conn, displayStr string, err error) {
colonIdx := strings.LastIndex(display, ":")
if colonIdx < 0 {
- return nil, "", os.NewError("bad display: " + display)
+ return nil, "", errors.New("bad display: " + display)
}
// Parse the section before the colon.
var protocol, host, socket string
@@ -275,7 +276,7 @@
// Parse the section after the colon.
after := display[colonIdx+1:]
if after == "" {
- return nil, "", os.NewError("bad display: " + display)
+ return nil, "", errors.New("bad display: " + display)
}
if i := strings.LastIndex(after, "."); i < 0 {
displayStr = after
@@ -284,7 +285,7 @@
}
displayInt, err := strconv.Atoi(displayStr)
if err != nil || displayInt < 0 {
- return nil, "", os.NewError("bad display: " + display)
+ return nil, "", errors.New("bad display: " + display)
}
// Make the connection.
if socket != "" {
@@ -295,21 +296,21 @@
conn, err = net.Dial("unix", "/tmp/.X11-unix/X"+displayStr)
}
if err != nil {
- return nil, "", os.NewError("cannot connect to " + display + ": " + err.String())
+ return nil, "", errors.New("cannot connect to " + display + ": " + err.Error())
}
return
}
// authenticate authenticates ourselves with the X server.
// displayStr is the "12" out of ":12.0".
-func authenticate(w *bufio.Writer, displayStr string) os.Error {
+func authenticate(w *bufio.Writer, displayStr string) error {
key, value, err := readAuth(displayStr)
if err != nil {
return err
}
// Assume that the authentication protocol is "MIT-MAGIC-COOKIE-1".
if len(key) != 18 || len(value) != 16 {
- return os.NewError("unsupported Xauth")
+ return errors.New("unsupported Xauth")
}
// 0x006c means little-endian. 0x000b, 0x0000 means X major version 11, minor version 0.
// 0x0012 and 0x0010 means the auth key and value have lengths 18 and 16.
@@ -339,7 +340,7 @@
}
// readU8 reads a uint8 from r, using b as a scratch buffer.
-func readU8(r io.Reader, b []byte) (uint8, os.Error) {
+func readU8(r io.Reader, b []byte) (uint8, error) {
_, err := io.ReadFull(r, b[:1])
if err != nil {
return 0, err
@@ -348,7 +349,7 @@
}
// readU16LE reads a little-endian uint16 from r, using b as a scratch buffer.
-func readU16LE(r io.Reader, b []byte) (uint16, os.Error) {
+func readU16LE(r io.Reader, b []byte) (uint16, error) {
_, err := io.ReadFull(r, b[:2])
if err != nil {
return 0, err
@@ -357,7 +358,7 @@
}
// readU32LE reads a little-endian uint32 from r, using b as a scratch buffer.
-func readU32LE(r io.Reader, b []byte) (uint32, os.Error) {
+func readU32LE(r io.Reader, b []byte) (uint32, error) {
_, err := io.ReadFull(r, b[:4])
if err != nil {
return 0, err
@@ -374,7 +375,7 @@
}
// checkPixmapFormats checks that we have an agreeable X pixmap Format.
-func checkPixmapFormats(r io.Reader, b []byte, n int) (agree bool, err os.Error) {
+func checkPixmapFormats(r io.Reader, b []byte, n int) (agree bool, err error) {
for i := 0; i < n; i++ {
_, err = io.ReadFull(r, b[:8])
if err != nil {
@@ -389,7 +390,7 @@
}
// checkDepths checks that we have an agreeable X Depth (i.e. one that has an agreeable X VisualType).
-func checkDepths(r io.Reader, b []byte, n int, visual uint32) (agree bool, err os.Error) {
+func checkDepths(r io.Reader, b []byte, n int, visual uint32) (agree bool, err error) {
for i := 0; i < n; i++ {
var depth, visualsLen uint16
depth, err = readU16LE(r, b)
@@ -427,7 +428,7 @@
}
// checkScreens checks that we have an agreeable X Screen.
-func checkScreens(r io.Reader, b []byte, n int) (root, visual uint32, err os.Error) {
+func checkScreens(r io.Reader, b []byte, n int) (root, visual uint32, err error) {
for i := 0; i < n; i++ {
var root0, visual0, x uint32
root0, err = readU32LE(r, b)
@@ -465,14 +466,14 @@
// handshake performs the protocol handshake with the X server, and ensures
// that the server provides a compatible Screen, Depth, etc.
-func (c *conn) handshake() os.Error {
+func (c *conn) handshake() error {
_, err := io.ReadFull(c.r, c.buf[:8])
if err != nil {
return err
}
// Byte 0 should be 1 (success), bytes 2:6 should be 0xb0000000 (major/minor version 11.0).
if c.buf[0] != 1 || c.buf[2] != 11 || c.buf[3] != 0 || c.buf[4] != 0 || c.buf[5] != 0 {
- return os.NewError("unsupported X version")
+ return errors.New("unsupported X version")
}
// Ignore the release number.
_, err = io.ReadFull(c.r, c.buf[:4])
@@ -490,7 +491,7 @@
return err
}
if resourceIdMask < 256 {
- return os.NewError("X resource ID mask is too small")
+ return errors.New("X resource ID mask is too small")
}
// Ignore the motion buffer size.
_, err = io.ReadFull(c.r, c.buf[:4])
@@ -510,7 +511,7 @@
return err
}
if maxReqLen != 0xffff {
- return os.NewError("unsupported X maximum request length")
+ return errors.New("unsupported X maximum request length")
}
// Read the roots length.
rootsLen, err := readU8(c.r, c.buf[:1])
@@ -526,7 +527,7 @@
// imageByteOrder(1), bitmapFormatBitOrder(1), bitmapFormatScanlineUnit(1) bitmapFormatScanlinePad(1),
// minKeycode(1), maxKeycode(1), padding(4), vendor (vendorLen).
if 10+int(vendorLen) > cap(c.buf) {
- return os.NewError("unsupported X vendor")
+ return errors.New("unsupported X vendor")
}
_, err = io.ReadFull(c.r, c.buf[:10+int(vendorLen)])
if err != nil {
@@ -538,7 +539,7 @@
return err
}
if !agree {
- return os.NewError("unsupported X pixmap formats")
+ return errors.New("unsupported X pixmap formats")
}
// Check that we have an agreeable screen.
root, visual, err := checkScreens(c.r, c.buf[:24], int(rootsLen))
@@ -546,7 +547,7 @@
return err
}
if root == 0 || visual == 0 {
- return os.NewError("unsupported X screen")
+ return errors.New("unsupported X screen")
}
c.gc = resID(resourceIdBase)
c.window = resID(resourceIdBase + 1)
@@ -556,10 +557,10 @@
}
// NewWindow calls NewWindowDisplay with $DISPLAY.
-func NewWindow() (gui.Window, os.Error) {
+func NewWindow() (gui.Window, error) {
display := os.Getenv("DISPLAY")
if len(display) == 0 {
- return nil, os.NewError("$DISPLAY not set")
+ return nil, errors.New("$DISPLAY not set")
}
return NewWindowDisplay(display)
}
@@ -567,7 +568,7 @@
// NewWindowDisplay returns a new gui.Window, backed by a newly created and
// mapped X11 window. The X server to connect to is specified by the display
// string, such as ":1".
-func NewWindowDisplay(display string) (gui.Window, os.Error) {
+func NewWindowDisplay(display string) (gui.Window, error) {
socket, displayStr, err := connect(display)
if err != nil {
return nil, err
diff --git a/src/pkg/exp/inotify/inotify_linux.go b/src/pkg/exp/inotify/inotify_linux.go
index ee3c75f..d6b7e85 100644
--- a/src/pkg/exp/inotify/inotify_linux.go
+++ b/src/pkg/exp/inotify/inotify_linux.go
@@ -27,6 +27,7 @@
package inotify
import (
+ "errors"
"fmt"
"os"
"strings"
@@ -49,14 +50,14 @@
fd int // File descriptor (as returned by the inotify_init() syscall)
watches map[string]*watch // Map of inotify watches (key: path)
paths map[int]string // Map of watched paths (key: watch descriptor)
- Error chan os.Error // Errors are sent on this channel
+ Error chan error // Errors are sent on this channel
Event chan *Event // Events are returned on this channel
done chan bool // Channel for sending a "quit message" to the reader goroutine
isClosed bool // Set to true when Close() is first called
}
// NewWatcher creates and returns a new inotify instance using inotify_init(2)
-func NewWatcher() (*Watcher, os.Error) {
+func NewWatcher() (*Watcher, error) {
fd, errno := syscall.InotifyInit()
if fd == -1 {
return nil, os.NewSyscallError("inotify_init", errno)
@@ -66,7 +67,7 @@
watches: make(map[string]*watch),
paths: make(map[int]string),
Event: make(chan *Event),
- Error: make(chan os.Error),
+ Error: make(chan error),
done: make(chan bool, 1),
}
@@ -77,7 +78,7 @@
// Close closes an inotify watcher instance
// It sends a message to the reader goroutine to quit and removes all watches
// associated with the inotify instance
-func (w *Watcher) Close() os.Error {
+func (w *Watcher) Close() error {
if w.isClosed {
return nil
}
@@ -94,9 +95,9 @@
// AddWatch adds path to the watched file set.
// The flags are interpreted as described in inotify_add_watch(2).
-func (w *Watcher) AddWatch(path string, flags uint32) os.Error {
+func (w *Watcher) AddWatch(path string, flags uint32) error {
if w.isClosed {
- return os.NewError("inotify instance already closed")
+ return errors.New("inotify instance already closed")
}
watchEntry, found := w.watches[path]
@@ -117,15 +118,15 @@
}
// Watch adds path to the watched file set, watching all events.
-func (w *Watcher) Watch(path string) os.Error {
+func (w *Watcher) Watch(path string) error {
return w.AddWatch(path, IN_ALL_EVENTS)
}
// RemoveWatch removes path from the watched file set.
-func (w *Watcher) RemoveWatch(path string) os.Error {
+func (w *Watcher) RemoveWatch(path string) error {
watch, ok := w.watches[path]
if !ok {
- return os.NewError(fmt.Sprintf("can't remove non-existent inotify watch for: %s", path))
+ return errors.New(fmt.Sprintf("can't remove non-existent inotify watch for: %s", path))
}
success, errno := syscall.InotifyRmWatch(w.fd, watch.wd)
if success == -1 {
@@ -168,7 +169,7 @@
continue
}
if n < syscall.SizeofInotifyEvent {
- w.Error <- os.NewError("inotify: short read in readEvents()")
+ w.Error <- errors.New("inotify: short read in readEvents()")
continue
}
diff --git a/src/pkg/exp/norm/maketables.go b/src/pkg/exp/norm/maketables.go
index 93edf22..c7a3762 100644
--- a/src/pkg/exp/norm/maketables.go
+++ b/src/pkg/exp/norm/maketables.go
@@ -220,7 +220,7 @@
return
}
-func parseDecomposition(s string, skipfirst bool) (a []rune, e os.Error) {
+func parseDecomposition(s string, skipfirst bool) (a []rune, e error) {
decomp := strings.Split(s, " ")
if len(decomp) > 0 && skipfirst {
decomp = decomp[1:]
@@ -310,7 +310,7 @@
for {
line, err := input.ReadString('\n')
if err != nil {
- if err == os.EOF {
+ if err == io.EOF {
break
}
logger.Fatal(err)
@@ -350,7 +350,7 @@
for {
line, err := input.ReadString('\n')
if err != nil {
- if err == os.EOF {
+ if err == io.EOF {
break
}
logger.Fatal(err)
@@ -782,7 +782,7 @@
for {
line, err := input.ReadString('\n')
if err != nil {
- if err == os.EOF {
+ if err == io.EOF {
break
}
logger.Fatal(err)
diff --git a/src/pkg/exp/norm/normregtest.go b/src/pkg/exp/norm/normregtest.go
index cf3b340..6e27f63 100644
--- a/src/pkg/exp/norm/normregtest.go
+++ b/src/pkg/exp/norm/normregtest.go
@@ -11,6 +11,7 @@
"flag"
"fmt"
"http"
+ "io"
"log"
"os"
"path"
@@ -141,7 +142,7 @@
for {
line, err := input.ReadString('\n')
if err != nil {
- if err == os.EOF {
+ if err == io.EOF {
break
}
logger.Fatal(err)
diff --git a/src/pkg/exp/norm/readwriter.go b/src/pkg/exp/norm/readwriter.go
index 48ae135..ee58abd 100644
--- a/src/pkg/exp/norm/readwriter.go
+++ b/src/pkg/exp/norm/readwriter.go
@@ -4,10 +4,7 @@
package norm
-import (
- "io"
- "os"
-)
+import "io"
type normWriter struct {
rb reorderBuffer
@@ -18,7 +15,7 @@
// Write implements the standard write interface. If the last characters are
// not at a normalization boundary, the bytes will be buffered for the next
// write. The remaining bytes will be written on close.
-func (w *normWriter) Write(data []byte) (n int, err os.Error) {
+func (w *normWriter) Write(data []byte) (n int, err error) {
// Process data in pieces to keep w.buf size bounded.
const chunk = 4000
@@ -52,7 +49,7 @@
}
// Close forces data that remains in the buffer to be written.
-func (w *normWriter) Close() os.Error {
+func (w *normWriter) Close() error {
if len(w.buf) > 0 {
_, err := w.w.Write(w.buf)
if err != nil {
@@ -79,11 +76,11 @@
outbuf []byte
bufStart int
lastBoundary int
- err os.Error
+ err error
}
// Read implements the standard read interface.
-func (r *normReader) Read(p []byte) (int, os.Error) {
+func (r *normReader) Read(p []byte) (int, error) {
for {
if r.lastBoundary-r.bufStart > 0 {
n := copy(p, r.outbuf[r.bufStart:r.lastBoundary])
@@ -106,7 +103,7 @@
if n > 0 {
r.outbuf = doAppend(&r.rb, r.outbuf)
}
- if err == os.EOF {
+ if err == io.EOF {
r.lastBoundary = len(r.outbuf)
} else {
r.lastBoundary = lastBoundary(&r.rb.f, r.outbuf)
diff --git a/src/pkg/exp/norm/readwriter_test.go b/src/pkg/exp/norm/readwriter_test.go
index 68652ef..3b49eb0 100644
--- a/src/pkg/exp/norm/readwriter_test.go
+++ b/src/pkg/exp/norm/readwriter_test.go
@@ -7,7 +7,6 @@
import (
"bytes"
"fmt"
- "os"
"strings"
"testing"
)
@@ -27,7 +26,7 @@
r := f.Reader(bytes.NewBuffer(out))
buf := make([]byte, size)
result := []byte{}
- for n, err := 0, os.Error(nil); err == nil; {
+ for n, err := 0, error(nil); err == nil; {
n, err = r.Read(buf)
result = append(result, buf[:n]...)
}
diff --git a/src/pkg/exp/spdy/read.go b/src/pkg/exp/spdy/read.go
index 2b1fd3d..3de80c0 100644
--- a/src/pkg/exp/spdy/read.go
+++ b/src/pkg/exp/spdy/read.go
@@ -9,19 +9,18 @@
"encoding/binary"
"http"
"io"
- "os"
"strings"
)
-func (frame *SynStreamFrame) read(h ControlFrameHeader, f *Framer) os.Error {
+func (frame *SynStreamFrame) read(h ControlFrameHeader, f *Framer) error {
return f.readSynStreamFrame(h, frame)
}
-func (frame *SynReplyFrame) read(h ControlFrameHeader, f *Framer) os.Error {
+func (frame *SynReplyFrame) read(h ControlFrameHeader, f *Framer) error {
return f.readSynReplyFrame(h, frame)
}
-func (frame *RstStreamFrame) read(h ControlFrameHeader, f *Framer) os.Error {
+func (frame *RstStreamFrame) read(h ControlFrameHeader, f *Framer) error {
frame.CFHeader = h
if err := binary.Read(f.r, binary.BigEndian, &frame.StreamId); err != nil {
return err
@@ -32,7 +31,7 @@
return nil
}
-func (frame *SettingsFrame) read(h ControlFrameHeader, f *Framer) os.Error {
+func (frame *SettingsFrame) read(h ControlFrameHeader, f *Framer) error {
frame.CFHeader = h
var numSettings uint32
if err := binary.Read(f.r, binary.BigEndian, &numSettings); err != nil {
@@ -52,12 +51,12 @@
return nil
}
-func (frame *NoopFrame) read(h ControlFrameHeader, f *Framer) os.Error {
+func (frame *NoopFrame) read(h ControlFrameHeader, f *Framer) error {
frame.CFHeader = h
return nil
}
-func (frame *PingFrame) read(h ControlFrameHeader, f *Framer) os.Error {
+func (frame *PingFrame) read(h ControlFrameHeader, f *Framer) error {
frame.CFHeader = h
if err := binary.Read(f.r, binary.BigEndian, &frame.Id); err != nil {
return err
@@ -65,7 +64,7 @@
return nil
}
-func (frame *GoAwayFrame) read(h ControlFrameHeader, f *Framer) os.Error {
+func (frame *GoAwayFrame) read(h ControlFrameHeader, f *Framer) error {
frame.CFHeader = h
if err := binary.Read(f.r, binary.BigEndian, &frame.LastGoodStreamId); err != nil {
return err
@@ -73,11 +72,11 @@
return nil
}
-func (frame *HeadersFrame) read(h ControlFrameHeader, f *Framer) os.Error {
+func (frame *HeadersFrame) read(h ControlFrameHeader, f *Framer) error {
return f.readHeadersFrame(h, frame)
}
-func newControlFrame(frameType ControlFrameType) (controlFrame, os.Error) {
+func newControlFrame(frameType ControlFrameType) (controlFrame, error) {
ctor, ok := cframeCtor[frameType]
if !ok {
return nil, &Error{Err: InvalidControlFrame}
@@ -97,7 +96,7 @@
// TODO(willchan): Add TypeWindowUpdate
}
-func (f *Framer) uncorkHeaderDecompressor(payloadSize int64) os.Error {
+func (f *Framer) uncorkHeaderDecompressor(payloadSize int64) error {
if f.headerDecompressor != nil {
f.headerReader.N = payloadSize
return nil
@@ -112,7 +111,7 @@
}
// ReadFrame reads SPDY encoded data and returns a decompressed Frame.
-func (f *Framer) ReadFrame() (Frame, os.Error) {
+func (f *Framer) ReadFrame() (Frame, error) {
var firstWord uint32
if err := binary.Read(f.r, binary.BigEndian, &firstWord); err != nil {
return nil, err
@@ -125,7 +124,7 @@
return f.parseDataFrame(firstWord & 0x7fffffff)
}
-func (f *Framer) parseControlFrame(version uint16, frameType ControlFrameType) (Frame, os.Error) {
+func (f *Framer) parseControlFrame(version uint16, frameType ControlFrameType) (Frame, error) {
var length uint32
if err := binary.Read(f.r, binary.BigEndian, &length); err != nil {
return nil, err
@@ -143,12 +142,12 @@
return cframe, nil
}
-func parseHeaderValueBlock(r io.Reader, streamId uint32) (http.Header, os.Error) {
+func parseHeaderValueBlock(r io.Reader, streamId uint32) (http.Header, error) {
var numHeaders uint16
if err := binary.Read(r, binary.BigEndian, &numHeaders); err != nil {
return nil, err
}
- var e os.Error
+ var e error
h := make(http.Header, int(numHeaders))
for i := 0; i < int(numHeaders); i++ {
var length uint16
@@ -185,9 +184,9 @@
return h, nil
}
-func (f *Framer) readSynStreamFrame(h ControlFrameHeader, frame *SynStreamFrame) os.Error {
+func (f *Framer) readSynStreamFrame(h ControlFrameHeader, frame *SynStreamFrame) error {
frame.CFHeader = h
- var err os.Error
+ var err error
if err = binary.Read(f.r, binary.BigEndian, &frame.StreamId); err != nil {
return err
}
@@ -206,7 +205,7 @@
}
frame.Headers, err = parseHeaderValueBlock(reader, frame.StreamId)
- if !f.headerCompressionDisabled && ((err == os.EOF && f.headerReader.N == 0) || f.headerReader.N != 0) {
+ if !f.headerCompressionDisabled && ((err == io.EOF && f.headerReader.N == 0) || f.headerReader.N != 0) {
err = &Error{WrongCompressedPayloadSize, 0}
}
if err != nil {
@@ -223,9 +222,9 @@
return nil
}
-func (f *Framer) readSynReplyFrame(h ControlFrameHeader, frame *SynReplyFrame) os.Error {
+func (f *Framer) readSynReplyFrame(h ControlFrameHeader, frame *SynReplyFrame) error {
frame.CFHeader = h
- var err os.Error
+ var err error
if err = binary.Read(f.r, binary.BigEndian, &frame.StreamId); err != nil {
return err
}
@@ -239,7 +238,7 @@
reader = f.headerDecompressor
}
frame.Headers, err = parseHeaderValueBlock(reader, frame.StreamId)
- if !f.headerCompressionDisabled && ((err == os.EOF && f.headerReader.N == 0) || f.headerReader.N != 0) {
+ if !f.headerCompressionDisabled && ((err == io.EOF && f.headerReader.N == 0) || f.headerReader.N != 0) {
err = &Error{WrongCompressedPayloadSize, 0}
}
if err != nil {
@@ -256,9 +255,9 @@
return nil
}
-func (f *Framer) readHeadersFrame(h ControlFrameHeader, frame *HeadersFrame) os.Error {
+func (f *Framer) readHeadersFrame(h ControlFrameHeader, frame *HeadersFrame) error {
frame.CFHeader = h
- var err os.Error
+ var err error
if err = binary.Read(f.r, binary.BigEndian, &frame.StreamId); err != nil {
return err
}
@@ -272,7 +271,7 @@
reader = f.headerDecompressor
}
frame.Headers, err = parseHeaderValueBlock(reader, frame.StreamId)
- if !f.headerCompressionDisabled && ((err == os.EOF && f.headerReader.N == 0) || f.headerReader.N != 0) {
+ if !f.headerCompressionDisabled && ((err == io.EOF && f.headerReader.N == 0) || f.headerReader.N != 0) {
err = &Error{WrongCompressedPayloadSize, 0}
}
if err != nil {
@@ -296,7 +295,7 @@
return nil
}
-func (f *Framer) parseDataFrame(streamId uint32) (*DataFrame, os.Error) {
+func (f *Framer) parseDataFrame(streamId uint32) (*DataFrame, error) {
var length uint32
if err := binary.Read(f.r, binary.BigEndian, &length); err != nil {
return nil, err
diff --git a/src/pkg/exp/spdy/types.go b/src/pkg/exp/spdy/types.go
index 41cafb1..87d6edb 100644
--- a/src/pkg/exp/spdy/types.go
+++ b/src/pkg/exp/spdy/types.go
@@ -9,7 +9,6 @@
"compress/zlib"
"http"
"io"
- "os"
)
// Data Frame Format
@@ -161,7 +160,7 @@
// Frame is a single SPDY frame in its unpacked in-memory representation. Use
// Framer to read and write it.
type Frame interface {
- write(f *Framer) os.Error
+ write(f *Framer) error
}
// ControlFrameHeader contains all the fields in a control frame header,
@@ -176,7 +175,7 @@
type controlFrame interface {
Frame
- read(h ControlFrameHeader, f *Framer) os.Error
+ read(h ControlFrameHeader, f *Framer) error
}
// SynStreamFrame is the unpacked, in-memory representation of a SYN_STREAM
@@ -321,7 +320,7 @@
StreamId uint32
}
-func (e *Error) String() string {
+func (e *Error) Error() string {
return string(e.Err)
}
@@ -354,7 +353,7 @@
// a io.Writer and io.Reader. Note that Framer will read and write individual fields
// from/to the Reader and Writer, so the caller should pass in an appropriately
// buffered implementation to optimize performance.
-func NewFramer(w io.Writer, r io.Reader) (*Framer, os.Error) {
+func NewFramer(w io.Writer, r io.Reader) (*Framer, error) {
compressBuf := new(bytes.Buffer)
compressor, err := zlib.NewWriterDict(compressBuf, zlib.BestCompression, []byte(HeaderDictionary))
if err != nil {
diff --git a/src/pkg/exp/spdy/write.go b/src/pkg/exp/spdy/write.go
index 7d40bbe..537154f 100644
--- a/src/pkg/exp/spdy/write.go
+++ b/src/pkg/exp/spdy/write.go
@@ -8,19 +8,18 @@
"encoding/binary"
"http"
"io"
- "os"
"strings"
)
-func (frame *SynStreamFrame) write(f *Framer) os.Error {
+func (frame *SynStreamFrame) write(f *Framer) error {
return f.writeSynStreamFrame(frame)
}
-func (frame *SynReplyFrame) write(f *Framer) os.Error {
+func (frame *SynReplyFrame) write(f *Framer) error {
return f.writeSynReplyFrame(frame)
}
-func (frame *RstStreamFrame) write(f *Framer) (err os.Error) {
+func (frame *RstStreamFrame) write(f *Framer) (err error) {
frame.CFHeader.version = Version
frame.CFHeader.frameType = TypeRstStream
frame.CFHeader.length = 8
@@ -38,7 +37,7 @@
return
}
-func (frame *SettingsFrame) write(f *Framer) (err os.Error) {
+func (frame *SettingsFrame) write(f *Framer) (err error) {
frame.CFHeader.version = Version
frame.CFHeader.frameType = TypeSettings
frame.CFHeader.length = uint32(len(frame.FlagIdValues)*8 + 4)
@@ -62,7 +61,7 @@
return
}
-func (frame *NoopFrame) write(f *Framer) os.Error {
+func (frame *NoopFrame) write(f *Framer) error {
frame.CFHeader.version = Version
frame.CFHeader.frameType = TypeNoop
@@ -70,7 +69,7 @@
return writeControlFrameHeader(f.w, frame.CFHeader)
}
-func (frame *PingFrame) write(f *Framer) (err os.Error) {
+func (frame *PingFrame) write(f *Framer) (err error) {
frame.CFHeader.version = Version
frame.CFHeader.frameType = TypePing
frame.CFHeader.length = 4
@@ -85,7 +84,7 @@
return
}
-func (frame *GoAwayFrame) write(f *Framer) (err os.Error) {
+func (frame *GoAwayFrame) write(f *Framer) (err error) {
frame.CFHeader.version = Version
frame.CFHeader.frameType = TypeGoAway
frame.CFHeader.length = 4
@@ -100,20 +99,20 @@
return nil
}
-func (frame *HeadersFrame) write(f *Framer) os.Error {
+func (frame *HeadersFrame) write(f *Framer) error {
return f.writeHeadersFrame(frame)
}
-func (frame *DataFrame) write(f *Framer) os.Error {
+func (frame *DataFrame) write(f *Framer) error {
return f.writeDataFrame(frame)
}
// WriteFrame writes a frame.
-func (f *Framer) WriteFrame(frame Frame) os.Error {
+func (f *Framer) WriteFrame(frame Frame) error {
return frame.write(f)
}
-func writeControlFrameHeader(w io.Writer, h ControlFrameHeader) os.Error {
+func writeControlFrameHeader(w io.Writer, h ControlFrameHeader) error {
if err := binary.Write(w, binary.BigEndian, 0x8000|h.version); err != nil {
return err
}
@@ -127,7 +126,7 @@
return nil
}
-func writeHeaderValueBlock(w io.Writer, h http.Header) (n int, err os.Error) {
+func writeHeaderValueBlock(w io.Writer, h http.Header) (n int, err error) {
n = 0
if err = binary.Write(w, binary.BigEndian, uint16(len(h))); err != nil {
return
@@ -156,7 +155,7 @@
return
}
-func (f *Framer) writeSynStreamFrame(frame *SynStreamFrame) (err os.Error) {
+func (f *Framer) writeSynStreamFrame(frame *SynStreamFrame) (err error) {
// Marshal the headers.
var writer io.Writer = f.headerBuf
if !f.headerCompressionDisabled {
@@ -194,7 +193,7 @@
return nil
}
-func (f *Framer) writeSynReplyFrame(frame *SynReplyFrame) (err os.Error) {
+func (f *Framer) writeSynReplyFrame(frame *SynReplyFrame) (err error) {
// Marshal the headers.
var writer io.Writer = f.headerBuf
if !f.headerCompressionDisabled {
@@ -229,7 +228,7 @@
return
}
-func (f *Framer) writeHeadersFrame(frame *HeadersFrame) (err os.Error) {
+func (f *Framer) writeHeadersFrame(frame *HeadersFrame) (err error) {
// Marshal the headers.
var writer io.Writer = f.headerBuf
if !f.headerCompressionDisabled {
@@ -264,7 +263,7 @@
return
}
-func (f *Framer) writeDataFrame(frame *DataFrame) (err os.Error) {
+func (f *Framer) writeDataFrame(frame *DataFrame) (err error) {
// Validate DataFrame
if frame.StreamId&0x80000000 != 0 || len(frame.Data) >= 0x0f000000 {
return &Error{InvalidDataFrame, frame.StreamId}
diff --git a/src/pkg/exp/sql/convert.go b/src/pkg/exp/sql/convert.go
index a35e0be..b1feef0 100644
--- a/src/pkg/exp/sql/convert.go
+++ b/src/pkg/exp/sql/convert.go
@@ -7,8 +7,8 @@
package sql
import (
+ "errors"
"fmt"
- "os"
"reflect"
"strconv"
)
@@ -16,7 +16,7 @@
// convertAssign copies to dest the value in src, converting it if possible.
// An error is returned if the copy would result in loss of information.
// dest should be a pointer type.
-func convertAssign(dest, src interface{}) os.Error {
+func convertAssign(dest, src interface{}) error {
// Common cases, without reflect. Fall through.
switch s := src.(type) {
case string:
@@ -56,7 +56,7 @@
dpv := reflect.ValueOf(dest)
if dpv.Kind() != reflect.Ptr {
- return os.NewError("destination not a pointer")
+ return errors.New("destination not a pointer")
}
dv := reflect.Indirect(dpv)
diff --git a/src/pkg/exp/sql/convert_test.go b/src/pkg/exp/sql/convert_test.go
index 8499918..f85ed99 100644
--- a/src/pkg/exp/sql/convert_test.go
+++ b/src/pkg/exp/sql/convert_test.go
@@ -68,7 +68,7 @@
err := convertAssign(ct.d, ct.s)
errstr := ""
if err != nil {
- errstr = err.String()
+ errstr = err.Error()
}
errf := func(format string, args ...interface{}) {
base := fmt.Sprintf("convertAssign #%d: for %v (%T) -> %T, ", n, ct.s, ct.s, ct.d)
diff --git a/src/pkg/exp/sql/driver/driver.go b/src/pkg/exp/sql/driver/driver.go
index 7508b19..52714e8 100644
--- a/src/pkg/exp/sql/driver/driver.go
+++ b/src/pkg/exp/sql/driver/driver.go
@@ -19,9 +19,7 @@
//
package driver
-import (
- "os"
-)
+import "errors"
// Driver is the interface that must be implemented by a database
// driver.
@@ -31,7 +29,7 @@
//
// The returned connection is only used by one goroutine at a
// time.
- Open(name string) (Conn, os.Error)
+ Open(name string) (Conn, error)
}
// Execer is an optional interface that may be implemented by a Driver
@@ -48,7 +46,7 @@
//
// All arguments are of a subset type as defined in the package docs.
type Execer interface {
- Exec(query string, args []interface{}) (Result, os.Error)
+ Exec(query string, args []interface{}) (Result, error)
}
// Conn is a connection to a database. It is not used concurrently
@@ -57,16 +55,16 @@
// Conn is assumed to be stateful.
type Conn interface {
// Prepare returns a prepared statement, bound to this connection.
- Prepare(query string) (Stmt, os.Error)
+ Prepare(query string) (Stmt, error)
// Close invalidates and potentially stops any current
// prepared statements and transactions, marking this
// connection as no longer in use. The driver may cache or
// close its underlying connection to its database.
- Close() os.Error
+ Close() error
// Begin starts and returns a new transaction.
- Begin() (Tx, os.Error)
+ Begin() (Tx, error)
}
// Result is the result of a query execution.
@@ -74,18 +72,18 @@
// LastInsertId returns the database's auto-generated ID
// after, for example, an INSERT into a table with primary
// key.
- LastInsertId() (int64, os.Error)
+ LastInsertId() (int64, error)
// RowsAffected returns the number of rows affected by the
// query.
- RowsAffected() (int64, os.Error)
+ RowsAffected() (int64, error)
}
// Stmt is a prepared statement. It is bound to a Conn and not
// used by multiple goroutines concurrently.
type Stmt interface {
// Close closes the statement.
- Close() os.Error
+ Close() error
// NumInput returns the number of placeholder parameters.
NumInput() int
@@ -93,11 +91,11 @@
// Exec executes a query that doesn't return rows, such
// as an INSERT or UPDATE. The args are all of a subset
// type as defined above.
- Exec(args []interface{}) (Result, os.Error)
+ Exec(args []interface{}) (Result, error)
// Exec executes a query that may return rows, such as a
// SELECT. The args of all of a subset type as defined above.
- Query(args []interface{}) (Rows, os.Error)
+ Query(args []interface{}) (Rows, error)
}
// ColumnConverter may be optionally implemented by Stmt if the
@@ -120,7 +118,7 @@
Columns() []string
// Close closes the rows iterator.
- Close() os.Error
+ Close() error
// Next is called to populate the next row of data into
// the provided slice. The provided slice will be the same
@@ -129,13 +127,13 @@
// The dest slice may be populated with only with values
// of subset types defined above, but excluding string.
// All string values must be converted to []byte.
- Next(dest []interface{}) os.Error
+ Next(dest []interface{}) error
}
// Tx is a transaction.
type Tx interface {
- Commit() os.Error
- Rollback() os.Error
+ Commit() error
+ Rollback() error
}
// RowsAffected implements Result for an INSERT or UPDATE operation
@@ -144,11 +142,11 @@
var _ Result = RowsAffected(0)
-func (RowsAffected) LastInsertId() (int64, os.Error) {
- return 0, os.NewError("no LastInsertId available")
+func (RowsAffected) LastInsertId() (int64, error) {
+ return 0, errors.New("no LastInsertId available")
}
-func (v RowsAffected) RowsAffected() (int64, os.Error) {
+func (v RowsAffected) RowsAffected() (int64, error) {
return int64(v), nil
}
@@ -160,10 +158,10 @@
var _ Result = ddlSuccess{}
-func (ddlSuccess) LastInsertId() (int64, os.Error) {
- return 0, os.NewError("no LastInsertId available after DDL statement")
+func (ddlSuccess) LastInsertId() (int64, error) {
+ return 0, errors.New("no LastInsertId available after DDL statement")
}
-func (ddlSuccess) RowsAffected() (int64, os.Error) {
- return 0, os.NewError("no RowsAffected available after DDL statement")
+func (ddlSuccess) RowsAffected() (int64, error) {
+ return 0, errors.New("no RowsAffected available after DDL statement")
}
diff --git a/src/pkg/exp/sql/driver/types.go b/src/pkg/exp/sql/driver/types.go
index 5521d53..9faf32f 100644
--- a/src/pkg/exp/sql/driver/types.go
+++ b/src/pkg/exp/sql/driver/types.go
@@ -6,7 +6,6 @@
import (
"fmt"
- "os"
"reflect"
"strconv"
)
@@ -14,7 +13,7 @@
// ValueConverter is the interface providing the ConvertValue method.
type ValueConverter interface {
// ConvertValue converts a value to a restricted subset type.
- ConvertValue(v interface{}) (interface{}, os.Error)
+ ConvertValue(v interface{}) (interface{}, error)
}
// Bool is a ValueConverter that converts input values to bools.
@@ -27,7 +26,7 @@
var _ ValueConverter = boolType{}
-func (boolType) ConvertValue(v interface{}) (interface{}, os.Error) {
+func (boolType) ConvertValue(v interface{}) (interface{}, error) {
return nil, fmt.Errorf("TODO(bradfitz): bool conversions")
}
@@ -39,7 +38,7 @@
var _ ValueConverter = int32Type{}
-func (int32Type) ConvertValue(v interface{}) (interface{}, os.Error) {
+func (int32Type) ConvertValue(v interface{}) (interface{}, error) {
rv := reflect.ValueOf(v)
switch rv.Kind() {
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
@@ -72,7 +71,7 @@
type stringType struct{}
-func (stringType) ConvertValue(v interface{}) (interface{}, os.Error) {
+func (stringType) ConvertValue(v interface{}) (interface{}, error) {
switch v.(type) {
case string, []byte:
return v, nil
@@ -137,7 +136,7 @@
var _ ValueConverter = defaultConverter{}
-func (defaultConverter) ConvertValue(v interface{}) (interface{}, os.Error) {
+func (defaultConverter) ConvertValue(v interface{}) (interface{}, error) {
if IsParameterSubsetType(v) {
return v, nil
}
diff --git a/src/pkg/exp/sql/fakedb_test.go b/src/pkg/exp/sql/fakedb_test.go
index c906185..289294b 100644
--- a/src/pkg/exp/sql/fakedb_test.go
+++ b/src/pkg/exp/sql/fakedb_test.go
@@ -5,9 +5,10 @@
package sql
import (
+ "errors"
"fmt"
+ "io"
"log"
- "os"
"strconv"
"strings"
"sync"
@@ -108,7 +109,7 @@
// Supports dsn forms:
// <dbname>
// <dbname>;wipe
-func (d *fakeDriver) Open(dsn string) (driver.Conn, os.Error) {
+func (d *fakeDriver) Open(dsn string) (driver.Conn, error) {
d.mu.Lock()
defer d.mu.Unlock()
d.openCount++
@@ -117,7 +118,7 @@
}
parts := strings.Split(dsn, ";")
if len(parts) < 1 {
- return nil, os.NewError("fakedb: no database name")
+ return nil, errors.New("fakedb: no database name")
}
name := parts[0]
db, ok := d.dbs[name]
@@ -134,7 +135,7 @@
db.tables = nil
}
-func (db *fakeDB) createTable(name string, columnNames, columnTypes []string) os.Error {
+func (db *fakeDB) createTable(name string, columnNames, columnTypes []string) error {
db.mu.Lock()
defer db.mu.Unlock()
if db.tables == nil {
@@ -175,33 +176,33 @@
return "", false
}
-func (c *fakeConn) Begin() (driver.Tx, os.Error) {
+func (c *fakeConn) Begin() (driver.Tx, error) {
if c.currTx != nil {
- return nil, os.NewError("already in a transaction")
+ return nil, errors.New("already in a transaction")
}
c.currTx = &fakeTx{c: c}
return c.currTx, nil
}
-func (c *fakeConn) Close() os.Error {
+func (c *fakeConn) Close() error {
if c.currTx != nil {
- return os.NewError("can't close; in a Transaction")
+ return errors.New("can't close; in a Transaction")
}
if c.db == nil {
- return os.NewError("can't close; already closed")
+ return errors.New("can't close; already closed")
}
c.db = nil
return nil
}
-func errf(msg string, args ...interface{}) os.Error {
- return os.NewError("fakedb: " + fmt.Sprintf(msg, args...))
+func errf(msg string, args ...interface{}) error {
+ return errors.New("fakedb: " + fmt.Sprintf(msg, args...))
}
// parts are table|selectCol1,selectCol2|whereCol=?,whereCol2=?
// (note that where where columns must always contain ? marks,
// just a limitation for fakedb)
-func (c *fakeConn) prepareSelect(stmt *fakeStmt, parts []string) (driver.Stmt, os.Error) {
+func (c *fakeConn) prepareSelect(stmt *fakeStmt, parts []string) (driver.Stmt, error) {
if len(parts) != 3 {
return nil, errf("invalid SELECT syntax with %d parts; want 3", len(parts))
}
@@ -228,7 +229,7 @@
}
// parts are table|col=type,col2=type2
-func (c *fakeConn) prepareCreate(stmt *fakeStmt, parts []string) (driver.Stmt, os.Error) {
+func (c *fakeConn) prepareCreate(stmt *fakeStmt, parts []string) (driver.Stmt, error) {
if len(parts) != 2 {
return nil, errf("invalid CREATE syntax with %d parts; want 2", len(parts))
}
@@ -245,7 +246,7 @@
}
// parts are table|col=?,col2=val
-func (c *fakeConn) prepareInsert(stmt *fakeStmt, parts []string) (driver.Stmt, os.Error) {
+func (c *fakeConn) prepareInsert(stmt *fakeStmt, parts []string) (driver.Stmt, error) {
if len(parts) != 2 {
return nil, errf("invalid INSERT syntax with %d parts; want 2", len(parts))
}
@@ -287,7 +288,7 @@
return stmt, nil
}
-func (c *fakeConn) Prepare(query string) (driver.Stmt, os.Error) {
+func (c *fakeConn) Prepare(query string) (driver.Stmt, error) {
if c.db == nil {
panic("nil c.db; conn = " + fmt.Sprintf("%#v", c))
}
@@ -317,11 +318,11 @@
return s.placeholderConverter[idx]
}
-func (s *fakeStmt) Close() os.Error {
+func (s *fakeStmt) Close() error {
return nil
}
-func (s *fakeStmt) Exec(args []interface{}) (driver.Result, os.Error) {
+func (s *fakeStmt) Exec(args []interface{}) (driver.Result, error) {
db := s.c.db
switch s.cmd {
case "WIPE":
@@ -339,7 +340,7 @@
return nil, fmt.Errorf("unimplemented statement Exec command type of %q", s.cmd)
}
-func (s *fakeStmt) execInsert(args []interface{}) (driver.Result, os.Error) {
+func (s *fakeStmt) execInsert(args []interface{}) (driver.Result, error) {
db := s.c.db
if len(args) != s.placeholders {
panic("error in pkg db; should only get here if size is correct")
@@ -375,7 +376,7 @@
return driver.RowsAffected(1), nil
}
-func (s *fakeStmt) Query(args []interface{}) (driver.Rows, os.Error) {
+func (s *fakeStmt) Query(args []interface{}) (driver.Rows, error) {
db := s.c.db
if len(args) != s.placeholders {
panic("error in pkg db; should only get here if size is correct")
@@ -438,12 +439,12 @@
return s.placeholders
}
-func (tx *fakeTx) Commit() os.Error {
+func (tx *fakeTx) Commit() error {
tx.c.currTx = nil
return nil
}
-func (tx *fakeTx) Rollback() os.Error {
+func (tx *fakeTx) Rollback() error {
tx.c.currTx = nil
return nil
}
@@ -455,7 +456,7 @@
closed bool
}
-func (rc *rowsCursor) Close() os.Error {
+func (rc *rowsCursor) Close() error {
rc.closed = true
return nil
}
@@ -464,13 +465,13 @@
return rc.cols
}
-func (rc *rowsCursor) Next(dest []interface{}) os.Error {
+func (rc *rowsCursor) Next(dest []interface{}) error {
if rc.closed {
- return os.NewError("fakedb: cursor is closed")
+ return errors.New("fakedb: cursor is closed")
}
rc.pos++
if rc.pos >= len(rc.rows) {
- return os.EOF // per interface spec
+ return io.EOF // per interface spec
}
for i, v := range rc.rows[rc.pos].cols {
// TODO(bradfitz): convert to subset types? naah, I
diff --git a/src/pkg/exp/sql/sql.go b/src/pkg/exp/sql/sql.go
index 7f0e0b2..4f1c539 100644
--- a/src/pkg/exp/sql/sql.go
+++ b/src/pkg/exp/sql/sql.go
@@ -7,8 +7,9 @@
package sql
import (
+ "errors"
"fmt"
- "os"
+ "io"
"runtime"
"sync"
@@ -50,7 +51,7 @@
}
// ScanInto implements the ScannerInto interface.
-func (ms *NullableString) ScanInto(value interface{}) os.Error {
+func (ms *NullableString) ScanInto(value interface{}) error {
if value == nil {
ms.String, ms.Valid = "", false
return nil
@@ -74,13 +75,13 @@
//
// An error should be returned if the value can not be stored
// without loss of information.
- ScanInto(value interface{}) os.Error
+ ScanInto(value interface{}) error
}
// ErrNoRows is returned by Scan when QueryRow doesn't return a
// row. In such a case, QueryRow returns a placeholder *Row value that
// defers this error until a Scan.
-var ErrNoRows = os.NewError("db: no rows in result set")
+var ErrNoRows = errors.New("db: no rows in result set")
// DB is a database handle. It's safe for concurrent use by multiple
// goroutines.
@@ -98,7 +99,7 @@
//
// Most users will open a database via a driver-specific connection
// helper function that returns a *DB.
-func Open(driverName, dataSourceName string) (*DB, os.Error) {
+func Open(driverName, dataSourceName string) (*DB, error) {
driver, ok := drivers[driverName]
if !ok {
return nil, fmt.Errorf("db: unknown driver %q (forgotten import?)", driverName)
@@ -114,7 +115,7 @@
}
// conn returns a newly-opened or cached driver.Conn
-func (db *DB) conn() (driver.Conn, os.Error) {
+func (db *DB) conn() (driver.Conn, error) {
db.mu.Lock()
if n := len(db.freeConn); n > 0 {
conn := db.freeConn[n-1]
@@ -154,7 +155,7 @@
}
// Prepare creates a prepared statement for later execution.
-func (db *DB) Prepare(query string) (*Stmt, os.Error) {
+func (db *DB) Prepare(query string) (*Stmt, error) {
// TODO: check if db.driver supports an optional
// driver.Preparer interface and call that instead, if so,
// otherwise we make a prepared statement that's bound
@@ -179,7 +180,7 @@
}
// Exec executes a query without returning any rows.
-func (db *DB) Exec(query string, args ...interface{}) (Result, os.Error) {
+func (db *DB) Exec(query string, args ...interface{}) (Result, error) {
// Optional fast path, if the driver implements driver.Execer.
if execer, ok := db.driver.(driver.Execer); ok {
resi, err := execer.Exec(query, args)
@@ -218,7 +219,7 @@
}
// Query executes a query that returns rows, typically a SELECT.
-func (db *DB) Query(query string, args ...interface{}) (*Rows, os.Error) {
+func (db *DB) Query(query string, args ...interface{}) (*Rows, error) {
stmt, err := db.Prepare(query)
if err != nil {
return nil, err
@@ -240,7 +241,7 @@
// Begin starts a transaction. The isolation level is dependent on
// the driver.
-func (db *DB) Begin() (*Tx, os.Error) {
+func (db *DB) Begin() (*Tx, error) {
// TODO(bradfitz): add another method for beginning a transaction
// at a specific isolation level.
panic(todo())
@@ -257,17 +258,17 @@
}
// Commit commits the transaction.
-func (tx *Tx) Commit() os.Error {
+func (tx *Tx) Commit() error {
panic(todo())
}
// Rollback aborts the transaction.
-func (tx *Tx) Rollback() os.Error {
+func (tx *Tx) Rollback() error {
panic(todo())
}
// Prepare creates a prepared statement.
-func (tx *Tx) Prepare(query string) (*Stmt, os.Error) {
+func (tx *Tx) Prepare(query string) (*Stmt, error) {
panic(todo())
}
@@ -278,7 +279,7 @@
}
// Query executes a query that returns rows, typically a SELECT.
-func (tx *Tx) Query(query string, args ...interface{}) (*Rows, os.Error) {
+func (tx *Tx) Query(query string, args ...interface{}) (*Rows, error) {
panic(todo())
}
@@ -313,7 +314,7 @@
// Exec executes a prepared statement with the given arguments and
// returns a Result summarizing the effect of the statement.
-func (s *Stmt) Exec(args ...interface{}) (Result, os.Error) {
+func (s *Stmt) Exec(args ...interface{}) (Result, error) {
ci, si, err := s.connStmt()
if err != nil {
return nil, err
@@ -352,10 +353,10 @@
return result{resi}, nil
}
-func (s *Stmt) connStmt(args ...interface{}) (driver.Conn, driver.Stmt, os.Error) {
+func (s *Stmt) connStmt(args ...interface{}) (driver.Conn, driver.Stmt, error) {
s.mu.Lock()
if s.closed {
- return nil, nil, os.NewError("db: statement is closed")
+ return nil, nil, errors.New("db: statement is closed")
}
var cs connStmt
match := false
@@ -391,7 +392,7 @@
// Query executes a prepared query statement with the given arguments
// and returns the query results as a *Rows.
-func (s *Stmt) Query(args ...interface{}) (*Rows, os.Error) {
+func (s *Stmt) Query(args ...interface{}) (*Rows, error) {
ci, si, err := s.connStmt(args...)
if err != nil {
return nil, err
@@ -433,7 +434,7 @@
}
// Close closes the statement.
-func (s *Stmt) Close() os.Error {
+func (s *Stmt) Close() error {
s.mu.Lock()
defer s.mu.Unlock() // TODO(bradfitz): move this unlock after 'closed = true'?
if s.closed {
@@ -473,7 +474,7 @@
closed bool
lastcols []interface{}
- lasterr os.Error
+ lasterr error
}
// Next prepares the next result row for reading with the Scan method.
@@ -495,8 +496,8 @@
}
// Error returns the error, if any, that was encountered during iteration.
-func (rs *Rows) Error() os.Error {
- if rs.lasterr == os.EOF {
+func (rs *Rows) Error() error {
+ if rs.lasterr == io.EOF {
return nil
}
return rs.lasterr
@@ -506,15 +507,15 @@
// at by dest. If dest contains pointers to []byte, the slices should
// not be modified and should only be considered valid until the next
// call to Next or Scan.
-func (rs *Rows) Scan(dest ...interface{}) os.Error {
+func (rs *Rows) Scan(dest ...interface{}) error {
if rs.closed {
- return os.NewError("db: Rows closed")
+ return errors.New("db: Rows closed")
}
if rs.lasterr != nil {
return rs.lasterr
}
if rs.lastcols == nil {
- return os.NewError("db: Scan called without calling Next")
+ return errors.New("db: Scan called without calling Next")
}
if len(dest) != len(rs.lastcols) {
return fmt.Errorf("db: expected %d destination arguments in Scan, not %d", len(rs.lastcols), len(dest))
@@ -531,7 +532,7 @@
// Close closes the Rows, preventing further enumeration. If the
// end is encountered, the Rows are closed automatically. Close
// is idempotent.
-func (rs *Rows) Close() os.Error {
+func (rs *Rows) Close() error {
if rs.closed {
return nil
}
@@ -544,7 +545,7 @@
// Row is the result of calling QueryRow to select a single row.
type Row struct {
// One of these two will be non-nil:
- err os.Error // deferred error for easy chaining
+ err error // deferred error for easy chaining
rows *Rows
}
@@ -556,7 +557,7 @@
// If dest contains pointers to []byte, the slices should not be
// modified and should only be considered valid until the next call to
// Next or Scan.
-func (r *Row) Scan(dest ...interface{}) os.Error {
+func (r *Row) Scan(dest ...interface{}) error {
if r.err != nil {
return r.err
}
@@ -569,8 +570,8 @@
// A Result summarizes an executed SQL command.
type Result interface {
- LastInsertId() (int64, os.Error)
- RowsAffected() (int64, os.Error)
+ LastInsertId() (int64, error)
+ RowsAffected() (int64, error)
}
type result struct {
diff --git a/src/pkg/exp/sql/sql_test.go b/src/pkg/exp/sql/sql_test.go
index eaa0a90..eb1bb58 100644
--- a/src/pkg/exp/sql/sql_test.go
+++ b/src/pkg/exp/sql/sql_test.go
@@ -40,7 +40,7 @@
var age int
err := db.QueryRow("SELECT|people|age,name|age=?", 3).Scan(&age)
- if err == nil || !strings.Contains(err.String(), "expected 2 destination arguments") {
+ if err == nil || !strings.Contains(err.Error(), "expected 2 destination arguments") {
t.Errorf("expected error from wrong number of arguments; actually got: %v", err)
}
@@ -99,7 +99,7 @@
if err == nil {
t.Fatalf("expected error")
}
- if err.String() != `fakedb: invalid conversion to int32 from "bogusconversion"` {
+ if err.Error() != `fakedb: invalid conversion to int32 from "bogusconversion"` {
t.Errorf("unexpected error: %v", err)
}
}
@@ -135,7 +135,7 @@
_, err := stmt.Exec(et.args...)
errStr := ""
if err != nil {
- errStr = err.String()
+ errStr = err.Error()
}
if errStr != et.wantErr {
t.Errorf("stmt.Execute #%d: for %v, got error %q, want error %q",
diff --git a/src/pkg/exp/ssh/channel.go b/src/pkg/exp/ssh/channel.go
index f69b735..428e71c 100644
--- a/src/pkg/exp/ssh/channel.go
+++ b/src/pkg/exp/ssh/channel.go
@@ -5,7 +5,8 @@
package ssh
import (
- "os"
+ "errors"
+ "io"
"sync"
)
@@ -13,19 +14,19 @@
// SSH connection.
type Channel interface {
// Accept accepts the channel creation request.
- Accept() os.Error
+ Accept() error
// Reject rejects the channel creation request. After calling this, no
// other methods on the Channel may be called. If they are then the
// peer is likely to signal a protocol error and drop the connection.
- Reject(reason RejectionReason, message string) os.Error
+ Reject(reason RejectionReason, message string) error
// Read may return a ChannelRequest as an os.Error.
- Read(data []byte) (int, os.Error)
- Write(data []byte) (int, os.Error)
- Close() os.Error
+ Read(data []byte) (int, error)
+ Write(data []byte) (int, error)
+ Close() error
// AckRequest either sends an ack or nack to the channel request.
- AckRequest(ok bool) os.Error
+ AckRequest(ok bool) error
// ChannelType returns the type of the channel, as supplied by the
// client.
@@ -43,7 +44,7 @@
Payload []byte
}
-func (c ChannelRequest) String() string {
+func (c ChannelRequest) Error() string {
return "channel request received"
}
@@ -72,7 +73,7 @@
myId, theirId uint32
myWindow, theirWindow uint32
maxPacketSize uint32
- err os.Error
+ err error
pendingRequests []ChannelRequest
pendingData []byte
@@ -83,7 +84,7 @@
cond *sync.Cond
}
-func (c *channel) Accept() os.Error {
+func (c *channel) Accept() error {
c.serverConn.lock.Lock()
defer c.serverConn.lock.Unlock()
@@ -100,7 +101,7 @@
return c.serverConn.writePacket(marshal(msgChannelOpenConfirm, confirm))
}
-func (c *channel) Reject(reason RejectionReason, message string) os.Error {
+func (c *channel) Reject(reason RejectionReason, message string) error {
c.serverConn.lock.Lock()
defer c.serverConn.lock.Unlock()
@@ -167,7 +168,7 @@
c.cond.Signal()
}
-func (c *channel) Read(data []byte) (n int, err os.Error) {
+func (c *channel) Read(data []byte) (n int, err error) {
c.lock.Lock()
defer c.lock.Unlock()
@@ -187,7 +188,7 @@
for {
if c.theySentEOF || c.theyClosed || c.dead {
- return 0, os.EOF
+ return 0, io.EOF
}
if len(c.pendingRequests) > 0 {
@@ -223,11 +224,11 @@
panic("unreachable")
}
-func (c *channel) Write(data []byte) (n int, err os.Error) {
+func (c *channel) Write(data []byte) (n int, err error) {
for len(data) > 0 {
c.lock.Lock()
if c.dead || c.weClosed {
- return 0, os.EOF
+ return 0, io.EOF
}
if c.theirWindow == 0 {
@@ -267,7 +268,7 @@
return
}
-func (c *channel) Close() os.Error {
+func (c *channel) Close() error {
c.serverConn.lock.Lock()
defer c.serverConn.lock.Unlock()
@@ -276,7 +277,7 @@
}
if c.weClosed {
- return os.NewError("ssh: channel already closed")
+ return errors.New("ssh: channel already closed")
}
c.weClosed = true
@@ -286,7 +287,7 @@
return c.serverConn.writePacket(marshal(msgChannelClose, closeMsg))
}
-func (c *channel) AckRequest(ok bool) os.Error {
+func (c *channel) AckRequest(ok bool) error {
c.serverConn.lock.Lock()
defer c.serverConn.lock.Unlock()
diff --git a/src/pkg/exp/ssh/client.go b/src/pkg/exp/ssh/client.go
index fe76db1..345e707 100644
--- a/src/pkg/exp/ssh/client.go
+++ b/src/pkg/exp/ssh/client.go
@@ -8,9 +8,9 @@
"big"
"crypto"
"crypto/rand"
+ "errors"
"fmt"
"io"
- "os"
"net"
"sync"
)
@@ -26,7 +26,7 @@
}
// Client returns a new SSH client connection using c as the underlying transport.
-func Client(c net.Conn, config *ClientConfig) (*ClientConn, os.Error) {
+func Client(c net.Conn, config *ClientConfig) (*ClientConn, error) {
conn := &ClientConn{
transport: newTransport(c, config.rand()),
config: config,
@@ -44,7 +44,7 @@
}
// handshake performs the client side key exchange. See RFC 4253 Section 7.
-func (c *ClientConn) handshake() os.Error {
+func (c *ClientConn) handshake() error {
var magics handshakeMagics
if _, err := c.Write(clientVersion); err != nil {
@@ -91,7 +91,7 @@
kexAlgo, hostKeyAlgo, ok := findAgreedAlgorithms(c.transport, &clientKexInit, &serverKexInit)
if !ok {
- return os.NewError("ssh: no common algorithms")
+ return errors.New("ssh: no common algorithms")
}
if serverKexInit.FirstKexFollows && kexAlgo != serverKexInit.KexAlgos[0] {
@@ -133,7 +133,7 @@
// authenticate authenticates with the remote server. See RFC 4252.
// Only "password" authentication is supported.
-func (c *ClientConn) authenticate() os.Error {
+func (c *ClientConn) authenticate() error {
if err := c.writePacket(marshal(msgServiceRequest, serviceRequestMsg{serviceUserAuth})); err != nil {
return err
}
@@ -166,7 +166,7 @@
return nil
}
-func (c *ClientConn) sendUserAuthReq(method string) os.Error {
+func (c *ClientConn) sendUserAuthReq(method string) error {
length := stringLength([]byte(c.config.Password)) + 1
payload := make([]byte, length)
// always false for password auth, see RFC 4252 Section 8.
@@ -183,7 +183,7 @@
// kexDH performs Diffie-Hellman key agreement on a ClientConn. The
// returned values are given the same names as in RFC 4253, section 8.
-func (c *ClientConn) kexDH(group *dhGroup, hashFunc crypto.Hash, magics *handshakeMagics, hostKeyAlgo string) ([]byte, []byte, os.Error) {
+func (c *ClientConn) kexDH(group *dhGroup, hashFunc crypto.Hash, magics *handshakeMagics, hostKeyAlgo string) ([]byte, []byte, error) {
x, err := rand.Int(c.config.rand(), group.p)
if err != nil {
return nil, nil, err
@@ -207,7 +207,7 @@
}
if kexDHReply.Y.Sign() == 0 || kexDHReply.Y.Cmp(group.p) >= 0 {
- return nil, nil, os.NewError("server DH parameter out of bounds")
+ return nil, nil, errors.New("server DH parameter out of bounds")
}
kInt := new(big.Int).Exp(kexDHReply.Y, x, group.p)
@@ -230,7 +230,7 @@
// openChan opens a new client channel. The most common session type is "session".
// The full set of valid session types are listed in RFC 4250 4.9.1.
-func (c *ClientConn) openChan(typ string) (*clientChan, os.Error) {
+func (c *ClientConn) openChan(typ string) (*clientChan, error) {
ch := c.newChan(c.transport)
if err := c.writePacket(marshal(msgChannelOpen, channelOpenMsg{
ChanType: typ,
@@ -247,10 +247,10 @@
ch.peersId = msg.MyId
case *channelOpenFailureMsg:
c.chanlist.remove(ch.id)
- return nil, os.NewError(msg.Message)
+ return nil, errors.New(msg.Message)
default:
c.chanlist.remove(ch.id)
- return nil, os.NewError("Unexpected packet")
+ return nil, errors.New("Unexpected packet")
}
return ch, nil
}
@@ -329,7 +329,7 @@
// Dial connects to the given network address using net.Dial and
// then initiates a SSH handshake, returning the resulting client connection.
-func Dial(network, addr string, config *ClientConfig) (*ClientConn, os.Error) {
+func Dial(network, addr string, config *ClientConfig) (*ClientConn, error) {
conn, err := net.Dial(network, addr)
if err != nil {
return nil, err
@@ -382,13 +382,13 @@
}
// Close closes the channel. This does not close the underlying connection.
-func (c *clientChan) Close() os.Error {
+func (c *clientChan) Close() error {
return c.writePacket(marshal(msgChannelClose, channelCloseMsg{
PeersId: c.id,
}))
}
-func (c *clientChan) sendChanReq(req channelRequestMsg) os.Error {
+func (c *clientChan) sendChanReq(req channelRequestMsg) error {
if err := c.writePacket(marshal(msgChannelRequest, req)); err != nil {
return err
}
@@ -447,12 +447,12 @@
}
// Write writes data to the remote process's standard input.
-func (w *chanWriter) Write(data []byte) (n int, err os.Error) {
+func (w *chanWriter) Write(data []byte) (n int, err error) {
for {
if w.rwin == 0 {
win, ok := <-w.win
if !ok {
- return 0, os.EOF
+ return 0, io.EOF
}
w.rwin += win
continue
@@ -469,7 +469,7 @@
panic("unreachable")
}
-func (w *chanWriter) Close() os.Error {
+func (w *chanWriter) Close() error {
return w.writePacket(marshal(msgChannelEOF, channelEOFMsg{w.id}))
}
@@ -485,7 +485,7 @@
}
// Read reads data from the remote process's stdout or stderr.
-func (r *chanReader) Read(data []byte) (int, os.Error) {
+func (r *chanReader) Read(data []byte) (int, error) {
var ok bool
for {
if len(r.buf) > 0 {
@@ -499,12 +499,12 @@
}
r.buf, ok = <-r.data
if !ok {
- return 0, os.EOF
+ return 0, io.EOF
}
}
panic("unreachable")
}
-func (r *chanReader) Close() os.Error {
+func (r *chanReader) Close() error {
return r.writePacket(marshal(msgChannelEOF, channelEOFMsg{r.id}))
}
diff --git a/src/pkg/exp/ssh/common.go b/src/pkg/exp/ssh/common.go
index 739bd2f..f68c353 100644
--- a/src/pkg/exp/ssh/common.go
+++ b/src/pkg/exp/ssh/common.go
@@ -53,7 +53,7 @@
expected, got uint8
}
-func (u UnexpectedMessageError) String() string {
+func (u UnexpectedMessageError) Error() string {
return "ssh: unexpected message type " + strconv.Itoa(int(u.got)) + " (expected " + strconv.Itoa(int(u.expected)) + ")"
}
@@ -62,7 +62,7 @@
msgType uint8
}
-func (p ParseError) String() string {
+func (p ParseError) Error() string {
return "ssh: parse error in message type " + strconv.Itoa(int(p.msgType))
}
diff --git a/src/pkg/exp/ssh/messages.go b/src/pkg/exp/ssh/messages.go
index 5f2c447..5eae181 100644
--- a/src/pkg/exp/ssh/messages.go
+++ b/src/pkg/exp/ssh/messages.go
@@ -8,7 +8,6 @@
"big"
"bytes"
"io"
- "os"
"reflect"
)
@@ -192,7 +191,7 @@
// unmarshal parses the SSH wire data in packet into out using reflection.
// expectedType is the expected SSH message type. It either returns nil on
// success, or a ParseError or UnexpectedMessageError on error.
-func unmarshal(out interface{}, packet []byte, expectedType uint8) os.Error {
+func unmarshal(out interface{}, packet []byte, expectedType uint8) error {
if len(packet) == 0 {
return ParseError{expectedType}
}
diff --git a/src/pkg/exp/ssh/server.go b/src/pkg/exp/ssh/server.go
index 0dd24ec..2ae8079 100644
--- a/src/pkg/exp/ssh/server.go
+++ b/src/pkg/exp/ssh/server.go
@@ -12,9 +12,9 @@
"crypto/rsa"
"crypto/x509"
"encoding/pem"
+ "errors"
"io"
"net"
- "os"
"sync"
)
@@ -53,12 +53,12 @@
// private key configured in order to accept connections. The private key must
// be in the form of a PEM encoded, PKCS#1, RSA private key. The file "id_rsa"
// typically contains such a key.
-func (s *ServerConfig) SetRSAPrivateKey(pemBytes []byte) os.Error {
+func (s *ServerConfig) SetRSAPrivateKey(pemBytes []byte) error {
block, _ := pem.Decode(pemBytes)
if block == nil {
- return os.NewError("ssh: no key found")
+ return errors.New("ssh: no key found")
}
- var err os.Error
+ var err error
s.rsa, err = x509.ParsePKCS1PrivateKey(block.Bytes)
if err != nil {
return err
@@ -140,7 +140,7 @@
// lock protects err and also allows Channels to serialise their writes
// to out.
lock sync.RWMutex
- err os.Error
+ err error
// cachedPubKeys contains the cache results of tests for public keys.
// Since SSH clients will query whether a public key is acceptable
@@ -162,7 +162,7 @@
// kexDH performs Diffie-Hellman key agreement on a ServerConnection. The
// returned values are given the same names as in RFC 4253, section 8.
-func (s *ServerConn) kexDH(group *dhGroup, hashFunc crypto.Hash, magics *handshakeMagics, hostKeyAlgo string) (H, K []byte, err os.Error) {
+func (s *ServerConn) kexDH(group *dhGroup, hashFunc crypto.Hash, magics *handshakeMagics, hostKeyAlgo string) (H, K []byte, err error) {
packet, err := s.readPacket()
if err != nil {
return
@@ -173,7 +173,7 @@
}
if kexDHInit.X.Sign() == 0 || kexDHInit.X.Cmp(group.p) >= 0 {
- return nil, nil, os.NewError("client DH parameter out of bounds")
+ return nil, nil, errors.New("client DH parameter out of bounds")
}
y, err := rand.Int(s.config.rand(), group.p)
@@ -189,7 +189,7 @@
case hostAlgoRSA:
serializedHostKey = s.config.rsaSerialized
default:
- return nil, nil, os.NewError("internal error")
+ return nil, nil, errors.New("internal error")
}
h := hashFunc.New()
@@ -218,7 +218,7 @@
return
}
default:
- return nil, nil, os.NewError("internal error")
+ return nil, nil, errors.New("internal error")
}
serializedSig := serializeRSASignature(sig)
@@ -279,7 +279,7 @@
}
// Handshake performs an SSH transport and client authentication on the given ServerConn.
-func (s *ServerConn) Handshake() os.Error {
+func (s *ServerConn) Handshake() error {
var magics handshakeMagics
if _, err := s.Write(serverVersion); err != nil {
return err
@@ -326,7 +326,7 @@
kexAlgo, hostKeyAlgo, ok := findAgreedAlgorithms(s.transport, &clientKexInit, &serverKexInit)
if !ok {
- return os.NewError("ssh: no common algorithms")
+ return errors.New("ssh: no common algorithms")
}
if clientKexInit.FirstKexFollows && kexAlgo != clientKexInit.KexAlgos[0] {
@@ -345,7 +345,7 @@
dhGroup14Once.Do(initDHGroup14)
H, K, err = s.kexDH(dhGroup14, hashFunc, &magics, hostKeyAlgo)
default:
- err = os.NewError("ssh: unexpected key exchange algorithm " + kexAlgo)
+ err = errors.New("ssh: unexpected key exchange algorithm " + kexAlgo)
}
if err != nil {
return err
@@ -374,7 +374,7 @@
return err
}
if serviceRequest.Service != serviceUserAuth {
- return os.NewError("ssh: requested service '" + serviceRequest.Service + "' before authenticating")
+ return errors.New("ssh: requested service '" + serviceRequest.Service + "' before authenticating")
}
serviceAccept := serviceAcceptMsg{
Service: serviceUserAuth,
@@ -420,9 +420,9 @@
return result
}
-func (s *ServerConn) authenticate(H []byte) os.Error {
+func (s *ServerConn) authenticate(H []byte) error {
var userAuthReq userAuthRequestMsg
- var err os.Error
+ var err error
var packet []byte
userAuthLoop:
@@ -435,7 +435,7 @@
}
if userAuthReq.Service != serviceSSH {
- return os.NewError("ssh: client attempted to negotiate for unknown service: " + userAuthReq.Service)
+ return errors.New("ssh: client attempted to negotiate for unknown service: " + userAuthReq.Service)
}
switch userAuthReq.Method {
@@ -523,7 +523,7 @@
return ParseError{msgUserAuthRequest}
}
default:
- return os.NewError("ssh: isAcceptableAlgo incorrect")
+ return errors.New("ssh: isAcceptableAlgo incorrect")
}
if s.testPubKey(userAuthReq.User, algo, pubKey) {
break userAuthLoop
@@ -540,7 +540,7 @@
}
if len(failureMsg.Methods) == 0 {
- return os.NewError("ssh: no authentication methods configured but NoClientAuth is also false")
+ return errors.New("ssh: no authentication methods configured but NoClientAuth is also false")
}
if err = s.writePacket(marshal(msgUserAuthFailure, failureMsg)); err != nil {
@@ -560,7 +560,7 @@
// Accept reads and processes messages on a ServerConn. It must be called
// in order to demultiplex messages to any resulting Channels.
-func (s *ServerConn) Accept() (Channel, os.Error) {
+func (s *ServerConn) Accept() (Channel, error) {
if s.err != nil {
return nil, s.err
}
@@ -660,7 +660,7 @@
case UnexpectedMessageError:
return nil, msg
case *disconnectMsg:
- return nil, os.EOF
+ return nil, io.EOF
default:
// Unknown message. Ignore.
}
@@ -679,7 +679,7 @@
// Accept waits for and returns the next incoming SSH connection.
// The receiver should call Handshake() in another goroutine
// to avoid blocking the accepter.
-func (l *Listener) Accept() (*ServerConn, os.Error) {
+func (l *Listener) Accept() (*ServerConn, error) {
c, err := l.listener.Accept()
if err != nil {
return nil, err
@@ -694,13 +694,13 @@
}
// Close closes the listener.
-func (l *Listener) Close() os.Error {
+func (l *Listener) Close() error {
return l.listener.Close()
}
// Listen creates an SSH listener accepting connections on
// the given network address using net.Listen.
-func Listen(network, addr string, config *ServerConfig) (*Listener, os.Error) {
+func Listen(network, addr string, config *ServerConfig) (*Listener, error) {
l, err := net.Listen(network, addr)
if err != nil {
return nil, err
diff --git a/src/pkg/exp/ssh/server_shell.go b/src/pkg/exp/ssh/server_shell.go
index 0e9967a..5243d0e 100644
--- a/src/pkg/exp/ssh/server_shell.go
+++ b/src/pkg/exp/ssh/server_shell.go
@@ -4,9 +4,7 @@
package ssh
-import (
- "os"
-)
+import "io"
// ServerShell contains the state for running a VT100 terminal that is capable
// of reading lines of input.
@@ -326,12 +324,12 @@
return
}
-func (ss *ServerShell) Write(buf []byte) (n int, err os.Error) {
+func (ss *ServerShell) Write(buf []byte) (n int, err error) {
return ss.c.Write(buf)
}
// ReadLine returns a line of input from the terminal.
-func (ss *ServerShell) ReadLine() (line string, err os.Error) {
+func (ss *ServerShell) ReadLine() (line string, err error) {
ss.writeLine([]byte(ss.prompt))
ss.c.Write(ss.outBuf)
ss.outBuf = ss.outBuf[:0]
@@ -353,7 +351,7 @@
break
}
if key == keyCtrlD {
- return "", os.EOF
+ return "", io.EOF
}
line, lineOk = ss.handleKey(key)
}
diff --git a/src/pkg/exp/ssh/server_shell_test.go b/src/pkg/exp/ssh/server_shell_test.go
index 622cf7c..aa69ef7 100644
--- a/src/pkg/exp/ssh/server_shell_test.go
+++ b/src/pkg/exp/ssh/server_shell_test.go
@@ -5,8 +5,8 @@
package ssh
import (
+ "io"
"testing"
- "os"
)
type MockChannel struct {
@@ -15,15 +15,15 @@
received []byte
}
-func (c *MockChannel) Accept() os.Error {
+func (c *MockChannel) Accept() error {
return nil
}
-func (c *MockChannel) Reject(RejectionReason, string) os.Error {
+func (c *MockChannel) Reject(RejectionReason, string) error {
return nil
}
-func (c *MockChannel) Read(data []byte) (n int, err os.Error) {
+func (c *MockChannel) Read(data []byte) (n int, err error) {
n = len(data)
if n == 0 {
return
@@ -32,7 +32,7 @@
n = len(c.toSend)
}
if n == 0 {
- return 0, os.EOF
+ return 0, io.EOF
}
if c.bytesPerRead > 0 && n > c.bytesPerRead {
n = c.bytesPerRead
@@ -42,16 +42,16 @@
return
}
-func (c *MockChannel) Write(data []byte) (n int, err os.Error) {
+func (c *MockChannel) Write(data []byte) (n int, err error) {
c.received = append(c.received, data...)
return len(data), nil
}
-func (c *MockChannel) Close() os.Error {
+func (c *MockChannel) Close() error {
return nil
}
-func (c *MockChannel) AckRequest(ok bool) os.Error {
+func (c *MockChannel) AckRequest(ok bool) error {
return nil
}
@@ -70,7 +70,7 @@
if line != "" {
t.Errorf("Expected empty line but got: %s", line)
}
- if err != os.EOF {
+ if err != io.EOF {
t.Errorf("Error should have been EOF but got: %s", err)
}
}
@@ -78,12 +78,12 @@
var keyPressTests = []struct {
in string
line string
- err os.Error
+ err error
}{
{
"",
"",
- os.EOF,
+ io.EOF,
},
{
"\r",
diff --git a/src/pkg/exp/ssh/session.go b/src/pkg/exp/ssh/session.go
index 13df2f0..77154f2 100644
--- a/src/pkg/exp/ssh/session.go
+++ b/src/pkg/exp/ssh/session.go
@@ -9,8 +9,8 @@
import (
"encoding/binary"
+ "errors"
"io"
- "os"
)
// A Session represents a connection to a remote command or shell.
@@ -34,7 +34,7 @@
// Setenv sets an environment variable that will be applied to any
// command executed by Shell or Exec.
-func (s *Session) Setenv(name, value string) os.Error {
+func (s *Session) Setenv(name, value string) error {
n, v := []byte(name), []byte(value)
nlen, vlen := stringLength(n), stringLength(v)
payload := make([]byte, nlen+vlen)
@@ -53,7 +53,7 @@
var emptyModeList = []byte{0, 0, 0, 1, 0}
// RequestPty requests the association of a pty with the session on the remote host.
-func (s *Session) RequestPty(term string, h, w int) os.Error {
+func (s *Session) RequestPty(term string, h, w int) error {
buf := make([]byte, 4+len(term)+16+len(emptyModeList))
b := marshalString(buf, []byte(term))
binary.BigEndian.PutUint32(b, uint32(h))
@@ -73,9 +73,9 @@
// Exec runs cmd on the remote host. Typically, the remote
// server passes cmd to the shell for interpretation.
// A Session only accepts one call to Exec or Shell.
-func (s *Session) Exec(cmd string) os.Error {
+func (s *Session) Exec(cmd string) error {
if s.started {
- return os.NewError("session already started")
+ return errors.New("session already started")
}
cmdLen := stringLength([]byte(cmd))
payload := make([]byte, cmdLen)
@@ -92,9 +92,9 @@
// Shell starts a login shell on the remote host. A Session only
// accepts one call to Exec or Shell.
-func (s *Session) Shell() os.Error {
+func (s *Session) Shell() error {
if s.started {
- return os.NewError("session already started")
+ return errors.New("session already started")
}
s.started = true
@@ -106,7 +106,7 @@
}
// NewSession returns a new interactive session on the remote host.
-func (c *ClientConn) NewSession() (*Session, os.Error) {
+func (c *ClientConn) NewSession() (*Session, error) {
ch, err := c.openChan("session")
if err != nil {
return nil, err
diff --git a/src/pkg/exp/ssh/transport.go b/src/pkg/exp/ssh/transport.go
index 97eaf97..579a9d8 100644
--- a/src/pkg/exp/ssh/transport.go
+++ b/src/pkg/exp/ssh/transport.go
@@ -11,10 +11,10 @@
"crypto/cipher"
"crypto/hmac"
"crypto/subtle"
+ "errors"
"hash"
"io"
"net"
- "os"
"sync"
)
@@ -27,7 +27,7 @@
// TODO(dfc) suggestions for a better name will be warmly received.
type filteredConn interface {
// Close closes the connection.
- Close() os.Error
+ Close() error
// LocalAddr returns the local network address.
LocalAddr() net.Addr
@@ -40,7 +40,7 @@
// an SSH peer.
type packetWriter interface {
// Encrypt and send a packet of data to the remote peer.
- writePacket(packet []byte) os.Error
+ writePacket(packet []byte) error
}
// transport represents the SSH connection to the remote peer.
@@ -79,7 +79,7 @@
}
// Read and decrypt a single packet from the remote peer.
-func (r *reader) readOnePacket() ([]byte, os.Error) {
+func (r *reader) readOnePacket() ([]byte, error) {
var lengthBytes = make([]byte, 5)
var macSize uint32
@@ -108,10 +108,10 @@
paddingLength := uint32(lengthBytes[4])
if length <= paddingLength+1 {
- return nil, os.NewError("invalid packet length")
+ return nil, errors.New("invalid packet length")
}
if length > maxPacketSize {
- return nil, os.NewError("packet too large")
+ return nil, errors.New("packet too large")
}
packet := make([]byte, length-1+macSize)
@@ -126,7 +126,7 @@
if r.mac != nil {
r.mac.Write(packet[:length-1])
if subtle.ConstantTimeCompare(r.mac.Sum(), mac) != 1 {
- return nil, os.NewError("ssh: MAC failure")
+ return nil, errors.New("ssh: MAC failure")
}
}
@@ -135,7 +135,7 @@
}
// Read and decrypt next packet discarding debug and noop messages.
-func (t *transport) readPacket() ([]byte, os.Error) {
+func (t *transport) readPacket() ([]byte, error) {
for {
packet, err := t.readOnePacket()
if err != nil {
@@ -149,7 +149,7 @@
}
// Encrypt and send a packet of data to the remote peer.
-func (w *writer) writePacket(packet []byte) os.Error {
+func (w *writer) writePacket(packet []byte) error {
w.Mutex.Lock()
defer w.Mutex.Unlock()
@@ -218,7 +218,7 @@
}
// Send a message to the remote peer
-func (t *transport) sendMessage(typ uint8, msg interface{}) os.Error {
+func (t *transport) sendMessage(typ uint8, msg interface{}) error {
packet := marshal(typ, msg)
return t.writePacket(packet)
}
@@ -252,7 +252,7 @@
// setupKeys sets the cipher and MAC keys from K, H and sessionId, as
// described in RFC 4253, section 6.4. direction should either be serverKeys
// (to setup server->client keys) or clientKeys (for client->server keys).
-func (c *common) setupKeys(d direction, K, H, sessionId []byte, hashFunc crypto.Hash) os.Error {
+func (c *common) setupKeys(d direction, K, H, sessionId []byte, hashFunc crypto.Hash) error {
h := hashFunc.New()
blockSize := 16
@@ -308,7 +308,7 @@
hmac hash.Hash
}
-func (t truncatingMAC) Write(data []byte) (int, os.Error) {
+func (t truncatingMAC) Write(data []byte) (int, error) {
return t.hmac.Write(data)
}
@@ -332,7 +332,7 @@
const maxVersionStringBytes = 1024
// Read version string as specified by RFC 4253, section 4.2.
-func readVersion(r io.Reader) ([]byte, os.Error) {
+func readVersion(r io.Reader) ([]byte, error) {
versionString := make([]byte, 0, 64)
var ok, seenCR bool
var buf [1]byte
@@ -360,7 +360,7 @@
}
if !ok {
- return nil, os.NewError("failed to read version string")
+ return nil, errors.New("failed to read version string")
}
// We need to remove the CR from versionString
diff --git a/src/pkg/exp/template/html/error.go b/src/pkg/exp/template/html/error.go
index 5515bfe..22fca9e 100644
--- a/src/pkg/exp/template/html/error.go
+++ b/src/pkg/exp/template/html/error.go
@@ -197,7 +197,7 @@
ErrSlashAmbig
)
-func (e *Error) String() string {
+func (e *Error) Error() string {
if e.Line != 0 {
return fmt.Sprintf("exp/template/html:%s:%d: %s", e.Name, e.Line, e.Description)
} else if e.Name != "" {
diff --git a/src/pkg/exp/template/html/escape.go b/src/pkg/exp/template/html/escape.go
index 74abcce..28615a9 100644
--- a/src/pkg/exp/template/html/escape.go
+++ b/src/pkg/exp/template/html/escape.go
@@ -8,14 +8,13 @@
"bytes"
"fmt"
"html"
- "os"
"template"
"template/parse"
)
// Escape rewrites each action in the template to guarantee that the output is
// properly escaped.
-func Escape(t *template.Template) (*template.Template, os.Error) {
+func Escape(t *template.Template) (*template.Template, error) {
var s template.Set
s.Add(t)
if _, err := EscapeSet(&s, t.Name()); err != nil {
@@ -32,7 +31,7 @@
// need not include helper templates.
// If no error is returned, then the named templates have been modified.
// Otherwise the named templates have been rendered unusable.
-func EscapeSet(s *template.Set, names ...string) (*template.Set, os.Error) {
+func EscapeSet(s *template.Set, names ...string) (*template.Set, error) {
if len(names) == 0 {
// TODO: Maybe add a method to Set to enumerate template names
// and use those instead.
@@ -41,7 +40,7 @@
e := newEscaper(s)
for _, name := range names {
c, _ := e.escapeTree(context{}, name, 0)
- var err os.Error
+ var err error
if c.err != nil {
err, c.err.Name = c.err, name
} else if c.state != stateText {
diff --git a/src/pkg/exp/template/html/escape_test.go b/src/pkg/exp/template/html/escape_test.go
index 1b3b256..20599bc 100644
--- a/src/pkg/exp/template/html/escape_test.go
+++ b/src/pkg/exp/template/html/escape_test.go
@@ -8,7 +8,6 @@
"bytes"
"fmt"
"json"
- "os"
"strings"
"template"
"template/parse"
@@ -17,14 +16,14 @@
type badMarshaler struct{}
-func (x *badMarshaler) MarshalJSON() ([]byte, os.Error) {
+func (x *badMarshaler) MarshalJSON() ([]byte, error) {
// Keys in valid JSON must be double quoted as must all strings.
return []byte("{ foo: 'not quite valid JSON' }"), nil
}
type goodMarshaler struct{}
-func (x *goodMarshaler) MarshalJSON() ([]byte, os.Error) {
+func (x *goodMarshaler) MarshalJSON() ([]byte, error) {
return []byte(`{ "<foo>": "O'Reilly" }`), nil
}
@@ -783,7 +782,7 @@
// pred is a template function that returns the predecessor of a
// natural number for testing recursive templates.
- fns := template.FuncMap{"pred": func(a ...interface{}) (interface{}, os.Error) {
+ fns := template.FuncMap{"pred": func(a ...interface{}) (interface{}, error) {
if len(a) == 1 {
if i, _ := a[0].(int); i > 0 {
return i - 1, nil
@@ -807,7 +806,7 @@
var b bytes.Buffer
if err := s.Execute(&b, "main", data); err != nil {
- t.Errorf("%q executing %v", err.String(), s.Template("main"))
+ t.Errorf("%q executing %v", err.Error(), s.Template("main"))
continue
}
if got := b.String(); test.want != got {
@@ -962,7 +961,7 @@
}
for _, test := range tests {
- var err os.Error
+ var err error
if strings.HasPrefix(test.input, "{{define") {
var s template.Set
_, err = s.Parse(test.input)
@@ -977,7 +976,7 @@
}
var got string
if err != nil {
- got = err.String()
+ got = err.Error()
}
if test.err == "" {
if got != "" {
@@ -1549,7 +1548,7 @@
}
}
-func expectExecuteFailure(t *testing.T, b *bytes.Buffer, err os.Error) {
+func expectExecuteFailure(t *testing.T, b *bytes.Buffer, err error) {
if err != nil {
if b.Len() != 0 {
t.Errorf("output on buffer: %q", b.String())
diff --git a/src/pkg/exp/template/html/js.go b/src/pkg/exp/template/html/js.go
index 5646f8a..22be418 100644
--- a/src/pkg/exp/template/html/js.go
+++ b/src/pkg/exp/template/html/js.go
@@ -148,7 +148,7 @@
// turning into
// x//* error marshalling y:
// second line of error message */null
- return fmt.Sprintf(" /* %s */null ", strings.Replace(err.String(), "*/", "* /", -1))
+ return fmt.Sprintf(" /* %s */null ", strings.Replace(err.Error(), "*/", "* /", -1))
}
// TODO: maybe post-process output to prevent it from containing
diff --git a/src/pkg/exp/terminal/shell.go b/src/pkg/exp/terminal/shell.go
index e3f5847..5c59167 100644
--- a/src/pkg/exp/terminal/shell.go
+++ b/src/pkg/exp/terminal/shell.go
@@ -4,10 +4,7 @@
package terminal
-import (
- "os"
- "io"
-)
+import "io"
// Shell contains the state for running a VT100 terminal that is capable of
// reading lines of input.
@@ -306,12 +303,12 @@
}
}
-func (ss *Shell) Write(buf []byte) (n int, err os.Error) {
+func (ss *Shell) Write(buf []byte) (n int, err error) {
return ss.c.Write(buf)
}
// ReadLine returns a line of input from the terminal.
-func (ss *Shell) ReadLine() (line string, err os.Error) {
+func (ss *Shell) ReadLine() (line string, err error) {
ss.writeLine([]byte(ss.prompt))
ss.c.Write(ss.outBuf)
ss.outBuf = ss.outBuf[:0]
@@ -337,7 +334,7 @@
break
}
if key == keyCtrlD {
- return "", os.EOF
+ return "", io.EOF
}
line, lineOk = ss.handleKey(key)
}
diff --git a/src/pkg/exp/terminal/shell_test.go b/src/pkg/exp/terminal/shell_test.go
index 2bbe4a4..8a76a85 100644
--- a/src/pkg/exp/terminal/shell_test.go
+++ b/src/pkg/exp/terminal/shell_test.go
@@ -5,8 +5,8 @@
package terminal
import (
+ "io"
"testing"
- "os"
)
type MockTerminal struct {
@@ -15,7 +15,7 @@
received []byte
}
-func (c *MockTerminal) Read(data []byte) (n int, err os.Error) {
+func (c *MockTerminal) Read(data []byte) (n int, err error) {
n = len(data)
if n == 0 {
return
@@ -24,7 +24,7 @@
n = len(c.toSend)
}
if n == 0 {
- return 0, os.EOF
+ return 0, io.EOF
}
if c.bytesPerRead > 0 && n > c.bytesPerRead {
n = c.bytesPerRead
@@ -34,7 +34,7 @@
return
}
-func (c *MockTerminal) Write(data []byte) (n int, err os.Error) {
+func (c *MockTerminal) Write(data []byte) (n int, err error) {
c.received = append(c.received, data...)
return len(data), nil
}
@@ -46,7 +46,7 @@
if line != "" {
t.Errorf("Expected empty line but got: %s", line)
}
- if err != os.EOF {
+ if err != io.EOF {
t.Errorf("Error should have been EOF but got: %s", err)
}
}
@@ -54,12 +54,12 @@
var keyPressTests = []struct {
in string
line string
- err os.Error
+ err error
}{
{
"",
"",
- os.EOF,
+ io.EOF,
},
{
"\r",
diff --git a/src/pkg/exp/terminal/terminal.go b/src/pkg/exp/terminal/terminal.go
index aacd909..d711493 100644
--- a/src/pkg/exp/terminal/terminal.go
+++ b/src/pkg/exp/terminal/terminal.go
@@ -15,6 +15,7 @@
package terminal
import (
+ "io"
"os"
"syscall"
"unsafe"
@@ -35,7 +36,7 @@
// MakeRaw put the terminal connected to the given file descriptor into raw
// mode and returns the previous state of the terminal so that it can be
// restored.
-func MakeRaw(fd int) (*State, os.Error) {
+func MakeRaw(fd int) (*State, error) {
var oldState State
if _, _, e := syscall.Syscall6(syscall.SYS_IOCTL, uintptr(fd), uintptr(syscall.TCGETS), uintptr(unsafe.Pointer(&oldState.termios)), 0, 0, 0); e != 0 {
return nil, os.Errno(e)
@@ -53,7 +54,7 @@
// Restore restores the terminal connected to the given file descriptor to a
// previous state.
-func Restore(fd int, state *State) os.Error {
+func Restore(fd int, state *State) error {
_, _, e := syscall.Syscall6(syscall.SYS_IOCTL, uintptr(fd), uintptr(syscall.TCSETS), uintptr(unsafe.Pointer(&state.termios)), 0, 0, 0)
return os.Errno(e)
}
@@ -61,7 +62,7 @@
// ReadPassword reads a line of input from a terminal without local echo. This
// is commonly used for inputting passwords and other sensitive data. The slice
// returned does not include the \n.
-func ReadPassword(fd int) ([]byte, os.Error) {
+func ReadPassword(fd int) ([]byte, error) {
var oldState syscall.Termios
if _, _, e := syscall.Syscall6(syscall.SYS_IOCTL, uintptr(fd), uintptr(syscall.TCGETS), uintptr(unsafe.Pointer(&oldState)), 0, 0, 0); e != 0 {
return nil, os.Errno(e)
@@ -86,7 +87,7 @@
}
if n == 0 {
if len(ret) == 0 {
- return nil, os.EOF
+ return nil, io.EOF
}
break
}
diff --git a/src/pkg/exp/types/check.go b/src/pkg/exp/types/check.go
index 87e3e93..09e29d1 100644
--- a/src/pkg/exp/types/check.go
+++ b/src/pkg/exp/types/check.go
@@ -11,7 +11,6 @@
"go/ast"
"go/scanner"
"go/token"
- "os"
"strconv"
)
@@ -213,7 +212,7 @@
// of types for all expression nodes in statements, and a scanner.ErrorList if
// there are errors.
//
-func Check(fset *token.FileSet, pkg *ast.Package) (types map[ast.Expr]Type, err os.Error) {
+func Check(fset *token.FileSet, pkg *ast.Package) (types map[ast.Expr]Type, err error) {
var c checker
c.fset = fset
c.types = make(map[ast.Expr]Type)
diff --git a/src/pkg/exp/types/check_test.go b/src/pkg/exp/types/check_test.go
index 034acd0..4a30acf 100644
--- a/src/pkg/exp/types/check_test.go
+++ b/src/pkg/exp/types/check_test.go
@@ -67,7 +67,7 @@
// TODO(gri) Need to revisit parser interface. We should be able to use parser.ParseFiles
// or a similar function instead.
-func parseFiles(t *testing.T, testname string, filenames []string) (map[string]*ast.File, os.Error) {
+func parseFiles(t *testing.T, testname string, filenames []string) (map[string]*ast.File, error) {
files := make(map[string]*ast.File)
var errors scanner.ErrorList
for _, filename := range filenames {
@@ -132,7 +132,7 @@
return errors
}
-func eliminate(t *testing.T, expected map[token.Pos]string, errors os.Error) {
+func eliminate(t *testing.T, expected map[token.Pos]string, errors error) {
if errors == nil {
return
}
diff --git a/src/pkg/exp/types/exportdata.go b/src/pkg/exp/types/exportdata.go
index 784ffff..fa5b6a3 100644
--- a/src/pkg/exp/types/exportdata.go
+++ b/src/pkg/exp/types/exportdata.go
@@ -8,6 +8,7 @@
import (
"bufio"
+ "errors"
"fmt"
"io"
"os"
@@ -15,7 +16,7 @@
"strings"
)
-func readGopackHeader(buf *bufio.Reader) (name string, size int, err os.Error) {
+func readGopackHeader(buf *bufio.Reader) (name string, size int, err error) {
// See $GOROOT/include/ar.h.
hdr := make([]byte, 16+12+6+6+8+10+2)
_, err = io.ReadFull(buf, hdr)
@@ -28,7 +29,7 @@
s := strings.TrimSpace(string(hdr[16+12+6+6+8:][:10]))
size, err = strconv.Atoi(s)
if err != nil || hdr[len(hdr)-2] != '`' || hdr[len(hdr)-1] != '\n' {
- err = os.NewError("invalid archive header")
+ err = errors.New("invalid archive header")
return
}
name = strings.TrimSpace(string(hdr[:16]))
@@ -44,7 +45,7 @@
// export data section of the given object/archive file, or an error.
// It is the caller's responsibility to close the readCloser.
//
-func ExportData(filename string) (rc io.ReadCloser, err os.Error) {
+func ExportData(filename string) (rc io.ReadCloser, err error) {
file, err := os.Open(filename)
if err != nil {
return
@@ -77,7 +78,7 @@
return
}
if name != "__.SYMDEF" {
- err = os.NewError("go archive does not begin with __.SYMDEF")
+ err = errors.New("go archive does not begin with __.SYMDEF")
return
}
const block = 4096
@@ -99,7 +100,7 @@
return
}
if name != "__.PKGDEF" {
- err = os.NewError("go archive is missing __.PKGDEF")
+ err = errors.New("go archive is missing __.PKGDEF")
return
}
@@ -114,7 +115,7 @@
// Now at __.PKGDEF in archive or still at beginning of file.
// Either way, line should begin with "go object ".
if !strings.HasPrefix(string(line), "go object ") {
- err = os.NewError("not a go object file")
+ err = errors.New("not a go object file")
return
}
diff --git a/src/pkg/exp/types/gcimporter.go b/src/pkg/exp/types/gcimporter.go
index 4e5172a..d88af95 100644
--- a/src/pkg/exp/types/gcimporter.go
+++ b/src/pkg/exp/types/gcimporter.go
@@ -9,6 +9,7 @@
import (
"big"
+ "errors"
"fmt"
"go/ast"
"go/token"
@@ -102,7 +103,7 @@
}
// GcImporter implements the ast.Importer signature.
-func GcImporter(imports map[string]*ast.Object, path string) (pkg *ast.Object, err os.Error) {
+func GcImporter(imports map[string]*ast.Object, path string) (pkg *ast.Object, err error) {
if path == "unsafe" {
return Unsafe, nil
}
@@ -118,7 +119,7 @@
filename, id := findPkg(path)
if filename == "" {
- err = os.NewError("can't find import: " + id)
+ err = errors.New("can't find import: " + id)
return
}
@@ -176,19 +177,19 @@
// Internal errors are boxed as importErrors.
type importError struct {
pos scanner.Position
- err os.Error
+ err error
}
-func (e importError) String() string {
+func (e importError) Error() string {
return fmt.Sprintf("import error %s (byte offset = %d): %s", e.pos, e.pos.Offset, e.err)
}
func (p *gcParser) error(err interface{}) {
if s, ok := err.(string); ok {
- err = os.NewError(s)
+ err = errors.New(s)
}
// panic with a runtime.Error if err is not an os.Error
- panic(importError{p.scanner.Pos(), err.(os.Error)})
+ panic(importError{p.scanner.Pos(), err.(error)})
}
func (p *gcParser) errorf(format string, args ...interface{}) {
diff --git a/src/pkg/exp/winfsnotify/winfsnotify.go b/src/pkg/exp/winfsnotify/winfsnotify.go
index c5dfe99..d133740 100644
--- a/src/pkg/exp/winfsnotify/winfsnotify.go
+++ b/src/pkg/exp/winfsnotify/winfsnotify.go
@@ -7,6 +7,7 @@
package winfsnotify
import (
+ "errors"
"fmt"
"os"
"path/filepath"
@@ -36,7 +37,7 @@
op int
path string
flags uint32
- reply chan os.Error
+ reply chan error
}
type inode struct {
@@ -65,14 +66,14 @@
watches watchMap // Map of watches (key: i-number)
input chan *input // Inputs to the reader are sent on this channel
Event chan *Event // Events are returned on this channel
- Error chan os.Error // Errors are sent on this channel
+ Error chan error // Errors are sent on this channel
isClosed bool // Set to true when Close() is first called
- quit chan chan<- os.Error
+ quit chan chan<- error
cookie uint32
}
// NewWatcher creates and returns a Watcher.
-func NewWatcher() (*Watcher, os.Error) {
+func NewWatcher() (*Watcher, error) {
port, e := syscall.CreateIoCompletionPort(syscall.InvalidHandle, 0, 0, 0)
if e != 0 {
return nil, os.NewSyscallError("CreateIoCompletionPort", e)
@@ -82,8 +83,8 @@
watches: make(watchMap),
input: make(chan *input, 1),
Event: make(chan *Event, 50),
- Error: make(chan os.Error),
- quit: make(chan chan<- os.Error, 1),
+ Error: make(chan error),
+ quit: make(chan chan<- error, 1),
}
go w.readEvents()
return w, nil
@@ -92,14 +93,14 @@
// Close closes a Watcher.
// It sends a message to the reader goroutine to quit and removes all watches
// associated with the watcher.
-func (w *Watcher) Close() os.Error {
+func (w *Watcher) Close() error {
if w.isClosed {
return nil
}
w.isClosed = true
// Send "quit" message to the reader goroutine
- ch := make(chan os.Error)
+ ch := make(chan error)
w.quit <- ch
if err := w.wakeupReader(); err != nil {
return err
@@ -108,15 +109,15 @@
}
// AddWatch adds path to the watched file set.
-func (w *Watcher) AddWatch(path string, flags uint32) os.Error {
+func (w *Watcher) AddWatch(path string, flags uint32) error {
if w.isClosed {
- return os.NewError("watcher already closed")
+ return errors.New("watcher already closed")
}
in := &input{
op: opAddWatch,
path: filepath.Clean(path),
flags: flags,
- reply: make(chan os.Error),
+ reply: make(chan error),
}
w.input <- in
if err := w.wakeupReader(); err != nil {
@@ -126,16 +127,16 @@
}
// Watch adds path to the watched file set, watching all events.
-func (w *Watcher) Watch(path string) os.Error {
+func (w *Watcher) Watch(path string) error {
return w.AddWatch(path, FS_ALL_EVENTS)
}
// RemoveWatch removes path from the watched file set.
-func (w *Watcher) RemoveWatch(path string) os.Error {
+func (w *Watcher) RemoveWatch(path string) error {
in := &input{
op: opRemoveWatch,
path: filepath.Clean(path),
- reply: make(chan os.Error),
+ reply: make(chan error),
}
w.input <- in
if err := w.wakeupReader(); err != nil {
@@ -144,7 +145,7 @@
return <-in.reply
}
-func (w *Watcher) wakeupReader() os.Error {
+func (w *Watcher) wakeupReader() error {
e := syscall.PostQueuedCompletionStatus(w.port, 0, 0, nil)
if e != 0 {
return os.NewSyscallError("PostQueuedCompletionStatus", e)
@@ -152,7 +153,7 @@
return nil
}
-func getDir(pathname string) (dir string, err os.Error) {
+func getDir(pathname string) (dir string, err error) {
attr, e := syscall.GetFileAttributes(syscall.StringToUTF16Ptr(pathname))
if e != 0 {
return "", os.NewSyscallError("GetFileAttributes", e)
@@ -166,7 +167,7 @@
return
}
-func getIno(path string) (ino *inode, err os.Error) {
+func getIno(path string) (ino *inode, err error) {
h, e := syscall.CreateFile(syscall.StringToUTF16Ptr(path),
syscall.FILE_LIST_DIRECTORY,
syscall.FILE_SHARE_READ|syscall.FILE_SHARE_WRITE|syscall.FILE_SHARE_DELETE,
@@ -207,7 +208,7 @@
}
// Must run within the I/O thread.
-func (w *Watcher) addWatch(pathname string, flags uint64) os.Error {
+func (w *Watcher) addWatch(pathname string, flags uint64) error {
dir, err := getDir(pathname)
if err != nil {
return err
@@ -252,7 +253,7 @@
}
// Must run within the I/O thread.
-func (w *Watcher) removeWatch(pathname string) os.Error {
+func (w *Watcher) removeWatch(pathname string) error {
dir, err := getDir(pathname)
if err != nil {
return err
@@ -293,7 +294,7 @@
}
// Must run within the I/O thread.
-func (w *Watcher) startRead(watch *watch) os.Error {
+func (w *Watcher) startRead(watch *watch) error {
if e := syscall.CancelIo(watch.ino.handle); e != 0 {
w.Error <- os.NewSyscallError("CancelIo", e)
w.deleteWatch(watch)
@@ -352,7 +353,7 @@
w.startRead(watch)
}
}
- var err os.Error
+ var err error
if e := syscall.CloseHandle(w.port); e != 0 {
err = os.NewSyscallError("CloseHandle", e)
}
@@ -392,7 +393,7 @@
for {
if n == 0 {
w.Event <- &Event{Mask: FS_Q_OVERFLOW}
- w.Error <- os.NewError("short read in readEvents()")
+ w.Error <- errors.New("short read in readEvents()")
break
}