]> git.lizzy.rs Git - micro.git/commitdiff
Fix save with sudo on mac
authorZachary Yedidia <zyedidia@gmail.com>
Thu, 2 Jan 2020 06:25:00 +0000 (01:25 -0500)
committerZachary Yedidia <zyedidia@gmail.com>
Thu, 2 Jan 2020 06:25:00 +0000 (01:25 -0500)
internal/buffer/save.go

index 5b23cb3bb934dff33633174a224f04c9284ced4f..8bf04259d983cb96ec22b29038c27854d56d0666 100644 (file)
@@ -8,6 +8,7 @@ import (
        "os/exec"
        "os/signal"
        "path/filepath"
+       "runtime"
        "unicode"
        "unicode/utf8"
 
@@ -54,10 +55,18 @@ func overwriteFile(name string, enc encoding.Encoding, fn func(io.Writer) error)
 // with dd's standard input as an io.Writer object. Dd opens the given file for writing,
 // truncating it if it exists, and writes what it receives on its standard input to the file.
 func overwriteFileAsRoot(name string, enc encoding.Encoding, fn func(io.Writer) error) (err error) {
-       cmd := exec.Command(config.GlobalSettings["sucmd"].(string), "dd", "status=none", "bs=4K", "of="+name)
+       var cmd *exec.Cmd
+       if runtime.GOOS == "windows" {
+               return errors.New("Save with sudo not supported on Windows")
+       } else if runtime.GOOS == "darwin" {
+               cmd = exec.Command(config.GlobalSettings["sucmd"].(string), "dd", "bs=4k", "of="+name)
+       } else {
+               cmd = exec.Command(config.GlobalSettings["sucmd"].(string), "dd", "status=none", "bs=4K", "of="+name)
+       }
        var stdin io.WriteCloser
 
        screenb := screen.TempFini()
+       defer screen.TempStart(screenb)
 
        // This is a trap for Ctrl-C so that it doesn't kill micro
        // Instead we trap Ctrl-C to kill the program we're running
@@ -87,8 +96,6 @@ func overwriteFileAsRoot(name string, enc encoding.Encoding, fn func(io.Writer)
                return
        }
 
-       screen.TempStart(screenb)
-
        return e
 }