aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--file.go35
-rw-r--r--file_test.go8
2 files changed, 29 insertions, 14 deletions
diff --git a/file.go b/file.go
index eaee236..795dda0 100644
--- a/file.go
+++ b/file.go
@@ -5,6 +5,7 @@ import (
"bytes"
"errors"
"fmt"
+ "io"
"io/ioutil"
"os"
"strings"
@@ -29,13 +30,8 @@ const (
sigFrom = "signature from %s"
)
-func ParseFile(fname string) (File, error) {
- fd, err := os.Open(fname)
- if err != nil {
- return File{}, err
- }
- defer fd.Close()
- buf := bufio.NewReader(fd)
+func Parse(r io.Reader) (File, error) {
+ buf := bufio.NewReader(r)
comment, err := buf.ReadString('\n')
if err != nil {
return File{}, err
@@ -59,16 +55,29 @@ func ParseFile(fname string) (File, error) {
}, nil
}
-func (f File) EncodeFile(fname string) error {
- fd, err := os.Create(fname)
+func ParseFile(fname string) (File, error) {
+ fd, err := os.Open(fname)
if err != nil {
- return err
+ return File{}, err
}
defer fd.Close()
- fmt.Fprintln(fd, commentHdr, f.Comment)
- fmt.Fprintln(fd, string(f.B64))
+ return Parse(fd)
+}
+
+func (f File) Encode(w io.Writer) error {
+ fmt.Fprintf(w, "%v%v\n", commentHdr, f.Comment)
+ fmt.Fprintf(w, "%v\n", string(f.B64))
if f.Body != nil {
- fmt.Fprintln(fd, string(f.Body))
+ fmt.Fprintf(w, "%v", string(f.Body))
}
return nil
}
+
+func (f File) EncodeFile(fname string) error {
+ fd, err := os.Create(fname)
+ if err != nil {
+ return err
+ }
+ defer fd.Close()
+ return f.Encode(fd)
+}
diff --git a/file_test.go b/file_test.go
index 218da39..1f39988 100644
--- a/file_test.go
+++ b/file_test.go
@@ -1,6 +1,9 @@
package main
-import "testing"
+import (
+ "bytes"
+ "testing"
+)
var tc = []string{
"testcases/dim13.sec",
@@ -15,5 +18,8 @@ func TestParseFile(t *testing.T) {
t.Error(err)
}
t.Log(f)
+ buf := new(bytes.Buffer)
+ f.Encode(buf)
+ t.Logf("%v", buf.String())
}
}