summaryrefslogtreecommitdiff
path: root/cmd/tunneld
diff options
context:
space:
mode:
authorMikhail Osipov <mike.osipov@gmail.com>2021-10-15 19:35:11 +0300
committerMikhail Osipov <mike.osipov@gmail.com>2021-10-15 19:35:11 +0300
commitd53690edff5bca081ccc6ceb675c05c24692dafc (patch)
tree1a095a6d75d77a90fa0aa1c0c38b2e5000ff1475 /cmd/tunneld
parentc2d5e17f2995e7d7ab7c4b45943d4c71b024e4ca (diff)
tunneld: add block context for config
Diffstat (limited to 'cmd/tunneld')
-rw-r--r--cmd/tunneld/main.go23
1 files changed, 17 insertions, 6 deletions
diff --git a/cmd/tunneld/main.go b/cmd/tunneld/main.go
index f773b86..86402ca 100644
--- a/cmd/tunneld/main.go
+++ b/cmd/tunneld/main.go
@@ -159,24 +159,35 @@ func (p *parser) read(fp *os.File) error {
var args []string
var line int
+ var block bool
+
for n := 1; scanner.Scan(); n++ {
if line == 0 {
line = n
}
parts := strings.SplitN(scanner.Text(), "#", 2)
- s := parts[0]
+ s := strings.TrimSpace(parts[0])
- readahead := false
+ if strings.HasSuffix(s, " --") {
+ if block {
+ return fmt.Errorf("%s:%d: duplicate block", fp.Name(), n)
+ }
+ s = s[:len(s)-3]
+ block = true
+ }
- if len(parts) == 1 && strings.HasSuffix(s, "\\") {
- s = s[:len(s)-1]
- readahead = true
+ if s == "--" {
+ if !block {
+ return fmt.Errorf("%s:%d: no block context", fp.Name(), n)
+ }
+ block = false
+ s = ""
}
args = append(args, strings.Fields(s)...)
- if readahead {
+ if block {
continue
}