diff options
Diffstat (limited to 'internal/app/copy.go')
| -rw-r--r-- | internal/app/copy.go | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/internal/app/copy.go b/internal/app/copy.go new file mode 100644 index 00000000..bf90bfea --- /dev/null +++ b/internal/app/copy.go @@ -0,0 +1,33 @@ +package app + +import ( + "io" + "os" +) + +func copyFile(dst, src string) error { + srcD, err := os.Open(src) + if err != nil { + return err + } + defer func() { + if srcD.Close() != nil { + // unreachable + panic("src file closed prematurely") + } + }() + + dstD, err := os.OpenFile(dst, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600) + if err != nil { + return err + } + defer func() { + if dstD.Close() != nil { + // unreachable + panic("dst file closed prematurely") + } + }() + + _, err = io.Copy(dstD, srcD) + return err +} |
