diff --git a/internal/pkg/overlay/overlay.go b/internal/pkg/overlay/overlay.go index 3785437f..212e603f 100644 --- a/internal/pkg/overlay/overlay.go +++ b/internal/pkg/overlay/overlay.go @@ -356,14 +356,14 @@ func BuildOverlayIndir(nodeInfo node.NodeInfo, overlayNames []string, outputDir var fileBuffer bytes.Buffer // search for magic file name comment fileScanner := bufio.NewScanner(bytes.NewReader(buffer.Bytes())) - fileScanner.Split(bufio.ScanLines) + fileScanner.Split(scanLines) reg := regexp.MustCompile(`.*{{\s*/\*\s*file\s*["'](.*)["']\s*\*/\s*}}.*`) foundFileComment := false for fileScanner.Scan() { line := fileScanner.Text() filenameFromTemplate := reg.FindAllStringSubmatch(line, -1) if len(filenameFromTemplate) != 0 { - wwlog.Printf(wwlog.DEBUG, "Found multifle comment, new filename %s\n", filenameFromTemplate[0][1]) + wwlog.Printf(wwlog.DEBUG, "Found multifile comment, new filename %s\n", filenameFromTemplate[0][1]) if foundFileComment { err = carefulWriteBuffer(path.Join(outputDir, destFileName), fileBuffer, backupFile, info.Mode()) @@ -379,7 +379,7 @@ func BuildOverlayIndir(nodeInfo node.NodeInfo, overlayNames []string, outputDir destFileName = path.Join(path.Dir(destFile), filenameFromTemplate[0][1]) foundFileComment = true } else { - _, _ = fileBuffer.WriteString(line + "\n") + _, _ = fileBuffer.WriteString(line) } } err = carefulWriteBuffer(path.Join(outputDir, destFileName), fileBuffer, backupFile, info.Mode()) @@ -449,3 +449,20 @@ func carefulWriteBuffer(destFile string, buffer bytes.Buffer, backupFile bool, p _, err = buffer.WriteTo(w) return err } + +// Simple version of ScanLines, but include the line break +func scanLines(data []byte, atEOF bool) (advance int, token []byte, err error) { + if atEOF && len(data) == 0 { + return 0, nil, nil + } + if i := bytes.IndexByte(data, '\n'); i >= 0 { + // We have a full newline-terminated line. + return i + 1, data[0 : i+1], nil + } + // If we're at EOF, we have a final, non-terminated line. Return it. + if atEOF { + return len(data), data, nil + } + // Request more data. + return 0, nil, nil +}