From 086ead03f5dbb18b2a5d189e1bb19710e72b6fdb Mon Sep 17 00:00:00 2001 From: Oleksii Kliukin Date: Mon, 20 Nov 2017 16:57:22 +0100 Subject: [PATCH] Warn about attempts to use escape quotes. --- pkg/util/config/config.go | 2 +- pkg/util/config/config_test.go | 2 +- pkg/util/config/util.go | 6 +++++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/pkg/util/config/config.go b/pkg/util/config/config.go index deab3eff4..7e9bfacfe 100644 --- a/pkg/util/config/config.go +++ b/pkg/util/config/config.go @@ -72,7 +72,7 @@ type Config struct { RingLogLines int `name:"ring_log_lines" default:"100"` ClusterHistoryEntries int `name:"cluster_history_entries" default:"1000"` TeamAPIRoleConfiguration map[string]string `name:"team_api_role_configuration" default:"log_statement:'all'"` - PodTerminateGracePeriod time.Duration `name:"pod_terminate_grace_period" default:"5m"` + PodTerminateGracePeriod time.Duration `name:"pod_terminate_grace_period" default:"5m"` } // MustMarshal marshals the config or panics diff --git a/pkg/util/config/config_test.go b/pkg/util/config/config_test.go index d5d5730c5..eb27d1bda 100644 --- a/pkg/util/config/config_test.go +++ b/pkg/util/config/config_test.go @@ -13,7 +13,7 @@ var getMapPairsFromStringTest = []struct { }{ {"log_statement:all, work_mem:'4GB'", []string{"log_statement:all", "work_mem:'4GB'"}, nil}, {`log_statement:none, search_path:'"$user", public'`, []string{"log_statement:none", `search_path:'"$user", public'`}, nil}, - {`search_path:'"$user"`, nil, fmt.Errorf("unclosed quote starting at position 13")}, + {`search_path:'"$user"`, nil, fmt.Errorf("unmatched quote starting at position 13")}, {"", []string{""}, nil}, {",,log_statement:all ,", []string{"", "", "log_statement:all", ""}, nil}, } diff --git a/pkg/util/config/util.go b/pkg/util/config/util.go index 05a956c3e..dbe411045 100644 --- a/pkg/util/config/util.go +++ b/pkg/util/config/util.go @@ -175,6 +175,7 @@ const ( Plain parserState = iota DoubleQuoted SingleQuoted + Escape ) // Split the pair candidates by commas not located inside open quotes @@ -186,6 +187,9 @@ func getMapPairsFromString(value string) (pairs []string, err error) { var start, quote int for i, ch := range strings.Split(value, "") { + if (ch == `"` || ch == `'`) && i > 0 && value[i-1] == '\\' { + fmt.Printf("Parser warning: ecape character '\\' have no effect on quotes inside the configuration value %s\n", value) + } if ch == `"` { if state == Plain { state = DoubleQuoted @@ -210,7 +214,7 @@ func getMapPairsFromString(value string) (pairs []string, err error) { } } if state != Plain { - err = fmt.Errorf("unclosed quote starting at position %d", quote+1) + err = fmt.Errorf("unmatched quote starting at position %d", quote+1) pairs = nil } else { pairs = append(pairs, strings.Trim(value[start:], " \t"))