X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=r.go;h=a16f8477ea68ad9231679a1f2a7339ffb0140149;hb=HEAD;hp=dc6084c3df116ca996f4c1d8709f80f58eeb15cf;hpb=5b21d9046aaf86e5929676c24b5673109f4b4796;p=gorecfile.git diff --git a/r.go b/r.go index dc6084c..a16f847 100644 --- a/r.go +++ b/r.go @@ -1,19 +1,17 @@ -/* -recfile -- GNU recutils'es recfiles parser on pure Go -Copyright (C) 2020-2022 Sergey Matveev - -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 . -*/ +// recfile -- GNU recutils'es recfiles parser on pure Go +// Copyright (C) 2020-2024 Sergey Matveev +// +// 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 . package recfile @@ -48,7 +46,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 +78,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)