summaryrefslogtreecommitdiff
path: root/.config/wmii-hg/rbar_util/util.go
diff options
context:
space:
mode:
Diffstat (limited to '.config/wmii-hg/rbar_util/util.go')
-rw-r--r--.config/wmii-hg/rbar_util/util.go49
1 files changed, 49 insertions, 0 deletions
diff --git a/.config/wmii-hg/rbar_util/util.go b/.config/wmii-hg/rbar_util/util.go
new file mode 100644
index 0000000..9e5d622
--- /dev/null
+++ b/.config/wmii-hg/rbar_util/util.go
@@ -0,0 +1,49 @@
+package rbar_util
+
+import (
+ "os"
+ "io"
+ "path/filepath"
+ "strings"
+ "errors"
+
+ "fmt"
+)
+
+func GlobEscape(lit string) string {
+ glob := lit
+ glob = strings.Replace(glob, "\\", "\\\\", -1)
+ glob = strings.Replace(glob, "*", "\\*", -1)
+ glob = strings.Replace(glob, "?", "\\?", -1)
+ glob = strings.Replace(glob, "[", "\\[", -1)
+ return glob
+}
+
+var NoRbar = errors.New("no WMII rbars found")
+
+func Write(filename string, msg string) error {
+ dirnames, _ := filepath.Glob(GlobEscape(os.Getenv("XDG_RUNTIME_DIR"))+"/wmii*/rbar")
+ if len(dirnames) == 0 {
+ return NoRbar
+ }
+ for _, dirname := range dirnames {
+ file, err := os.OpenFile(filepath.Join(dirname, filename), os.O_WRONLY| os.O_APPEND|os.O_CREATE, 0666)
+ if err != nil {
+ continue
+ }
+ io.WriteString(file, msg)
+ file.Close()
+ }
+ return nil
+}
+
+func Remove(glob string) {
+ fmt.Println("remove", glob);
+ fullglob := GlobEscape(os.Getenv("XDG_RUNTIME_DIR"))+"/wmii*/rbar/"+glob
+ fmt.Println("glob", fullglob)
+ filenames, err := filepath.Glob(fullglob)
+ fmt.Println("globerr", err)
+ for _, filename := range filenames {
+ os.Remove(filename)
+ }
+}