Files
GingerShrew/parts/ah/unpacker.go
2020-06-28 21:52:53 -04:00

58 lines
1.2 KiB
Go

package gsah
import (
"bytes"
"fmt"
"io"
// "io/ioutil"
"log"
"os"
"path/filepath"
)
func userFind() string {
if os.Geteuid() == 0 {
log.Fatal("Do not run this application as root!")
}
if un, err := os.UserHomeDir(); err == nil {
os.MkdirAll(filepath.Join(un, "i2p"), 0755)
return un
}
return ""
}
var userdir = filepath.Join(userFind(), "/i2p/firefox-profiles")
func writeFile(val os.FileInfo, system *fs) ([]byte, error) {
if !val.IsDir() {
file, err := system.Open(val.Name())
if err != nil {
return nil, err
}
sys := bytes.NewBuffer(nil)
if _, err := io.Copy(sys, file); err != nil {
return nil, err
} else {
return sys.Bytes(), nil
}
} else {
log.Println(filepath.Join(userdir, val.Name()), "ignored", "contents", val.Sys())
}
return nil, fmt.Errorf("undefined unpacker error")
}
func WriteBrowser(FS *fs) ([]byte, error) {
if embedded, err := FS.Readdir(-1); err != nil {
log.Fatal("Extension error, embedded extension not read.", err)
} else {
for _, val := range embedded {
if val.IsDir() {
os.MkdirAll(filepath.Join(userdir, val.Name()), val.Mode())
} else {
return writeFile(val, FS)
}
}
}
return nil, nil
}