From 0b6f8adb1240ec360868d8085f85bab13a9f37ec Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Sat, 16 May 2026 09:05:22 +0000 Subject: object/signature: Most users of parse do not need specific errors --- object/signature/errors.go | 6 ------ object/signature/parse.go | 28 +++++++++++++++------------- 2 files changed, 15 insertions(+), 19 deletions(-) delete mode 100644 object/signature/errors.go diff --git a/object/signature/errors.go b/object/signature/errors.go deleted file mode 100644 index 83bb5e4c..00000000 --- a/object/signature/errors.go +++ /dev/null @@ -1,6 +0,0 @@ -package signature - -import "errors" - -// ErrInvalidSignature indicates an attempt to parse an invalid signature. -var ErrInvalidSignature = errors.New("object: signature: invalid signature") diff --git a/object/signature/parse.go b/object/signature/parse.go index e633f017..23c378f3 100644 --- a/object/signature/parse.go +++ b/object/signature/parse.go @@ -2,24 +2,26 @@ package signature import ( "bytes" - "fmt" "strconv" "codeberg.org/lindenii/furgit/internal/intconv" ) +// ErrInvalidSignature indicates an attempt to parse an invalid signature. +var ErrInvalidSignature = errors.New("object: signature: invalid signature") + // Parse parses a canonical Git signature line. // // Labels: Life-Independent. func Parse(line []byte) (*Signature, error) { lt := bytes.IndexByte(line, '<') if lt < 0 { - return nil, fmt.Errorf("%w: missing opening <", ErrInvalidSignature) + return nil, ErrInvalidSignature } gtRel := bytes.IndexByte(line[lt+1:], '>') if gtRel < 0 { - return nil, fmt.Errorf("%w: missing closing >", ErrInvalidSignature) + return nil, ErrInvalidSignature } gt := lt + 1 + gtRel @@ -29,24 +31,24 @@ func Parse(line []byte) (*Signature, error) { rest := line[gt+1:] if len(rest) == 0 || rest[0] != ' ' { - return nil, fmt.Errorf("%w: missing timestamp separator", ErrInvalidSignature) + return nil, ErrInvalidSignature } rest = rest[1:] before, after, ok := bytes.Cut(rest, []byte{' '}) if !ok { - return nil, fmt.Errorf("%w: missing timezone separator", ErrInvalidSignature) + return nil, ErrInvalidSignature } when, err := strconv.ParseInt(string(before), 10, 64) if err != nil { - return nil, fmt.Errorf("object: signature: invalid timestamp: %w", err) + return nil, ErrInvalidSignature } tz := after if len(tz) < 5 { - return nil, fmt.Errorf("%w: invalid timezone encoding", ErrInvalidSignature) + return nil, ErrInvalidSignature } sign := 1 @@ -56,32 +58,32 @@ func Parse(line []byte) (*Signature, error) { sign = -1 case '+': default: - return nil, fmt.Errorf("%w: invalid timezone sign", ErrInvalidSignature) + return nil, ErrInvalidSignature } hh, err := strconv.Atoi(string(tz[1:3])) if err != nil { - return nil, fmt.Errorf("object: signature: invalid timezone hours: %w", err) + return nil, ErrInvalidSignature } mm, err := strconv.Atoi(string(tz[3:5])) if err != nil { - return nil, fmt.Errorf("object: signature: invalid timezone minutes: %w", err) + return nil, ErrInvalidSignature } if hh < 0 || hh > 23 { - return nil, fmt.Errorf("%w: invalid timezone hours range", ErrInvalidSignature) + return nil, ErrInvalidSignature } if mm < 0 || mm > 59 { - return nil, fmt.Errorf("%w: invalid timezone minutes range", ErrInvalidSignature) + return nil, ErrInvalidSignature } total := int64(hh)*60 + int64(mm) offset, err := intconv.Int64ToInt32(total) if err != nil { - return nil, fmt.Errorf("%w: timezone overflow", ErrInvalidSignature) + return nil, ErrInvalidSignature } if sign < 0 { -- cgit v1.3.1-10-gc9f91