Step 1 of the Big Error Shift: make os.Error an interface and replace *os.Errors with os.Errors.
lib/template updated to use new setup; its clients also updated.

Step 2 will make os's error support internally much cleaner.

R=rsc
OCL=27586
CL=27586
diff --git a/src/lib/net/dnsclient.go b/src/lib/net/dnsclient.go
index c0a4177..afae7cf 100644
--- a/src/lib/net/dnsclient.go
+++ b/src/lib/net/dnsclient.go
@@ -41,7 +41,7 @@
 
 // Send a request on the connection and hope for a reply.
 // Up to cfg.attempts attempts.
-func _Exchange(cfg *_DNS_Config, c Conn, name string) (m *_DNS_Msg, err *os.Error) {
+func _Exchange(cfg *_DNS_Config, c Conn, name string) (m *_DNS_Msg, err os.Error) {
 	if len(name) >= 256 {
 		return nil, DNS_NameTooLong
 	}
@@ -86,7 +86,7 @@
 // Find answer for name in dns message.
 // On return, if err == nil, addrs != nil.
 // TODO(rsc): Maybe return []IP instead?
-func answer(name string, dns *_DNS_Msg) (addrs []string, err *os.Error) {
+func answer(name string, dns *_DNS_Msg) (addrs []string, err os.Error) {
 	addrs = make([]string, 0, len(dns.answer));
 
 	if dns.rcode == _DNS_RcodeNameError && dns.authoritative {
@@ -137,7 +137,7 @@
 
 // Do a lookup for a single name, which must be rooted
 // (otherwise answer will not find the answers).
-func tryOneName(cfg *_DNS_Config, name string) (addrs []string, err *os.Error) {
+func tryOneName(cfg *_DNS_Config, name string) (addrs []string, err os.Error) {
 	err = DNS_NoServers;
 	for i := 0; i < len(cfg.servers); i++ {
 		// Calling Dial here is scary -- we have to be sure
@@ -168,7 +168,7 @@
 }
 
 var cfg *_DNS_Config
-var dnserr *os.Error
+var dnserr os.Error
 
 func loadConfig() {
 	cfg, dnserr = _DNS_ReadConfig();
@@ -177,7 +177,7 @@
 // LookupHost looks up the host name using the local DNS resolver.
 // It returns the canonical name for the host and an array of that
 // host's addresses.
-func LookupHost(name string) (cname string, addrs []string, err *os.Error)
+func LookupHost(name string) (cname string, addrs []string, err os.Error)
 {
 	// TODO(rsc): Pick out obvious non-DNS names to avoid
 	// sending stupid requests to the server?
diff --git a/src/lib/net/dnsconfig.go b/src/lib/net/dnsconfig.go
index 385d07b..e56d964 100644
--- a/src/lib/net/dnsconfig.go
+++ b/src/lib/net/dnsconfig.go
@@ -22,16 +22,16 @@
 	rotate bool;	// round robin among servers
 }
 
-var _DNS_configError *os.Error;
+var _DNS_configError os.Error;
 
 // See resolv.conf(5) on a Linux machine.
 // TODO(rsc): Supposed to call uname() and chop the beginning
 // of the host name to get the default search domain.
 // We assume it's in resolv.conf anyway.
-func _DNS_ReadConfig() (*_DNS_Config, *os.Error) {
+func _DNS_ReadConfig() (*_DNS_Config, os.Error) {
 	// TODO(rsc): 6g won't let me say file, err :=
 	var file *file;
-	var err *os.Error;
+	var err os.Error;
 	file, err = open("/etc/resolv.conf");
 	if err != nil {
 		return nil, err
diff --git a/src/lib/net/fd.go b/src/lib/net/fd.go
index 8b26efe..b386728 100644
--- a/src/lib/net/fd.go
+++ b/src/lib/net/fd.go
@@ -38,7 +38,7 @@
 }
 
 // Make reads and writes on fd return EAGAIN instead of blocking.
-func setNonblock(fd int64) *os.Error {
+func setNonblock(fd int64) os.Error {
 	flags, e := syscall.Fcntl(fd, syscall.F_GETFL, 0);
 	if e != 0 {
 		return os.ErrnoToError(e)
@@ -97,7 +97,7 @@
 }
 func (s *pollServer) Run();
 
-func newPollServer() (s *pollServer, err *os.Error) {
+func newPollServer() (s *pollServer, err os.Error) {
 	s = new(pollServer);
 	s.cr = make(chan *netFD, 1);
 	s.cw = make(chan *netFD, 1);
@@ -318,7 +318,7 @@
 	pollserver = p
 }
 
-func newFD(fd int64, net, laddr, raddr string) (f *netFD, err *os.Error) {
+func newFD(fd int64, net, laddr, raddr string) (f *netFD, err os.Error) {
 	if pollserver == nil {
 		once.Do(_StartServer);
 	}
@@ -336,7 +336,7 @@
 	return f, nil
 }
 
-func (fd *netFD) Close() *os.Error {
+func (fd *netFD) Close() os.Error {
 	if fd == nil || fd.file == nil {
 		return os.EINVAL
 	}
@@ -355,7 +355,7 @@
 	return e
 }
 
-func (fd *netFD) Read(p []byte) (n int, err *os.Error) {
+func (fd *netFD) Read(p []byte) (n int, err os.Error) {
 	if fd == nil || fd.file == nil {
 		return -1, os.EINVAL
 	}
@@ -374,7 +374,7 @@
 	return n, err
 }
 
-func (fd *netFD) Write(p []byte) (n int, err *os.Error) {
+func (fd *netFD) Write(p []byte) (n int, err os.Error) {
 	if fd == nil || fd.file == nil {
 		return -1, os.EINVAL
 	}
@@ -406,9 +406,9 @@
 	return nn, err
 }
 
-func sockaddrToHostPort(sa *syscall.Sockaddr) (hostport string, err *os.Error)
+func sockaddrToHostPort(sa *syscall.Sockaddr) (hostport string, err os.Error)
 
-func (fd *netFD) Accept(sa *syscall.Sockaddr) (nfd *netFD, err *os.Error) {
+func (fd *netFD) Accept(sa *syscall.Sockaddr) (nfd *netFD, err os.Error) {
 	if fd == nil || fd.file == nil {
 		return nil, os.EINVAL
 	}
diff --git a/src/lib/net/fd_darwin.go b/src/lib/net/fd_darwin.go
index c543755..b4392d0 100644
--- a/src/lib/net/fd_darwin.go
+++ b/src/lib/net/fd_darwin.go
@@ -18,7 +18,7 @@
 	events []syscall.Kevent_t;
 }
 
-func newpollster() (p *pollster, err *os.Error) {
+func newpollster() (p *pollster, err os.Error) {
 	p = new(pollster);
 	var e int64;
 	if p.kq, e = syscall.Kqueue(); e != 0 {
@@ -28,7 +28,7 @@
 	return p, nil
 }
 
-func (p *pollster) AddFD(fd int64, mode int, repeat bool) *os.Error {
+func (p *pollster) AddFD(fd int64, mode int, repeat bool) os.Error {
 	var kmode int16;
 	if mode == 'r' {
 		kmode = syscall.EVFILT_READ
@@ -81,7 +81,7 @@
 	syscall.Kevent(p.kq, &events, &events, nil);
 }
 
-func (p *pollster) WaitFD(nsec int64) (fd int64, mode int, err *os.Error) {
+func (p *pollster) WaitFD(nsec int64) (fd int64, mode int, err os.Error) {
 	var t *syscall.Timespec;
 	for len(p.events) == 0 {
 		if nsec > 0 {
@@ -114,7 +114,7 @@
 	return fd, mode, nil
 }
 
-func (p *pollster) Close() *os.Error {
+func (p *pollster) Close() os.Error {
 	r, e := syscall.Close(p.kq);
 	return os.ErrnoToError(e)
 }
diff --git a/src/lib/net/fd_linux.go b/src/lib/net/fd_linux.go
index ecdf1da..78a1670 100644
--- a/src/lib/net/fd_linux.go
+++ b/src/lib/net/fd_linux.go
@@ -24,7 +24,7 @@
 	events map[int64] uint32;
 }
 
-func newpollster() (p *pollster, err *os.Error) {
+func newpollster() (p *pollster, err os.Error) {
 	p = new(pollster);
 	var e int64;
 
@@ -38,7 +38,7 @@
 	return p, nil
 }
 
-func (p *pollster) AddFD(fd int64, mode int, repeat bool) *os.Error {
+func (p *pollster) AddFD(fd int64, mode int, repeat bool) os.Error {
 	var ev syscall.EpollEvent;
 	var already bool;
 	ev.Fd = int32(fd);
@@ -106,7 +106,7 @@
 	}
 }
 
-func (p *pollster) WaitFD(nsec int64) (fd int64, mode int, err *os.Error) {
+func (p *pollster) WaitFD(nsec int64) (fd int64, mode int, err os.Error) {
 	// Get an event.
 	var evarray [1]syscall.EpollEvent;
 	ev := &evarray[0];
@@ -145,7 +145,7 @@
 	return fd, 'r', nil;
 }
 
-func (p *pollster) Close() *os.Error {
+func (p *pollster) Close() os.Error {
 	r, e := syscall.Close(p.epfd);
 	return os.ErrnoToError(e);
 }
diff --git a/src/lib/net/net.go b/src/lib/net/net.go
index c63972a..737af52 100644
--- a/src/lib/net/net.go
+++ b/src/lib/net/net.go
@@ -19,11 +19,11 @@
 	UnknownSocketFamily = os.NewError("unknown socket family");
 )
 
-func LookupHost(name string) (cname string, addrs []string, err *os.Error)
+func LookupHost(name string) (cname string, addrs []string, err os.Error)
 
 // Split "host:port" into "host" and "port".
 // Host cannot contain colons unless it is bracketed.
-func splitHostPort(hostport string) (host, port string, err *os.Error) {
+func splitHostPort(hostport string) (host, port string, err os.Error) {
 	// The port starts after the last colon.
 	var i int;
 	for i = len(hostport)-1; i >= 0; i-- {
@@ -63,7 +63,7 @@
 // Convert "host:port" into IP address and port.
 // For now, host and port must be numeric literals.
 // Eventually, we'll have name resolution.
-func hostPortToIP(net, hostport, mode string) (ip []byte, iport int, err *os.Error) {
+func hostPortToIP(net, hostport, mode string) (ip []byte, iport int, err os.Error) {
 	var host, port string;
 	host, port, err = splitHostPort(hostport);
 	if err != nil {
@@ -114,7 +114,7 @@
 }
 
 // Convert socket address into "host:port".
-func sockaddrToHostPort(sa *syscall.Sockaddr) (hostport string, err *os.Error) {
+func sockaddrToHostPort(sa *syscall.Sockaddr) (hostport string, err os.Error) {
 	switch sa.Family {
 	case syscall.AF_INET, syscall.AF_INET6:
 		addr, port, e := sockaddrToIP(sa);
@@ -139,7 +139,7 @@
 
 // Generic socket creation.
 func socket(net, laddr, raddr string, f, p, t int64, la, ra *syscall.Sockaddr)
-	(fd *netFD, err *os.Error)
+	(fd *netFD, err os.Error)
 {
 	// See ../syscall/exec.go for description of ForkLock.
 	syscall.ForkLock.RLock();
@@ -201,17 +201,17 @@
 	return c.fd.fd;
 }
 
-func (c *connBase) Read(b []byte) (n int, err *os.Error) {
+func (c *connBase) Read(b []byte) (n int, err os.Error) {
 	n, err = c.fd.Read(b);
 	return n, err
 }
 
-func (c *connBase) Write(b []byte) (n int, err *os.Error) {
+func (c *connBase) Write(b []byte) (n int, err os.Error) {
 	n, err = c.fd.Write(b);
 	return n, err
 }
 
-func (c *connBase) ReadFrom(b []byte) (n int, raddr string, err *os.Error) {
+func (c *connBase) ReadFrom(b []byte) (n int, raddr string, err os.Error) {
 	if c == nil {
 		return -1, "", os.EINVAL
 	}
@@ -219,7 +219,7 @@
 	return n, c.raddr, err
 }
 
-func (c *connBase) WriteTo(raddr string, b []byte) (n int, err *os.Error) {
+func (c *connBase) WriteTo(raddr string, b []byte) (n int, err os.Error) {
 	if c == nil {
 		return -1, os.EINVAL
 	}
@@ -230,7 +230,7 @@
 	return n, err
 }
 
-func (c *connBase) Close() *os.Error {
+func (c *connBase) Close() os.Error {
 	if c == nil {
 		return os.EINVAL
 	}
@@ -238,57 +238,57 @@
 }
 
 
-func setsockopt_int(fd, level, opt int64, value int) *os.Error {
+func setsockopt_int(fd, level, opt int64, value int) os.Error {
 	return os.ErrnoToError(syscall.Setsockopt_int(fd, level, opt, value));
 }
 
-func setsockopt_tv(fd, level, opt int64, nsec int64) *os.Error {
+func setsockopt_tv(fd, level, opt int64, nsec int64) os.Error {
 	return os.ErrnoToError(syscall.Setsockopt_tv(fd, level, opt, nsec));
 }
 
-func (c *connBase) SetReadBuffer(bytes int) *os.Error {
+func (c *connBase) SetReadBuffer(bytes int) os.Error {
 	return setsockopt_int(c.sysFD(), syscall.SOL_SOCKET, syscall.SO_RCVBUF, bytes);
 }
 
-func (c *connBase) SetWriteBuffer(bytes int) *os.Error {
+func (c *connBase) SetWriteBuffer(bytes int) os.Error {
 	return setsockopt_int(c.sysFD(), syscall.SOL_SOCKET, syscall.SO_SNDBUF, bytes);
 }
 
-func (c *connBase) SetReadTimeout(nsec int64) *os.Error {
+func (c *connBase) SetReadTimeout(nsec int64) os.Error {
 	c.fd.rdeadline_delta = nsec;
 	return nil;
 }
 
-func (c *connBase) SetWriteTimeout(nsec int64) *os.Error {
+func (c *connBase) SetWriteTimeout(nsec int64) os.Error {
 	c.fd.wdeadline_delta = nsec;
 	return nil;
 }
 
-func (c *connBase) SetTimeout(nsec int64) *os.Error {
+func (c *connBase) SetTimeout(nsec int64) os.Error {
 	if e := c.SetReadTimeout(nsec); e != nil {
 		return e
 	}
 	return c.SetWriteTimeout(nsec)
 }
 
-func (c *connBase) SetReuseAddr(reuse bool) *os.Error {
+func (c *connBase) SetReuseAddr(reuse bool) os.Error {
 	return setsockopt_int(c.sysFD(), syscall.SOL_SOCKET, syscall.SO_REUSEADDR, boolint(reuse));
 }
 
-func (c *connBase) BindToDevice(dev string) *os.Error {
+func (c *connBase) BindToDevice(dev string) os.Error {
 	// TODO(rsc): call setsockopt with null-terminated string pointer
 	return os.EINVAL
 }
 
-func (c *connBase) SetDontRoute(dontroute bool) *os.Error {
+func (c *connBase) SetDontRoute(dontroute bool) os.Error {
 	return setsockopt_int(c.sysFD(), syscall.SOL_SOCKET, syscall.SO_DONTROUTE, boolint(dontroute));
 }
 
-func (c *connBase) SetKeepAlive(keepalive bool) *os.Error {
+func (c *connBase) SetKeepAlive(keepalive bool) os.Error {
 	return setsockopt_int(c.sysFD(), syscall.SOL_SOCKET, syscall.SO_KEEPALIVE, boolint(keepalive));
 }
 
-func (c *connBase) SetLinger(sec int) *os.Error {
+func (c *connBase) SetLinger(sec int) os.Error {
 	e := syscall.Setsockopt_linger(c.sysFD(), syscall.SOL_SOCKET, syscall.SO_LINGER, sec);
 	return os.ErrnoToError(e);
 }
@@ -305,12 +305,12 @@
 const preferIPv4 = false
 
 func internetSocket(net, laddr, raddr string, proto int64, mode string)
-	(fd *netFD, err *os.Error)
+	(fd *netFD, err os.Error)
 {
 	// Parse addresses (unless they are empty).
 	var lip, rip IP;
 	var lport, rport int;
-	var lerr, rerr *os.Error;
+	var lerr, rerr os.Error;
 
 	if laddr != "" {
 		lip, lport, lerr = hostPortToIP(net, laddr, mode);
@@ -343,7 +343,7 @@
 		}
 	}
 
-	var cvt func(addr []byte, port int) (sa *syscall.Sockaddr, err *os.Error);
+	var cvt func(addr []byte, port int) (sa *syscall.Sockaddr, err os.Error);
 	var family int64;
 	if vers == 4 {
 		cvt = v4ToSockaddr;
@@ -378,7 +378,7 @@
 	connBase
 }
 
-func (c *ConnTCP) SetNoDelay(nodelay bool) *os.Error {
+func (c *ConnTCP) SetNoDelay(nodelay bool) os.Error {
 	if c == nil {
 		return os.EINVAL
 	}
@@ -393,7 +393,7 @@
 	return c
 }
 
-func DialTCP(net, laddr, raddr string) (c *ConnTCP, err *os.Error) {
+func DialTCP(net, laddr, raddr string) (c *ConnTCP, err os.Error) {
 	if raddr == "" {
 		return nil, MissingAddress
 	}
@@ -420,7 +420,7 @@
 	return c
 }
 
-func DialUDP(net, laddr, raddr string) (c *ConnUDP, err *os.Error) {
+func DialUDP(net, laddr, raddr string) (c *ConnUDP, err os.Error) {
 	if raddr == "" {
 		return nil, MissingAddress
 	}
@@ -441,48 +441,48 @@
 	// Read blocks until data is ready from the connection
 	// and then reads into b.  It returns the number
 	// of bytes read, or 0 if the connection has been closed.
-	Read(b []byte) (n int, err *os.Error);
+	Read(b []byte) (n int, err os.Error);
 
 	// Write writes the data in b to the connection.
-	Write(b []byte) (n int, err *os.Error);
+	Write(b []byte) (n int, err os.Error);
 
 	// Close closes the connection.
-	Close() *os.Error;
+	Close() os.Error;
 
 	// For packet-based protocols such as UDP,
 	// ReadFrom reads the next packet from the network,
 	// returning the number of bytes read and the remote
 	// address that sent them.
-	ReadFrom(b []byte) (n int, addr string, err *os.Error);
+	ReadFrom(b []byte) (n int, addr string, err os.Error);
 
 	// For packet-based protocols such as UDP,
 	// WriteTo writes the byte buffer b to the network
 	// as a single payload, sending it to the target address.
-	WriteTo(addr string, b []byte) (n int, err *os.Error);
+	WriteTo(addr string, b []byte) (n int, err os.Error);
 
 	// SetReadBuffer sets the size of the operating system's
 	// receive buffer associated with the connection.
-	SetReadBuffer(bytes int) *os.Error;
+	SetReadBuffer(bytes int) os.Error;
 
 	// SetReadBuffer sets the size of the operating system's
 	// transmit buffer associated with the connection.
-	SetWriteBuffer(bytes int) *os.Error;
+	SetWriteBuffer(bytes int) os.Error;
 
 	// SetTimeout sets the read and write deadlines associated
 	// with the connection.
-	SetTimeout(nsec int64) *os.Error;
+	SetTimeout(nsec int64) os.Error;
 
 	// SetReadTimeout sets the time (in nanoseconds) that
 	// Read will wait for data before returning os.EAGAIN.
 	// Setting nsec == 0 (the default) disables the deadline.
-	SetReadTimeout(nsec int64) *os.Error;
+	SetReadTimeout(nsec int64) os.Error;
 
 	// SetWriteTimeout sets the time (in nanoseconds) that
 	// Write will wait to send its data before returning os.EAGAIN.
 	// Setting nsec == 0 (the default) disables the deadline.
 	// Even if write times out, it may return n > 0, indicating that
 	// some of the data was successfully written.
-	SetWriteTimeout(nsec int64) *os.Error;
+	SetWriteTimeout(nsec int64) os.Error;
 
 	// SetLinger sets the behavior of Close() on a connection
 	// which still has data waiting to be sent or to be acknowledged.
@@ -495,22 +495,22 @@
 	//
 	// If sec > 0, Close blocks for at most sec seconds waiting for
 	// data to be sent and acknowledged.
-	SetLinger(sec int) *os.Error;
+	SetLinger(sec int) os.Error;
 
 	// SetReuseAddr sets whether it is okay to reuse addresses
 	// from recent connections that were not properly closed.
-	SetReuseAddr(reuseaddr bool) *os.Error;
+	SetReuseAddr(reuseaddr bool) os.Error;
 
 	// SetDontRoute sets whether outgoing messages should
 	// bypass the system routing tables.
-	SetDontRoute(dontroute bool) *os.Error;
+	SetDontRoute(dontroute bool) os.Error;
 
 	// SetKeepAlive sets whether the operating system should send
 	// keepalive messages on the connection.
-	SetKeepAlive(keepalive bool) *os.Error;
+	SetKeepAlive(keepalive bool) os.Error;
 
 	// BindToDevice binds a connection to a particular network device.
-	BindToDevice(dev string) *os.Error;
+	BindToDevice(dev string) os.Error;
 }
 
 // Dial connects to the remote address raddr on the network net.
@@ -528,7 +528,7 @@
 //	Dial("tcp", "", "google.com:80")
 //	Dial("tcp", "", "[de:ad:be:ef::ca:fe]:80")
 //	Dial("tcp", "127.0.0.1:123", "127.0.0.1:88")
-func Dial(net, laddr, raddr string) (c Conn, err *os.Error) {
+func Dial(net, laddr, raddr string) (c Conn, err os.Error) {
 	switch net {
 	case "tcp", "tcp4", "tcp6":
 		c, err := DialTCP(net, laddr, raddr);
@@ -557,8 +557,8 @@
 // A Listener is a generic network listener.
 // Accept waits for the next connection and Close closes the connection.
 type Listener interface {
-	Accept() (c Conn, raddr string, err *os.Error);
-	Close() *os.Error;
+	Accept() (c Conn, raddr string, err os.Error);
+	Close() os.Error;
 }
 
 // ListenerTCP is a TCP network listener.
@@ -571,7 +571,7 @@
 
 // ListenTCP announces on the TCP address laddr and returns a TCP listener.
 // Net must be "tcp", "tcp4", or "tcp6".
-func ListenTCP(net, laddr string) (l *ListenerTCP, err *os.Error) {
+func ListenTCP(net, laddr string) (l *ListenerTCP, err os.Error) {
 	fd, e := internetSocket(net, laddr, "", syscall.SOCK_STREAM, "listen");
 	if e != nil {
 		return nil, e
@@ -588,7 +588,7 @@
 
 // AcceptTCP accepts the next incoming call and returns the new connection
 // and the remote address.
-func (l *ListenerTCP) AcceptTCP() (c *ConnTCP, raddr string, err *os.Error) {
+func (l *ListenerTCP) AcceptTCP() (c *ConnTCP, raddr string, err os.Error) {
 	if l == nil || l.fd == nil || l.fd.fd < 0 {
 		return nil, "", os.EINVAL
 	}
@@ -607,7 +607,7 @@
 
 // Accept implements the accept method in the Listener interface;
 // it waits for the next call and returns a generic Conn.
-func (l *ListenerTCP) Accept() (c Conn, raddr string, err *os.Error) {
+func (l *ListenerTCP) Accept() (c Conn, raddr string, err os.Error) {
 	c1, r1, e1 := l.AcceptTCP();
 	if e1 != nil {
 		return nil, "", e1
@@ -617,7 +617,7 @@
 
 // Close stops listening on the TCP address.
 // Already Accepted connections are not closed.
-func (l *ListenerTCP) Close() *os.Error {
+func (l *ListenerTCP) Close() os.Error {
 	if l == nil || l.fd == nil {
 		return os.EINVAL
 	}
@@ -626,7 +626,7 @@
 
 // Listen announces on the local network address laddr.
 // The network string net must be "tcp", "tcp4", or "tcp6".
-func Listen(net, laddr string) (l Listener, err *os.Error) {
+func Listen(net, laddr string) (l Listener, err os.Error) {
 	switch net {
 	case "tcp", "tcp4", "tcp6":
 		l, err := ListenTCP(net, laddr);
diff --git a/src/lib/net/net_darwin.go b/src/lib/net/net_darwin.go
index 78a705a..7e85f08 100644
--- a/src/lib/net/net_darwin.go
+++ b/src/lib/net/net_darwin.go
@@ -11,7 +11,7 @@
 	"unsafe";
 )
 
-func v4ToSockaddr(p IP, port int) (sa1 *syscall.Sockaddr, err *os.Error) {
+func v4ToSockaddr(p IP, port int) (sa1 *syscall.Sockaddr, err os.Error) {
 	p = p.To4();
 	if p == nil || port < 0 || port > 0xFFFF {
 		return nil, os.EINVAL
@@ -27,7 +27,7 @@
 	return (*syscall.Sockaddr)(unsafe.Pointer(sa)), nil
 }
 
-func v6ToSockaddr(p IP, port int) (sa1 *syscall.Sockaddr, err *os.Error) {
+func v6ToSockaddr(p IP, port int) (sa1 *syscall.Sockaddr, err os.Error) {
 	p = p.To16();
 	if p == nil || port < 0 || port > 0xFFFF {
 		return nil, os.EINVAL
@@ -44,7 +44,7 @@
 }
 
 
-func sockaddrToIP(sa1 *syscall.Sockaddr) (p IP, port int, err *os.Error) {
+func sockaddrToIP(sa1 *syscall.Sockaddr) (p IP, port int, err os.Error) {
 	switch sa1.Family {
 	case syscall.AF_INET:
 		sa := (*syscall.SockaddrInet4)(unsafe.Pointer(sa1));
diff --git a/src/lib/net/net_linux.go b/src/lib/net/net_linux.go
index ddc13d3..b6bfe76 100644
--- a/src/lib/net/net_linux.go
+++ b/src/lib/net/net_linux.go
@@ -11,7 +11,7 @@
 	"unsafe";
 )
 
-func v4ToSockaddr(p IP, port int) (sa1 *syscall.Sockaddr, err *os.Error) {
+func v4ToSockaddr(p IP, port int) (sa1 *syscall.Sockaddr, err os.Error) {
 	p = p.To4();
 	if p == nil || port < 0 || port > 0xFFFF {
 		return nil, os.EINVAL
@@ -26,7 +26,7 @@
 	return (*syscall.Sockaddr)(unsafe.Pointer(sa)), nil
 }
 
-func v6ToSockaddr(p IP, port int) (sa1 *syscall.Sockaddr, err *os.Error) {
+func v6ToSockaddr(p IP, port int) (sa1 *syscall.Sockaddr, err os.Error) {
 	p = p.To16();
 	if p == nil || port < 0 || port > 0xFFFF {
 		return nil, os.EINVAL
@@ -49,7 +49,7 @@
 	return (*syscall.Sockaddr)(unsafe.Pointer(sa)), nil
 }
 
-func sockaddrToIP(sa1 *syscall.Sockaddr) (p IP, port int, err *os.Error) {
+func sockaddrToIP(sa1 *syscall.Sockaddr) (p IP, port int, err os.Error) {
 	switch sa1.Family {
 	case syscall.AF_INET:
 		sa := (*syscall.SockaddrInet4)(unsafe.Pointer(sa1));
diff --git a/src/lib/net/parse.go b/src/lib/net/parse.go
index 194f412..72aeff0 100644
--- a/src/lib/net/parse.go
+++ b/src/lib/net/parse.go
@@ -55,7 +55,7 @@
 	return
 }
 
-func open(name string) (*file, *os.Error) {
+func open(name string) (*file, os.Error) {
 	fd, err := os.Open(name, os.O_RDONLY, 0);
 	if err != nil {
 		return nil, err;
diff --git a/src/lib/net/port.go b/src/lib/net/port.go
index cc7f399..073af65 100644
--- a/src/lib/net/port.go
+++ b/src/lib/net/port.go
@@ -19,7 +19,7 @@
 var ErrNoService = os.NewError("unknown network service");
 
 var services map[string] map[string] int
-var servicesError *os.Error
+var servicesError os.Error
 
 func readServices() {
 	services = make(map[string] map[string] int);
@@ -55,7 +55,7 @@
 }
 
 // LookupPort looks up the port for the given network and service.
-func LookupPort(network, service string) (port int, err *os.Error) {
+func LookupPort(network, service string) (port int, err os.Error) {
 	once.Do(readServices);
 
 	switch network {