prefix writer: simplify, preserve trailing \n
diff --git a/gexec/prefixed_writer.go b/gexec/prefixed_writer.go
index 556182b..05e695a 100644
--- a/gexec/prefixed_writer.go
+++ b/gexec/prefixed_writer.go
@@ -1,7 +1,6 @@
 package gexec
 
 import (
-	"bytes"
 	"io"
 	"sync"
 )
@@ -14,19 +13,18 @@
 gexec.Start(cmd, NewPrefixedWriter("[my-cmd] ", GinkgoWriter), NewPrefixedWriter("[my-cmd] ", GinkgoWriter))
 */
 type PrefixedWriter struct {
-	prefix       []byte
-	writer       io.Writer
-	lock         *sync.Mutex
-	isNewLine    bool
-	isFirstWrite bool
+	prefix        []byte
+	writer        io.Writer
+	lock          *sync.Mutex
+	atStartOfLine bool
 }
 
 func NewPrefixedWriter(prefix string, writer io.Writer) *PrefixedWriter {
 	return &PrefixedWriter{
-		prefix:       []byte(prefix),
-		writer:       writer,
-		lock:         &sync.Mutex{},
-		isFirstWrite: true,
+		prefix:        []byte(prefix),
+		writer:        writer,
+		lock:          &sync.Mutex{},
+		atStartOfLine: true,
 	}
 }
 
@@ -34,46 +32,21 @@
 	w.lock.Lock()
 	defer w.lock.Unlock()
 
-	newLine := []byte("\n")
-	segments := bytes.Split(b, newLine)
+	toWrite := []byte{}
 
-	if len(segments) != 0 {
-		toWrite := []byte{}
-		if w.isFirstWrite {
+	for _, c := range b {
+		if w.atStartOfLine {
 			toWrite = append(toWrite, w.prefix...)
-			toWrite = append(toWrite, segments[0]...)
-			w.isFirstWrite = false
-		} else if w.isNewLine {
-			toWrite = append(toWrite, newLine...)
-			toWrite = append(toWrite, w.prefix...)
-			toWrite = append(toWrite, segments[0]...)
-		} else {
-			toWrite = append(toWrite, segments[0]...)
 		}
 
-		for i := 1; i < len(segments)-1; i++ {
-			toWrite = append(toWrite, newLine...)
-			toWrite = append(toWrite, w.prefix...)
-			toWrite = append(toWrite, segments[i]...)
-		}
+		toWrite = append(toWrite, c)
 
-		if len(segments) > 1 {
-			lastSegment := segments[len(segments)-1]
+		w.atStartOfLine = c == '\n'
+	}
 
-			if len(lastSegment) == 0 {
-				w.isNewLine = true
-			} else {
-				toWrite = append(toWrite, newLine...)
-				toWrite = append(toWrite, w.prefix...)
-				toWrite = append(toWrite, lastSegment...)
-				w.isNewLine = false
-			}
-		}
-
-		_, err := w.writer.Write(toWrite)
-		if err != nil {
-			return 0, err
-		}
+	_, err := w.writer.Write(toWrite)
+	if err != nil {
+		return 0, err
 	}
 
 	return len(b), nil
diff --git a/gexec/prefixed_writer_test.go b/gexec/prefixed_writer_test.go
index 27f7487..8657d0c 100644
--- a/gexec/prefixed_writer_test.go
+++ b/gexec/prefixed_writer_test.go
@@ -2,6 +2,7 @@
 
 import (
 	"bytes"
+
 	. "github.com/onsi/gomega/gexec"
 
 	. "github.com/onsi/ginkgo"
@@ -36,6 +37,7 @@
 [p]nopqrs
 [p]tuv
 [p]wxyz
-[p]`))
+[p]
+`))
 	})
 })