-/*
-recfile -- GNU recutils'es recfiles parser on pure Go
-Copyright (C) 2020-2022 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
-the Free Software Foundation, version 3 of the License.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
+// recfile -- GNU recutils'es recfiles parser on pure Go
+// Copyright (C) 2020-2024 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
+// the Free Software Foundation, version 3 of the License.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>.
package recfile
('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') ||
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)