1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
package milter
import (
"bytes"
"strings"
)
// NULL terminator
const null = "\x00"
// DecodeCStrings splits a C style strings into a Go slice
func decodeCStrings(data []byte) []string {
if len(data) == 0 {
return nil
}
return strings.Split(strings.Trim(string(data), null), null)
}
// ReadCString reads and returns a C style string from []byte
func readCString(data []byte) string {
pos := bytes.IndexByte(data, 0)
if pos == -1 {
return string(data)
}
return string(data[0:pos])
}
// appendCString appends a C style string to the buffer and returns it (like append does).
func appendCString(dest []byte, s string) []byte {
dest = append(dest, []byte(s)...)
dest = append(dest, 0x00)
return dest
}
|