From 721a52239f21c4bd6d28a8c36c286eb0867879b6 Mon Sep 17 00:00:00 2001 From: Christian Goll Date: Thu, 27 Oct 2022 11:41:03 +0200 Subject: [PATCH] opening file with twi seperate descriptors --- internal/app/wwctl/overlay/edit/main.go | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/internal/app/wwctl/overlay/edit/main.go b/internal/app/wwctl/overlay/edit/main.go index 96e0de36..945ca498 100644 --- a/internal/app/wwctl/overlay/edit/main.go +++ b/internal/app/wwctl/overlay/edit/main.go @@ -76,26 +76,33 @@ func CobraRunE(cmd *cobra.Command, args []string) error { # Source: {{.BuildSource}} ` fmt.Fprint(w, fmtStr) + w.Close() } - fileDesc, err := os.OpenFile(overlayFile, os.O_RDWR, os.FileMode(PermMode)) + fileDesc1, err := os.OpenFile(overlayFile, os.O_RDWR, os.FileMode(PermMode)) if err != nil { wwlog.Warn("Could not open file for editing: %s", err) } - defer fileDesc.Close() - _, _ = fileDesc.Seek(0, 0) + defer fileDesc1.Close() + _, _ = fileDesc1.Seek(0, 0) hasher := sha256.New() - if _, err := io.Copy(hasher, fileDesc); err != nil { + if _, err := io.Copy(hasher, fileDesc1); err != nil { wwlog.Error("Problems getting checksum of file %s\n", err) } sum1 := hex.EncodeToString(hasher.Sum(nil)) + fileDesc1.Close() err = util.ExecInteractive(editor, overlayFile) if err != nil { wwlog.Error("Editor process existed with non-zero") os.Exit(1) } - _, _ = fileDesc.Seek(0, 0) + fileDesc2, err := os.OpenFile(overlayFile, os.O_RDWR, os.FileMode(PermMode)) + if err != nil { + wwlog.Warn("Could not open file for editing: %s", err) + } + defer fileDesc2.Close() + _, _ = fileDesc2.Seek(0, 0) hasher.Reset() - if _, err := io.Copy(hasher, fileDesc); err != nil { + if _, err := io.Copy(hasher, fileDesc2); err != nil { wwlog.Error("Problems getting checksum of file %s\n", err) } sum2 := hex.EncodeToString(hasher.Sum(nil))