aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--util.go34
1 files changed, 34 insertions, 0 deletions
diff --git a/util.go b/util.go
index 4c8484b7..2de8f3be 100644
--- a/util.go
+++ b/util.go
@@ -3,8 +3,10 @@ package main
import (
"errors"
"fmt"
+ "io"
"io/fs"
"os"
+ "os/exec"
)
const (
@@ -26,3 +28,35 @@ func sdBooted() bool {
}
return true
}
+
+func which(file string) (string, bool) {
+ path, err := exec.LookPath(file)
+ return path, err == nil
+}
+
+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
+}