move ReadFile, WriteFile, and ReadDir into a separate io/ioutil package.
this breaks the dependency of package io on package bytes.

R=rsc
CC=golang-dev
https://golang.org/cl/163085
diff --git a/src/cmd/cgo/util.go b/src/cmd/cgo/util.go
index 53b3ef6..176e952 100644
--- a/src/cmd/cgo/util.go
+++ b/src/cmd/cgo/util.go
@@ -8,7 +8,7 @@
 	"exec";
 	"fmt";
 	"go/token";
-	"io";
+	"io/ioutil";
 	"os";
 )
 
@@ -57,11 +57,11 @@
 	}();
 	var xstdout []byte;	// TODO(rsc): delete after 6g can take address of out parameter
 	go func() {
-		xstdout, _ = io.ReadAll(r1);
+		xstdout, _ = ioutil.ReadAll(r1);
 		r1.Close();
 		c <- true;
 	}();
-	stderr, _ = io.ReadAll(r2);
+	stderr, _ = ioutil.ReadAll(r2);
 	r2.Close();
 	<-c;
 	<-c;
diff --git a/src/cmd/ebnflint/ebnflint.go b/src/cmd/ebnflint/ebnflint.go
index bd0ea34..4904780 100644
--- a/src/cmd/ebnflint/ebnflint.go
+++ b/src/cmd/ebnflint/ebnflint.go
@@ -10,7 +10,7 @@
 	"flag";
 	"fmt";
 	"go/scanner";
-	"io";
+	"io/ioutil";
 	"os";
 	"path";
 	"strings";
@@ -84,7 +84,7 @@
 		usage()
 	}
 
-	src, err := io.ReadFile(filename);
+	src, err := ioutil.ReadFile(filename);
 	if err != nil {
 		scanner.PrintError(os.Stderr, err)
 	}
diff --git a/src/cmd/godoc/godoc.go b/src/cmd/godoc/godoc.go
index 5f86100..ec89d69 100644
--- a/src/cmd/godoc/godoc.go
+++ b/src/cmd/godoc/godoc.go
@@ -15,6 +15,7 @@
 	"go/token";
 	"http";
 	"io";
+	"io/ioutil";
 	"log";
 	"os";
 	pathutil "path";
@@ -192,7 +193,7 @@
 		return &Directory{depth, path, name, "", nil}
 	}
 
-	list, _ := io.ReadDir(path);	// ignore errors
+	list, _ := ioutil.ReadDir(path);	// ignore errors
 
 	// determine number of subdirectories and package files
 	ndirs := 0;
