TFTP update

Signed-off-by: jcsiadal <jeremy.c.siadal@intel.com>
This commit is contained in:
jcsiadal
2022-02-15 23:26:07 +00:00
parent e7aac8773c
commit 67b8018d69
6 changed files with 63 additions and 39 deletions

View File

@@ -0,0 +1,50 @@
package util
import (
"io"
"os"
"github.com/hpcng/warewulf/internal/pkg/wwlog"
)
func CopyFile(src string, dst string) error {
wwlog.Printf(wwlog.DEBUG, "Copying '%s' to '%s'\n", src, dst)
// Open source file
srcFD, err := os.Open(src)
if err != nil {
wwlog.Printf(wwlog.ERROR, "Could not open source file %s: %s\n", src, err)
return err
}
defer srcFD.Close()
// Confirm source file structure is readable
_, err = srcFD.Stat()
if err != nil {
wwlog.Printf(wwlog.ERROR, "Could not stat source file %s: %s\n", src, err)
return err
}
dstFD, err := os.Create(dst)
if err != nil {
wwlog.Printf(wwlog.ERROR, "Could not create destination file %s: %s\n", dst, err)
return err
}
defer dstFD.Close()
bytes, err := io.Copy(srcFD, dstFD)
if err != nil {
wwlog.Printf(wwlog.ERROR, "File copy from %s to %s failed.\n %s\n", src, dst, err)
return err
} else {
wwlog.Printf(wwlog.DEBUG, "Copied %d bytes from %s to %s.\n", bytes, src, dst)
}
err = CopyUIDGID(src, dst)
if err != nil {
wwlog.Printf(wwlog.ERROR, "Ownership copy from %s to %s failed.\n %s\n", src, dst, err)
return err
}
return nil
}

View File

@@ -73,37 +73,6 @@ func RandomString(n int) string {
return string(b)
}
func CopyFile(source string, dest string) error {
wwlog.Printf(wwlog.DEBUG, "Copying '%s' to '%s'\n", source, dest)
sourceFD, err := os.Open(source)
if err != nil {
return err
}
finfo, err := sourceFD.Stat()
if err != nil {
return errors.Wrap(err, "failed to stat source")
}
destFD, err := os.OpenFile(dest, os.O_RDWR|os.O_CREATE, finfo.Mode())
if err != nil {
return err
}
_, err = io.Copy(destFD, sourceFD)
if err != nil {
return err
}
err = CopyUIDGID(source, dest)
if err != nil {
return errors.Wrap(err, "failed to set ownership")
}
sourceFD.Close()
return destFD.Close()
}
func CopyFiles(source string, dest string) error {
err := filepath.Walk(source, func(location string, info os.FileInfo, err error) error {
if err != nil {