]> Cypherpunks.ru repositories - gorecfile.git/blobdiff - r.go
Workaround for backslash in multilines
[gorecfile.git] / r.go
diff --git a/r.go b/r.go
index dc6084c3df116ca996f4c1d8709f80f58eeb15cf..5de2a455a4f5d0c315c406bd1d1aa3a56c3a375e 100644 (file)
--- a/r.go
+++ b/r.go
@@ -1,6 +1,6 @@
 /*
 recfile -- GNU recutils'es recfiles parser on pure Go
-Copyright (C) 2020-2022 Sergey Matveev <stargrave@stargrave.org>
+Copyright (C) 2020-2023 Sergey Matveev <stargrave@stargrave.org>
 
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
@@ -48,7 +48,7 @@ func getKeyValue(text string) (string, string) {
                ('A' <= k[0] && k[0] <= 'Z')) {
                return "", ""
        }
-       for _, c := range k {
+       for _, c := range k[1:] {
                if !((c == '_') ||
                        ('a' <= c && c <= 'z') ||
                        ('A' <= c && c <= 'Z') ||
@@ -80,7 +80,9 @@ func (r *Reader) Next() ([]Field, error) {
                text = r.scanner.Text()
 
                if continuation {
-                       if text[len(text)-1] == '\\' {
+                       if len(text) == 0 {
+                               continuation = false
+                       } else if text[len(text)-1] == '\\' {
                                lines = append(lines, text[:len(text)-1])
                        } else {
                                lines = append(lines, text)