diff options
Diffstat (limited to 'strconv.go')
-rw-r--r-- | strconv.go | 12 |
1 files changed, 11 insertions, 1 deletions
@@ -4,12 +4,13 @@ import ( "fmt" "strconv" "strings" + "net/url" ) func parseUid(s string) (uint32, error) { uid, err := strconv.ParseUint(s, 10, 32) if err != nil { - return 0, err + return 0, fmt.Errorf("invalid UID: %v", err) } if uid == 0 { return 0, fmt.Errorf("UID must be non-zero") @@ -17,6 +18,15 @@ func parseUid(s string) (uint32, error) { return uint32(uid), nil } +func parseMboxAndUid(mboxString, uidString string) (string, uint32, error) { + mboxName, err := url.PathUnescape(mboxString) + if err != nil { + return "", 0, fmt.Errorf("invalid mailbox name: %v", err) + } + uid, err := parseUid(uidString) + return mboxName, uid, err +} + func parsePartPath(s string) ([]int, error) { if s == "" { return nil, nil |