|
|
@@ -2,25 +2,62 @@
|
|
|
package main
|
|
|
|
|
|
import (
|
|
|
+ "fmt"
|
|
|
"io"
|
|
|
+ "io/ioutil"
|
|
|
"os"
|
|
|
"os/user"
|
|
|
"path"
|
|
|
)
|
|
|
|
|
|
-func gethomedir() string {
|
|
|
- u, _ := user.Current()
|
|
|
- return u.HomeDir
|
|
|
+type Hfile struct {
|
|
|
+ name string
|
|
|
+ dir string
|
|
|
+ path string
|
|
|
+ handle *os.File
|
|
|
}
|
|
|
|
|
|
-func gethistfile() string {
|
|
|
- const fname = ".bash_history"
|
|
|
- return path.Join(gethomedir(), fname)
|
|
|
+type Tmpfile struct {
|
|
|
+ path string
|
|
|
+ dir string
|
|
|
+ name string
|
|
|
+ handle *os.File
|
|
|
}
|
|
|
|
|
|
-func mktmpfile() string {
|
|
|
- const fname = ".bash_history"
|
|
|
- return path.Join("/tmp", fname)
|
|
|
+func (f *Hfile) init() {
|
|
|
+ u, err := user.Current()
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("Panicking!")
|
|
|
+ panic(fmt.Sprintf("%v", err))
|
|
|
+ }
|
|
|
+ f.dir = u.HomeDir
|
|
|
+ f.path = path.Join(f.dir, f.name)
|
|
|
+}
|
|
|
+
|
|
|
+func (f *Tmpfile) init() {
|
|
|
+ tmpdir, err := ioutil.TempDir(os.TempDir(), f.name)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("Panicking!")
|
|
|
+ panic(fmt.Sprintf("%v", err))
|
|
|
+ }
|
|
|
+ f.dir = tmpdir
|
|
|
+ f.path = path.Join(f.dir, f.name)
|
|
|
+}
|
|
|
+
|
|
|
+func (h *Hfile) Open() {
|
|
|
+ fh, err := os.Open(h.path)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Print(err)
|
|
|
+ }
|
|
|
+ h.handle = fh
|
|
|
+}
|
|
|
+
|
|
|
+func (h *Tmpfile) Open() {
|
|
|
+ fh, err := os.OpenFile(h.path, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0600)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Print(err)
|
|
|
+ }
|
|
|
+ h.handle = fh
|
|
|
}
|
|
|
|
|
|
func CopyFile(src, dst string) (int64, error) {
|
|
|
@@ -33,6 +70,7 @@ func CopyFile(src, dst string) (int64, error) {
|
|
|
if err != nil {
|
|
|
return 0, err
|
|
|
}
|
|
|
+ df.Chmod(0600)
|
|
|
defer df.Close()
|
|
|
return io.Copy(df, sf)
|
|
|
}
|