aboutsummaryrefslogtreecommitdiff
path: root/vendor/github.com/go-logfmt
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/go-logfmt')
-rw-r--r--vendor/github.com/go-logfmt/logfmt/.gitignore5
-rw-r--r--vendor/github.com/go-logfmt/logfmt/.travis.yml15
-rw-r--r--vendor/github.com/go-logfmt/logfmt/CHANGELOG.md48
-rw-r--r--vendor/github.com/go-logfmt/logfmt/README.md66
-rw-r--r--vendor/github.com/go-logfmt/logfmt/decode.go6
-rw-r--r--vendor/github.com/go-logfmt/logfmt/encode.go39
-rw-r--r--vendor/github.com/go-logfmt/logfmt/fuzz.go126
-rw-r--r--vendor/github.com/go-logfmt/logfmt/go.mod3
8 files changed, 108 insertions, 200 deletions
diff --git a/vendor/github.com/go-logfmt/logfmt/.gitignore b/vendor/github.com/go-logfmt/logfmt/.gitignore
index 320e53e..1d74e21 100644
--- a/vendor/github.com/go-logfmt/logfmt/.gitignore
+++ b/vendor/github.com/go-logfmt/logfmt/.gitignore
@@ -1,4 +1 @@
-_testdata/
-_testdata2/
-logfmt-fuzz.zip
-logfmt.test.exe
+.vscode/
diff --git a/vendor/github.com/go-logfmt/logfmt/.travis.yml b/vendor/github.com/go-logfmt/logfmt/.travis.yml
deleted file mode 100644
index b599f65..0000000
--- a/vendor/github.com/go-logfmt/logfmt/.travis.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-language: go
-sudo: false
-go:
- - 1.3
- - 1.4
- - 1.5
- - 1.6
- - tip
-
-before_install:
- - go get github.com/mattn/goveralls
- - go get golang.org/x/tools/cmd/cover
-
-script:
- - goveralls -service=travis-ci
diff --git a/vendor/github.com/go-logfmt/logfmt/CHANGELOG.md b/vendor/github.com/go-logfmt/logfmt/CHANGELOG.md
new file mode 100644
index 0000000..1a9a27b
--- /dev/null
+++ b/vendor/github.com/go-logfmt/logfmt/CHANGELOG.md
@@ -0,0 +1,48 @@
+# Changelog
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
+## [0.5.0] - 2020-01-03
+
+### Changed
+- Remove the dependency on github.com/kr/logfmt by [@ChrisHines]
+- Move fuzz code to github.com/go-logfmt/fuzzlogfmt by [@ChrisHines]
+
+## [0.4.0] - 2018-11-21
+
+### Added
+- Go module support by [@ChrisHines]
+- CHANGELOG by [@ChrisHines]
+
+### Changed
+- Drop invalid runes from keys instead of returning ErrInvalidKey by [@ChrisHines]
+- On panic while printing, attempt to print panic value by [@bboreham]
+
+## [0.3.0] - 2016-11-15
+### Added
+- Pool buffers for quoted strings and byte slices by [@nussjustin]
+### Fixed
+- Fuzz fix, quote invalid UTF-8 values by [@judwhite]
+
+## [0.2.0] - 2016-05-08
+### Added
+- Encoder.EncodeKeyvals by [@ChrisHines]
+
+## [0.1.0] - 2016-03-28
+### Added
+- Encoder by [@ChrisHines]
+- Decoder by [@ChrisHines]
+- MarshalKeyvals by [@ChrisHines]
+
+[0.5.0]: https://github.com/go-logfmt/logfmt/compare/v0.4.0...v0.5.0
+[0.4.0]: https://github.com/go-logfmt/logfmt/compare/v0.3.0...v0.4.0
+[0.3.0]: https://github.com/go-logfmt/logfmt/compare/v0.2.0...v0.3.0
+[0.2.0]: https://github.com/go-logfmt/logfmt/compare/v0.1.0...v0.2.0
+[0.1.0]: https://github.com/go-logfmt/logfmt/commits/v0.1.0
+
+[@ChrisHines]: https://github.com/ChrisHines
+[@bboreham]: https://github.com/bboreham
+[@judwhite]: https://github.com/judwhite
+[@nussjustin]: https://github.com/nussjustin
diff --git a/vendor/github.com/go-logfmt/logfmt/README.md b/vendor/github.com/go-logfmt/logfmt/README.md
index 3a8f10b..8e48fcd 100644
--- a/vendor/github.com/go-logfmt/logfmt/README.md
+++ b/vendor/github.com/go-logfmt/logfmt/README.md
@@ -1,33 +1,33 @@
-[![GoDoc](https://godoc.org/github.com/go-logfmt/logfmt?status.svg)](https://godoc.org/github.com/go-logfmt/logfmt)
-[![Go Report Card](https://goreportcard.com/badge/go-logfmt/logfmt)](https://goreportcard.com/report/go-logfmt/logfmt)
-[![TravisCI](https://travis-ci.org/go-logfmt/logfmt.svg?branch=master)](https://travis-ci.org/go-logfmt/logfmt)
-[![Coverage Status](https://coveralls.io/repos/github/go-logfmt/logfmt/badge.svg?branch=master)](https://coveralls.io/github/go-logfmt/logfmt?branch=master)
-
-# logfmt
-
-Package logfmt implements utilities to marshal and unmarshal data in the [logfmt
-format](https://brandur.org/logfmt). It provides an API similar to
-[encoding/json](http://golang.org/pkg/encoding/json/) and
-[encoding/xml](http://golang.org/pkg/encoding/xml/).
-
-The logfmt format was first documented by Brandur Leach in [this
-article](https://brandur.org/logfmt). The format has not been formally
-standardized. The most authoritative public specification to date has been the
-documentation of a Go Language [package](http://godoc.org/github.com/kr/logfmt)
-written by Blake Mizerany and Keith Rarick.
-
-## Goals
-
-This project attempts to conform as closely as possible to the prior art, while
-also removing ambiguity where necessary to provide well behaved encoder and
-decoder implementations.
-
-## Non-goals
-
-This project does not attempt to formally standardize the logfmt format. In the
-event that logfmt is standardized this project would take conforming to the
-standard as a goal.
-
-## Versioning
-
-Package logfmt publishes releases via [semver](http://semver.org/) compatible Git tags prefixed with a single 'v'.
+[![Go Reference](https://pkg.go.dev/badge/github.com/go-logfmt/logfmt.svg)](https://pkg.go.dev/github.com/go-logfmt/logfmt)
+[![Go Report Card](https://goreportcard.com/badge/go-logfmt/logfmt)](https://goreportcard.com/report/go-logfmt/logfmt)
+[![Github Actions](https://github.com/go-logfmt/logfmt/actions/workflows/test.yml/badge.svg)](https://github.com/go-logfmt/logfmt/actions/workflows/test.yml)
+[![Coverage Status](https://coveralls.io/repos/github/go-logfmt/logfmt/badge.svg?branch=master)](https://coveralls.io/github/go-logfmt/logfmt?branch=master)
+
+# logfmt
+
+Package logfmt implements utilities to marshal and unmarshal data in the [logfmt
+format](https://brandur.org/logfmt). It provides an API similar to
+[encoding/json](http://golang.org/pkg/encoding/json/) and
+[encoding/xml](http://golang.org/pkg/encoding/xml/).
+
+The logfmt format was first documented by Brandur Leach in [this
+article](https://brandur.org/logfmt). The format has not been formally
+standardized. The most authoritative public specification to date has been the
+documentation of a Go Language [package](http://godoc.org/github.com/kr/logfmt)
+written by Blake Mizerany and Keith Rarick.
+
+## Goals
+
+This project attempts to conform as closely as possible to the prior art, while
+also removing ambiguity where necessary to provide well behaved encoder and
+decoder implementations.
+
+## Non-goals
+
+This project does not attempt to formally standardize the logfmt format. In the
+event that logfmt is standardized this project would take conforming to the
+standard as a goal.
+
+## Versioning
+
+Package logfmt publishes releases via [semver](http://semver.org/) compatible Git tags prefixed with a single 'v'.
diff --git a/vendor/github.com/go-logfmt/logfmt/decode.go b/vendor/github.com/go-logfmt/logfmt/decode.go
index 04e0eff..2013708 100644
--- a/vendor/github.com/go-logfmt/logfmt/decode.go
+++ b/vendor/github.com/go-logfmt/logfmt/decode.go
@@ -79,7 +79,7 @@ key:
dec.pos += p
if dec.pos > start {
dec.key = line[start:dec.pos]
- if multibyte && bytes.IndexRune(dec.key, utf8.RuneError) != -1 {
+ if multibyte && bytes.ContainsRune(dec.key, utf8.RuneError) {
dec.syntaxError(invalidKeyError)
return false
}
@@ -97,7 +97,7 @@ key:
dec.pos += p
if dec.pos > start {
dec.key = line[start:dec.pos]
- if multibyte && bytes.IndexRune(dec.key, utf8.RuneError) != -1 {
+ if multibyte && bytes.ContainsRune(dec.key, utf8.RuneError) {
dec.syntaxError(invalidKeyError)
return false
}
@@ -110,7 +110,7 @@ key:
dec.pos = len(line)
if dec.pos > start {
dec.key = line[start:dec.pos]
- if multibyte && bytes.IndexRune(dec.key, utf8.RuneError) != -1 {
+ if multibyte && bytes.ContainsRune(dec.key, utf8.RuneError) {
dec.syntaxError(invalidKeyError)
return false
}
diff --git a/vendor/github.com/go-logfmt/logfmt/encode.go b/vendor/github.com/go-logfmt/logfmt/encode.go
index 55f1603..4ea9d23 100644
--- a/vendor/github.com/go-logfmt/logfmt/encode.go
+++ b/vendor/github.com/go-logfmt/logfmt/encode.go
@@ -110,8 +110,8 @@ func (e *MarshalerError) Error() string {
// a nil interface or pointer value.
var ErrNilKey = errors.New("nil key")
-// ErrInvalidKey is returned by Marshal functions and Encoder methods if a key
-// contains an invalid character.
+// ErrInvalidKey is returned by Marshal functions and Encoder methods if, after
+// dropping invalid runes, a key is empty.
var ErrInvalidKey = errors.New("invalid key")
// ErrUnsupportedKeyType is returned by Encoder methods if a key has an
@@ -165,31 +165,32 @@ func writeKey(w io.Writer, key interface{}) error {
}
}
-func invalidKeyRune(r rune) bool {
- return r <= ' ' || r == '=' || r == '"' || r == utf8.RuneError
-}
-
-func invalidKeyString(key string) bool {
- return len(key) == 0 || strings.IndexFunc(key, invalidKeyRune) != -1
-}
-
-func invalidKey(key []byte) bool {
- return len(key) == 0 || bytes.IndexFunc(key, invalidKeyRune) != -1
+// keyRuneFilter returns r for all valid key runes, and -1 for all invalid key
+// runes. When used as the mapping function for strings.Map and bytes.Map
+// functions it causes them to remove invalid key runes from strings or byte
+// slices respectively.
+func keyRuneFilter(r rune) rune {
+ if r <= ' ' || r == '=' || r == '"' || r == utf8.RuneError {
+ return -1
+ }
+ return r
}
func writeStringKey(w io.Writer, key string) error {
- if invalidKeyString(key) {
+ k := strings.Map(keyRuneFilter, key)
+ if k == "" {
return ErrInvalidKey
}
- _, err := io.WriteString(w, key)
+ _, err := io.WriteString(w, k)
return err
}
func writeBytesKey(w io.Writer, key []byte) error {
- if invalidKey(key) {
+ k := bytes.Map(keyRuneFilter, key)
+ if len(k) == 0 {
return ErrInvalidKey
}
- _, err := w.Write(key)
+ _, err := w.Write(k)
return err
}
@@ -278,7 +279,7 @@ func safeError(err error) (s string, ok bool) {
if v := reflect.ValueOf(err); v.Kind() == reflect.Ptr && v.IsNil() {
s, ok = "null", false
} else {
- panic(panicVal)
+ s, ok = fmt.Sprintf("PANIC:%v", panicVal), false
}
}
}()
@@ -292,7 +293,7 @@ func safeString(str fmt.Stringer) (s string, ok bool) {
if v := reflect.ValueOf(str); v.Kind() == reflect.Ptr && v.IsNil() {
s, ok = "null", false
} else {
- panic(panicVal)
+ s, ok = fmt.Sprintf("PANIC:%v", panicVal), true
}
}
}()
@@ -306,7 +307,7 @@ func safeMarshal(tm encoding.TextMarshaler) (b []byte, err error) {
if v := reflect.ValueOf(tm); v.Kind() == reflect.Ptr && v.IsNil() {
b, err = nil, nil
} else {
- panic(panicVal)
+ b, err = nil, fmt.Errorf("panic when marshalling: %s", panicVal)
}
}
}()
diff --git a/vendor/github.com/go-logfmt/logfmt/fuzz.go b/vendor/github.com/go-logfmt/logfmt/fuzz.go
deleted file mode 100644
index 6553b35..0000000
--- a/vendor/github.com/go-logfmt/logfmt/fuzz.go
+++ /dev/null
@@ -1,126 +0,0 @@
-// +build gofuzz
-
-package logfmt
-
-import (
- "bufio"
- "bytes"
- "fmt"
- "io"
- "reflect"
-
- kr "github.com/kr/logfmt"
-)
-
-// Fuzz checks reserialized data matches
-func Fuzz(data []byte) int {
- parsed, err := parse(data)
- if err != nil {
- return 0
- }
- var w1 bytes.Buffer
- if err = write(parsed, &w1); err != nil {
- panic(err)
- }
- parsed, err = parse(w1.Bytes())
- if err != nil {
- panic(err)
- }
- var w2 bytes.Buffer
- if err = write(parsed, &w2); err != nil {
- panic(err)
- }
- if !bytes.Equal(w1.Bytes(), w2.Bytes()) {
- panic(fmt.Sprintf("reserialized data does not match:\n%q\n%q\n", w1.Bytes(), w2.Bytes()))
- }
- return 1
-}
-
-// FuzzVsKR checks go-logfmt/logfmt against kr/logfmt
-func FuzzVsKR(data []byte) int {
- parsed, err := parse(data)
- parsedKR, errKR := parseKR(data)
-
- // github.com/go-logfmt/logfmt is a stricter parser. It returns errors for
- // more inputs than github.com/kr/logfmt. Ignore any inputs that have a
- // stict error.
- if err != nil {
- return 0
- }
-
- // Fail if the more forgiving parser finds an error not found by the
- // stricter parser.
- if errKR != nil {
- panic(fmt.Sprintf("unmatched error: %v", errKR))
- }
-
- if !reflect.DeepEqual(parsed, parsedKR) {
- panic(fmt.Sprintf("parsers disagree:\n%+v\n%+v\n", parsed, parsedKR))
- }
- return 1
-}
-
-type kv struct {
- k, v []byte
-}
-
-func parse(data []byte) ([][]kv, error) {
- var got [][]kv
- dec := NewDecoder(bytes.NewReader(data))
- for dec.ScanRecord() {
- var kvs []kv
- for dec.ScanKeyval() {
- kvs = append(kvs, kv{dec.Key(), dec.Value()})
- }
- got = append(got, kvs)
- }
- return got, dec.Err()
-}
-
-func parseKR(data []byte) ([][]kv, error) {
- var (
- s = bufio.NewScanner(bytes.NewReader(data))
- err error
- h saveHandler
- got [][]kv
- )
- for err == nil && s.Scan() {
- h.kvs = nil
- err = kr.Unmarshal(s.Bytes(), &h)
- got = append(got, h.kvs)
- }
- if err == nil {
- err = s.Err()
- }
- return got, err
-}
-
-type saveHandler struct {
- kvs []kv
-}
-
-func (h *saveHandler) HandleLogfmt(key, val []byte) error {
- if len(key) == 0 {
- key = nil
- }
- if len(val) == 0 {
- val = nil
- }
- h.kvs = append(h.kvs, kv{key, val})
- return nil
-}
-
-func write(recs [][]kv, w io.Writer) error {
- enc := NewEncoder(w)
- for _, rec := range recs {
- for _, f := range rec {
- if err := enc.EncodeKeyval(f.k, f.v); err != nil {
- return err
- }
- }
- if err := enc.EndRecord(); err != nil {
- return err
- }
- }
- return nil
-}
diff --git a/vendor/github.com/go-logfmt/logfmt/go.mod b/vendor/github.com/go-logfmt/logfmt/go.mod
new file mode 100644
index 0000000..c6fe10b
--- /dev/null
+++ b/vendor/github.com/go-logfmt/logfmt/go.mod
@@ -0,0 +1,3 @@
+module github.com/go-logfmt/logfmt
+
+go 1.17
nihil fit ex nihilo