package main import ( "errors" "strings" ) var err_imap_generic = errors.New("Error in IMAP command received by server.") func parse_imap_line(line string) (tag, cmd, param string, err error) { line = strings.TrimSuffix(line, "\n") line = strings.TrimSuffix(line, "\r") tag_end := strings.IndexByte(line, ' ') if tag_end == -1 { err = err_imap_generic return } tag = line[:tag_end] rest := line[tag_end+1:] cmd_end := strings.IndexByte(rest, ' ') var param_start int if cmd_end == -1 { cmd_end = len(rest) param_start = len(rest) } else { param_start = cmd_end + 1 } cmd = strings.ToUpper(rest[:cmd_end]) param = rest[param_start:] return }