You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
967 B
Go
60 lines
967 B
Go
package history
|
|
|
|
import (
|
|
"io"
|
|
"os"
|
|
)
|
|
|
|
type HiddenWriter struct {
|
|
path string
|
|
file *os.File
|
|
}
|
|
|
|
func NewHiddenWriter(path string) *HiddenWriter {
|
|
return &HiddenWriter{
|
|
path: "." + path,
|
|
}
|
|
}
|
|
|
|
func (h *HiddenWriter) Open() error {
|
|
var err error
|
|
h.file, err = os.OpenFile(h.path, os.O_CREATE|os.O_WRONLY, 0644)
|
|
return err
|
|
}
|
|
|
|
func (h *HiddenWriter) Write(p []byte) (n int, err error) {
|
|
return h.file.Write(p)
|
|
}
|
|
|
|
func (h *HiddenWriter) Close() error {
|
|
return h.file.Close()
|
|
}
|
|
|
|
func Reader() io.ReadCloser {
|
|
file := os.Getenv("RQLITE_HISTFILE")
|
|
if file == "" {
|
|
file = "rqlite_history"
|
|
}
|
|
|
|
// Call OS-specific function actually
|
|
f, err := os.Open(file)
|
|
if err != nil {
|
|
return nil
|
|
}
|
|
return f
|
|
}
|
|
|
|
func Writer() io.WriteCloser {
|
|
file := os.Getenv("RQLITE_HISTFILE")
|
|
if file == "" {
|
|
file = "rqlite_history"
|
|
}
|
|
|
|
// Call OS-specific function actually
|
|
f, err := os.OpenFile(file, os.O_RDWR|os.O_CREATE, 0755)
|
|
if err != nil {
|
|
return nil
|
|
}
|
|
return f
|
|
}
|