github.com/10XDev/rclone@v1.52.3-0.20200626220027-16af9ab76b2a/fs/log/redirect_stderr_unix.go (about)

     1  // Log the panic under unix to the log file
     2  
     3  // +build !windows,!solaris,!plan9
     4  
     5  package log
     6  
     7  import (
     8  	"log"
     9  	"os"
    10  
    11  	"github.com/rclone/rclone/fs/config"
    12  	"golang.org/x/sys/unix"
    13  )
    14  
    15  // redirectStderr to the file passed in
    16  func redirectStderr(f *os.File) {
    17  	passPromptFd, err := unix.Dup(int(os.Stderr.Fd()))
    18  	if err != nil {
    19  		log.Fatalf("Failed to duplicate stderr: %v", err)
    20  	}
    21  	config.PasswordPromptOutput = os.NewFile(uintptr(passPromptFd), "passPrompt")
    22  	err = unix.Dup2(int(f.Fd()), int(os.Stderr.Fd()))
    23  	if err != nil {
    24  		log.Fatalf("Failed to redirect stderr to file: %v", err)
    25  	}
    26  }