summaryrefslogtreecommitdiff
path: root/vendor/codeberg.org/gruf/go-kv/format/util.go
diff options
context:
space:
mode:
authorLibravatar kim <89579420+NyaaaWhatsUpDoc@users.noreply.github.com>2023-02-19 09:36:38 +0000
committerLibravatar GitHub <noreply@github.com>2023-02-19 10:36:38 +0100
commit51c156cca1b88e2f5bcf649c86a7e7736ffbb652 (patch)
tree6187d78b93a051256226e68d66e72ba4c0cfa409 /vendor/codeberg.org/gruf/go-kv/format/util.go
parent[bugfix] In Postgres, drop shortcodedomain constraint before creating new emo... (diff)
downloadgotosocial-51c156cca1b88e2f5bcf649c86a7e7736ffbb652.tar.xz
pull in latest go-kv, go-cache (#1530)
Signed-off-by: kim <grufwub@gmail.com>
Diffstat (limited to 'vendor/codeberg.org/gruf/go-kv/format/util.go')
-rw-r--r--vendor/codeberg.org/gruf/go-kv/format/util.go47
1 files changed, 44 insertions, 3 deletions
diff --git a/vendor/codeberg.org/gruf/go-kv/format/util.go b/vendor/codeberg.org/gruf/go-kv/format/util.go
index 674f81be5..b5c672ecb 100644
--- a/vendor/codeberg.org/gruf/go-kv/format/util.go
+++ b/vendor/codeberg.org/gruf/go-kv/format/util.go
@@ -18,11 +18,22 @@ const (
SingleTermLine = 256
)
+// IsSafeASCII checks whether string is printable (i.e. non-control char) ASCII text.
+func IsSafeASCII(str string) bool {
+ for _, r := range str {
+ if (r < ' ' && r != '\t') ||
+ r >= 0x7f {
+ return false
+ }
+ }
+ return true
+}
+
// ContainsSpaceOrTab checks if "s" contains space or tabs.
func ContainsSpaceOrTab(s string) bool {
- if i := strings.IndexByte(s, ' '); i != -1 {
+ if i := strings.IndexByte(s, ' '); i >= 0 {
return true // note using indexbyte as it is ASM.
- } else if i := strings.IndexByte(s, '\t'); i != -1 {
+ } else if i := strings.IndexByte(s, '\t'); i >= 0 {
return true
}
return false
@@ -30,7 +41,7 @@ func ContainsSpaceOrTab(s string) bool {
// ContainsDoubleQuote checks if "s" contains a double quote.
func ContainsDoubleQuote(s string) bool {
- return (strings.IndexByte(s, '"') != -1)
+ return (strings.IndexByte(s, '"') >= 0)
}
// AppendEscape will append 's' to 'dst' and escape any double quotes.
@@ -57,6 +68,36 @@ func AppendEscape(dst []byte, str string) []byte {
return dst
}
+// Byte2Str returns 'c' as a string, escaping if necessary.
+func Byte2Str(c byte) string {
+ switch c {
+ case '\a':
+ return `\a`
+ case '\b':
+ return `\b`
+ case '\f':
+ return `\f`
+ case '\n':
+ return `\n`
+ case '\r':
+ return `\r`
+ case '\t':
+ return `\t`
+ case '\v':
+ return `\v`
+ case '\'':
+ return `\\`
+ default:
+ if c < ' ' {
+ const hex = "0123456789abcdef"
+ return `\x` +
+ string(hex[c>>4]) +
+ string(hex[c&0xF])
+ }
+ return string(c)
+ }
+}
+
// isNil will safely check if 'v' is nil without dealing with weird Go interface nil bullshit.
func isNil(i interface{}) bool {
type eface struct{ _type, data unsafe.Pointer } //nolint