summaryrefslogtreecommitdiff
path: root/src/proxy_unix.go
blob: b67005342e83765f3f4c2c9662859631a80aa713 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
//go:build !windows

package fzf

import (
	"io"
	"os"

	"golang.org/x/sys/unix"
)

func sh(bash bool) (string, error) {
	if bash {
		return "bash", nil
	}
	return "sh", nil
}

func mkfifo(path string, mode uint32) (string, error) {
	return path, unix.Mkfifo(path, mode)
}

func withOutputPipe(output string, task func(io.ReadCloser)) error {
	outputFile, err := os.OpenFile(output, os.O_RDONLY, 0)
	if err != nil {
		return err
	}
	task(outputFile)
	outputFile.Close()
	return nil
}

func withInputPipe(input string, task func(io.WriteCloser)) error {
	inputFile, err := os.OpenFile(input, os.O_WRONLY, 0)
	if err != nil {
		return err
	}
	task(inputFile)
	inputFile.Close()
	return nil
}