@@ -633,7 +634,7 @@
 
 func readTemplate(name string) *template.Template {
 	path := pathutil.Join(*tmplroot, name);
-	data, err := io.ReadFile(path);
+	data, err := ioutil.ReadFile(path);
 	if err != nil {
 		log.Exitf("ReadFile %s: %v", path, err)
 	}
@@ -718,7 +719,7 @@
 
 func serveHTMLDoc(c *http.Conn, r *http.Request, path string) {
 	// get HTML body contents
-	src, err := io.ReadFile(path);
+	src, err := ioutil.ReadFile(path);
 	if err != nil {
 		log.Stderrf("%v", err);
 		http.NotFound(c, r);
@@ -815,7 +816,7 @@
 
 
 func serveTextFile(c *http.Conn, r *http.Request, path string) {
-	src, err := io.ReadFile(path);
+	src, err := ioutil.ReadFile(path);
 	if err != nil {
 		log.Stderrf("serveTextFile: %s", err)
 	}
@@ -834,7 +835,7 @@
 		return
 	}
 
-	list, err := io.ReadDir(path);
+	list, err := ioutil.ReadDir(path);
 	if err != nil {
 		http.NotFound(c, r);
 		return;
diff --git a/src/cmd/gofmt/gofmt.go b/src/cmd/gofmt/gofmt.go
index cea8d4d..b3a9685 100644
--- a/src/cmd/gofmt/gofmt.go
+++ b/src/cmd/gofmt/gofmt.go
@@ -12,7 +12,7 @@
 	"go/parser";
 	"go/printer";
 	"go/scanner";
-	"io";
+	"io/ioutil";
 	"os";
 	pathutil "path";
 	"strings";
@@ -86,7 +86,7 @@
 
 
 func processFile(f *os.File) os.Error {
-	src, err := io.ReadAll(f);
+	src, err := ioutil.ReadAll(f);
 	if err != nil {
 		return err
 	}
@@ -112,7 +112,7 @@
 			fmt.Fprintln(os.Stdout, f.Name())
 		}
 		if *write {
-			err = io.WriteFile(f.Name(), res.Bytes(), 0);
+			err = ioutil.WriteFile(f.Name(), res.Bytes(), 0);
 			if err != nil {
 				return err
 			}
diff --git a/src/cmd/hgpatch/main.go b/src/cmd/hgpatch/main.go
index 96b5ef4..3d2b081 100644
--- a/src/cmd/hgpatch/main.go
+++ b/src/cmd/hgpatch/main.go
@@ -11,6 +11,7 @@
 	"flag";
 	"fmt";
 	"io";
+	"io/ioutil";
 	"os";
 	"patch";
 	"path";
@@ -35,9 +36,9 @@
 	var err os.Error;
 	switch len(args) {
 	case 0:
-		data, err = io.ReadAll(os.Stdin)
+		data, err = ioutil.ReadAll(os.Stdin)
 	case 1:
-		data, err = io.ReadFile(args[0])
+		data, err = ioutil.ReadFile(args[0])
 	default:
 		usage()
 	}
@@ -87,7 +88,7 @@
 	}
 
 	// Apply changes in memory.
-	op, err := pset.Apply(io.ReadFile);
+	op, err := pset.Apply(ioutil.ReadFile);
 	chk(err);
 
 	// Write changes to disk copy: order of commands matters.
@@ -143,7 +144,7 @@
 			changed[o.Dst] = 1;
 		}
 		if o.Data != nil {
-			chk(io.WriteFile(o.Dst, o.Data, 0644));
+			chk(ioutil.WriteFile(o.Dst, o.Data, 0644));
 			if o.Verb == patch.Add {
 				undoRm(o.Dst)
 			} else {
diff --git a/src/pkg/Makefile b/src/pkg/Makefile
index 62173d5..dd2a858 100644
--- a/src/pkg/Makefile
+++ b/src/pkg/Makefile
@@ -70,6 +70,7 @@
 	image\
 	image/png\
 	io\
+	io/ioutil\
 	json\
 	log\
 	malloc\
diff --git a/src/pkg/archive/tar/writer_test.go b/src/pkg/archive/tar/writer_test.go
index 4a6c486..0df0144 100644
--- a/src/pkg/archive/tar/writer_test.go
+++ b/src/pkg/archive/tar/writer_test.go
@@ -8,6 +8,7 @@
 	"bytes";
 	"fmt";
 	"io";
+	"io/ioutil";
 	"testing";
 	"testing/iotest";
 )
@@ -121,7 +122,7 @@
 func TestWriter(t *testing.T) {
 testLoop:
 	for i, test := range writerTests {
-		expected, err := io.ReadFile(test.file);
+		expected, err := ioutil.ReadFile(test.file);
 		if err != nil {
 			t.Errorf("test %d: Unexpected error: %v", i, err);
 			continue;
diff --git a/src/pkg/compress/flate/deflate_test.go b/src/pkg/compress/flate/deflate_test.go
index 01e97f34d..9d5ada9 100644
--- a/src/pkg/compress/flate/deflate_test.go
+++ b/src/pkg/compress/flate/deflate_test.go
@@ -7,7 +7,7 @@
 import (
 	"bytes";
 	"fmt";
-	"io";
+	"io/ioutil";
 	"os";
 	"testing";
 )
@@ -96,7 +96,7 @@
 	w.Write(input);
 	w.Close();
 	inflater := NewInflater(buffer);
-	decompressed, err := io.ReadAll(inflater);
+	decompressed, err := ioutil.ReadAll(inflater);
 	if err != nil {
 		t.Errorf("reading inflater: %s", err);
 		return err;
diff --git a/src/pkg/compress/zlib/writer_test.go b/src/pkg/compress/zlib/writer_test.go
index 13c20d9..963a072 100644
--- a/src/pkg/compress/zlib/writer_test.go
+++ b/src/pkg/compress/zlib/writer_test.go
@@ -6,6 +6,7 @@
 
 import (
 	"io";
+	"io/ioutil";
 	"os";
 	"testing";
 )
@@ -72,8 +73,8 @@
 	defer zlibr.Close();
 
 	// Compare the two.
-	b0, err0 := io.ReadAll(golden);
-	b1, err1 := io.ReadAll(zlibr);
+	b0, err0 := ioutil.ReadAll(golden);
+	b1, err1 := ioutil.ReadAll(zlibr);
 	if err0 != nil {
 		t.Errorf("%s (level=%d): %v", fn, level, err0);
 		return;
diff --git a/src/pkg/debug/proc/proc_linux.go b/src/pkg/debug/proc/proc_linux.go
index c17e685..b719258 100644
--- a/src/pkg/debug/proc/proc_linux.go
+++ b/src/pkg/debug/proc/proc_linux.go
@@ -9,7 +9,7 @@
 import (
 	"container/vector";
 	"fmt";
-	"io";
+	"io/ioutil";
 	"os";
 	"runtime";
 	"strconv";
@@ -1215,7 +1215,7 @@
 			if err != nil {
 				// There could have been a race, or
 				// this process could be a zobmie.
-				statFile, err2 := io.ReadFile(taskPath + "/" + tidStr + "/stat");
+				statFile, err2 := ioutil.ReadFile(taskPath + "/" + tidStr + "/stat");
 				if err2 != nil {
 					switch err2 := err2.(type) {
 					case *os.PathError:
diff --git a/src/pkg/ebnf/ebnf_test.go b/src/pkg/ebnf/ebnf_test.go
index 3eda8d9..a487bdc 100644
--- a/src/pkg/ebnf/ebnf_test.go
+++ b/src/pkg/ebnf/ebnf_test.go
@@ -5,7 +5,7 @@
 package ebnf
 
 import (
-	"io";
+	"io/ioutil";
 	"strings";
 	"testing";
 )
@@ -65,7 +65,7 @@
 
 func TestFiles(t *testing.T) {
 	for _, filename := range files {
-		src, err := io.ReadFile(filename);
+		src, err := ioutil.ReadFile(filename);
 		if err != nil {
 			t.Fatal(err)
 		}
diff --git a/src/pkg/encoding/ascii85/ascii85_test.go b/src/pkg/encoding/ascii85/ascii85_test.go
index 40bb1a2..294f638 100644
--- a/src/pkg/encoding/ascii85/ascii85_test.go
+++ b/src/pkg/encoding/ascii85/ascii85_test.go
@@ -6,7 +6,7 @@
 
 import (
 	"bytes";
-	"io";
+	"io/ioutil";
 	"os";
 	"reflect";
 	"strings";
@@ -111,7 +111,7 @@
 func TestDecoder(t *testing.T) {
 	for _, p := range pairs {
 		decoder := NewDecoder(bytes.NewBufferString(p.encoded));
-		dbuf, err := io.ReadAll(decoder);
+		dbuf, err := ioutil.ReadAll(decoder);
 		if err != nil {
 			t.Fatal("Read failed", err)
 		}
@@ -176,7 +176,7 @@
 	if err != nil {
 		t.Fatalf("Encoder.Close() = %v want nil", err)
 	}
-	decoded, err := io.ReadAll(NewDecoder(encoded));
+	decoded, err := ioutil.ReadAll(NewDecoder(encoded));
 	if err != nil {
 		t.Fatalf("io.ReadAll(NewDecoder(...)): %v", err)
 	}
diff --git a/src/pkg/encoding/base64/base64_test.go b/src/pkg/encoding/base64/base64_test.go
index 51e40ed..3153a73 100644
--- a/src/pkg/encoding/base64/base64_test.go
+++ b/src/pkg/encoding/base64/base64_test.go
@@ -6,7 +6,7 @@
 
 import (
 	"bytes";
-	"io";
+	"io/ioutil";
 	"os";
 	"reflect";
 	"strings";
@@ -184,9 +184,9 @@
 	if err != nil {
 		t.Fatalf("Encoder.Close() = %v want nil", err)
 	}
-	decoded, err := io.ReadAll(NewDecoder(StdEncoding, encoded));
+	decoded, err := ioutil.ReadAll(NewDecoder(StdEncoding, encoded));
 	if err != nil {
-		t.Fatalf("io.ReadAll(NewDecoder(...)): %v", err)
+		t.Fatalf("ioutil.ReadAll(NewDecoder(...)): %v", err)
 	}
 
 	if !bytes.Equal(raw, decoded) {
diff --git a/src/pkg/encoding/git85/git_test.go b/src/pkg/encoding/git85/git_test.go
index 713524a..07367dd 100644
--- a/src/pkg/encoding/git85/git_test.go
+++ b/src/pkg/encoding/git85/git_test.go
@@ -6,7 +6,7 @@
 
 import (
 	"bytes";
-	"io";
+	"io/ioutil";
 	"os";
 	"reflect";
 	"strings";
@@ -117,7 +117,7 @@
 func TestDecoder(t *testing.T) {
 	for _, p := range gitPairs {
 		decoder := NewDecoder(bytes.NewBufferString(p.encoded));
-		dbuf, err := io.ReadAll(decoder);
+		dbuf, err := ioutil.ReadAll(decoder);
 		if err != nil {
 			t.Fatal("Read failed", err)
 		}
@@ -182,9 +182,9 @@
 	if err != nil {
 		t.Fatalf("Encoder.Close() = %v want nil", err)
 	}
-	decoded, err := io.ReadAll(NewDecoder(encoded));
+	decoded, err := ioutil.ReadAll(NewDecoder(encoded));
 	if err != nil {
-		t.Fatalf("io.ReadAll(NewDecoder(...)): %v", err)
+		t.Fatalf("ioutil.ReadAll(NewDecoder(...)): %v", err)
 	}
 
 	if !bytes.Equal(raw, decoded) {
diff --git a/src/pkg/exec/exec_test.go b/src/pkg/exec/exec_test.go
index af86b55..5a997fd 100644
--- a/src/pkg/exec/exec_test.go
+++ b/src/pkg/exec/exec_test.go
@@ -6,6 +6,7 @@
 
 import (
 	"io";
+	"io/ioutil";
 	"testing";
 )
 
@@ -17,7 +18,7 @@
 	}
 	io.WriteString(cmd.Stdin, "hello, world\n");
 	cmd.Stdin.Close();
-	buf, err := io.ReadAll(cmd.Stdout);
+	buf, err := ioutil.ReadAll(cmd.Stdout);
 	if err != nil {
 		t.Fatalf("reading from /bin/cat: %v", err)
 	}
@@ -35,7 +36,7 @@
 	if err != nil {
 		t.Fatalf("opencmd /bin/echo: %v", err)
 	}
-	buf, err := io.ReadAll(cmd.Stdout);
+	buf, err := ioutil.ReadAll(cmd.Stdout);
 	if err != nil {
 		t.Fatalf("reading from /bin/echo: %v", err)
 	}
diff --git a/src/pkg/exp/eval/main.go b/src/pkg/exp/eval/main.go
index 769fc07..376af6b 100644
--- a/src/pkg/exp/eval/main.go
+++ b/src/pkg/exp/eval/main.go
@@ -20,7 +20,7 @@
 	flag.Parse();
 	w := eval.NewWorld();
 	if *filename != "" {
-		data, err := io.ReadFile(*filename);
+		data, err := ioutil.ReadFile(*filename);
 		if err != nil {
 			println(err.String());
 			os.Exit(1);
diff --git a/src/pkg/go/parser/interface.go b/src/pkg/go/parser/interface.go
index 6704894..7e8f5d2 100644
--- a/src/pkg/go/parser/interface.go
+++ b/src/pkg/go/parser/interface.go
@@ -12,6 +12,7 @@
 	"go/ast";
 	"go/scanner";
 	"io";
+	"io/ioutil";
 	"os";
 	pathutil "path";
 	"strings";
@@ -46,7 +47,7 @@
 		}
 	}
 
-	return io.ReadFile(filename);
+	return ioutil.ReadFile(filename);
 }
 
 
@@ -138,7 +139,7 @@
 // flags that control the amount of source text parsed are ignored.
 //
 func ParsePkgFile(pkgname, filename string, mode uint) (*ast.File, os.Error) {
-	src, err := io.ReadFile(filename);
+	src, err := ioutil.ReadFile(filename);
 	if err != nil {
 		return nil, err
 	}
diff --git a/src/pkg/go/printer/printer_test.go b/src/pkg/go/printer/printer_test.go
index 5c10d4a..c85ddb0 100644
--- a/src/pkg/go/printer/printer_test.go
+++ b/src/pkg/go/printer/printer_test.go
@@ -7,7 +7,7 @@
 import (
 	"bytes";
 	"flag";
-	"io";
+	"io/ioutil";
 	"go/ast";
 	"go/parser";
 	"path";
@@ -70,14 +70,14 @@
 
 	// update golden files if necessary
 	if *update {
-		if err := io.WriteFile(golden, res, 0644); err != nil {
+		if err := ioutil.WriteFile(golden, res, 0644); err != nil {
 			t.Error(err)
 		}
 		return;
 	}
 
 	// get golden
-	gld, err := io.ReadFile(golden);
+	gld, err := ioutil.ReadFile(golden);
 	if err != nil {
 		t.Error(err);
 		return;
diff --git a/src/pkg/http/client_test.go b/src/pkg/http/client_test.go
index 8f52130..76aad7e 100644
--- a/src/pkg/http/client_test.go
+++ b/src/pkg/http/client_test.go
@@ -7,7 +7,7 @@
 package http
 
 import (
-	"io";
+	"io/ioutil";
 	"strings";
 	"testing";
 )
@@ -19,7 +19,7 @@
 	r, _, err := Get("http://www.google.com/robots.txt");
 	var b []byte;
 	if err == nil {
-		b, err = io.ReadAll(r.Body);
+		b, err = ioutil.ReadAll(r.Body);
 		r.Body.Close();
 	}
 	if err != nil {
diff --git a/src/pkg/http/request.go b/src/pkg/http/request.go
index ce49f7c..83374a5 100644
--- a/src/pkg/http/request.go
+++ b/src/pkg/http/request.go
@@ -15,6 +15,7 @@
 	"container/vector";
 	"fmt";
 	"io";
+	"io/ioutil";
 	"os";
 	"strconv";
 	"strings";
@@ -626,7 +627,7 @@
 		switch strings.Split(ct, ";", 2)[0] {
 		case "text/plain", "application/x-www-form-urlencoded", "":
 			var b []byte;
-			if b, err = io.ReadAll(r.Body); err != nil {
+			if b, err = ioutil.ReadAll(r.Body); err != nil {
 				return err
 			}
 			query = string(b);
diff --git a/src/pkg/io/Makefile b/src/pkg/io/Makefile
index cbe6916..8c27ce5 100644
--- a/src/pkg/io/Makefile
+++ b/src/pkg/io/Makefile
@@ -8,6 +8,5 @@
 GOFILES=\
 	io.go\
 	pipe.go\
-	utils.go\
 
 include ../../Make.pkg
diff --git a/src/pkg/io/io.go b/src/pkg/io/io.go
index b389af4..c4850da 100644
--- a/src/pkg/io/io.go
+++ b/src/pkg/io/io.go
@@ -5,8 +5,7 @@
 // This package provides basic interfaces to I/O primitives.
 // Its primary job is to wrap existing implementations of such primitives,
 // such as those in package os, into shared public interfaces that
-// abstract the functionality.
-// It also provides buffering primitives and some other basic operations.
+// abstract the functionality, plus some other related primitives.
 package io
 
 import (
diff --git a/src/pkg/io/ioutil/Makefile b/src/pkg/io/ioutil/Makefile
new file mode 100644
index 0000000..3abf714
--- /dev/null
+++ b/src/pkg/io/ioutil/Makefile
@@ -0,0 +1,11 @@
+# Copyright 2009 The Go Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style
+# license that can be found in the LICENSE file.
+
+include ../../../Make.$(GOARCH)
+
+TARG=io/ioutil
+GOFILES=\
+	ioutil.go\
+
+include ../../../Make.pkg
diff --git a/src/pkg/io/utils.go b/src/pkg/io/ioutil/ioutil.go
similarity index 93%
rename from src/pkg/io/utils.go
rename to src/pkg/io/ioutil/ioutil.go
index 0e0b84a..a38e488 100644
--- a/src/pkg/io/utils.go
+++ b/src/pkg/io/ioutil/ioutil.go
@@ -4,18 +4,19 @@
 
 // Utility functions.
 
-package io
+package ioutil
 
 import (
 	"bytes";
+	"io";
 	"os";
 	"sort";
 )
 
 // ReadAll reads from r until an error or EOF and returns the data it read.
-func ReadAll(r Reader) ([]byte, os.Error) {
+func ReadAll(r io.Reader) ([]byte, os.Error) {
 	var buf bytes.Buffer;
-	_, err := Copy(&buf, r);
+	_, err := io.Copy(&buf, r);
 	return buf.Bytes(), err;
 }
 
@@ -41,7 +42,7 @@
 	// we'll either waste some space off the end or reallocate as needed, but
 	// in the overwhelmingly common case we'll get it just right.
 	buf := bytes.NewBuffer(make([]byte, n)[0:0]);
-	_, err = Copy(buf, f);
+	_, err = io.Copy(buf, f);
 	return buf.Bytes(), err;
 }
 
@@ -56,7 +57,7 @@
 	n, err := f.Write(data);
 	f.Close();
 	if err == nil && n < len(data) {
-		err = ErrShortWrite
+		err = io.ErrShortWrite
 	}
 	return err;
 }
diff --git a/src/pkg/io/utils_test.go b/src/pkg/io/ioutil/ioutil_test.go
similarity index 94%
rename from src/pkg/io/utils_test.go
rename to src/pkg/io/ioutil/ioutil_test.go
index b7f6e80..d0720f2 100644
--- a/src/pkg/io/utils_test.go
+++ b/src/pkg/io/ioutil/ioutil_test.go
@@ -2,10 +2,10 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-package io_test
+package ioutil_test
 
 import (
-	. "io";
+	. "io/ioutil";
 	"os";
 	"strings";
 	"testing";
@@ -28,7 +28,7 @@
 		t.Fatalf("ReadFile %s: error expected, none found", filename)
 	}
 
-	filename = "utils_test.go";
+	filename = "ioutil_test.go";
 	contents, err = ReadFile(filename);
 	if err != nil {
 		t.Fatalf("ReadFile %s: %v", filename, err)
@@ -78,7 +78,7 @@
 	foundObj := false;
 	for _, dir := range list {
 		switch {
-		case dir.IsRegular() && dir.Name == "utils_test.go":
+		case dir.IsRegular() && dir.Name == "ioutil_test.go":
 			foundTest = true
 		case dir.IsDirectory() && dir.Name == "_obj":
 			foundObj = true
diff --git a/src/pkg/os/os_test.go b/src/pkg/os/os_test.go
index 8c39019..ed3d955 100644
--- a/src/pkg/os/os_test.go
+++ b/src/pkg/os/os_test.go
@@ -8,6 +8,7 @@
 	"bytes";
 	"fmt";
 	"io";
+	"io/ioutil";
 	. "os";
 	"strings";
 	"testing";
@@ -666,7 +667,7 @@
 		t.Fatalf("WriteAt 7: %d, %v", n, err)
 	}
 
-	b, err := io.ReadFile("_obj/writetest");
+	b, err := ioutil.ReadFile("_obj/writetest");
 	if err != nil {
 		t.Fatalf("ReadFile _obj/writetest: %v", err)
 	}
diff --git a/src/pkg/path/path.go b/src/pkg/path/path.go
index e5b9e98..59deb5c 100644
--- a/src/pkg/path/path.go
+++ b/src/pkg/path/path.go
@@ -7,7 +7,7 @@
 package path
 
 import (
-	"io";
+	"io/ioutil";
 	"os";
 	"strings";
 )
@@ -155,7 +155,7 @@
 		return	// skip directory entries
 	}
 
-	list, err := io.ReadDir(path);
+	list, err := ioutil.ReadDir(path);
 	if err != nil {
 		if errors != nil {
 			errors <- err
diff --git a/src/pkg/time/zoneinfo.go b/src/pkg/time/zoneinfo.go
index 40f8f0f..8d8048a 100644
--- a/src/pkg/time/zoneinfo.go
+++ b/src/pkg/time/zoneinfo.go
@@ -10,7 +10,7 @@
 package time
 
 import (
-	"io";
+	"io/ioutil";
 	"once";
 	"os";
 )
@@ -195,7 +195,7 @@
 }
 
 func readinfofile(name string) ([]zonetime, bool) {
-	buf, err := io.ReadFile(name);
+	buf, err := ioutil.ReadFile(name);
 	if err != nil {
 		return nil, false
 	}