summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--go.mod2
-rw-r--r--go.sum2
-rw-r--r--main.go (renamed from grus.go)46
-rw-r--r--main_openbsd.go51
-rw-r--r--main_other.go7
5 files changed, 47 insertions, 61 deletions
diff --git a/go.mod b/go.mod
index 6b71a92..929e25c 100644
--- a/go.mod
+++ b/go.mod
@@ -4,5 +4,5 @@ go 1.13
 
 require (
 	golang.org/x/sys v0.0.0-20200406113430-c6e801f48ba2
-	tildegit.org/andinus/lynx v0.2.0
+	tildegit.org/andinus/lynx v0.4.0
 )
diff --git a/go.sum b/go.sum
index 8d3b70d..6160e3b 100644
--- a/go.sum
+++ b/go.sum
@@ -5,3 +5,5 @@ tildegit.org/andinus/lynx v0.1.0 h1:7YjyF8h7MBGKRgQZT0j0I3uHRPf3mI2GMiDujXVlLS0=
 tildegit.org/andinus/lynx v0.1.0/go.mod h1:/PCNkKwfJ7pb6ziHa76a4gYp1R9S1Ro4ANjQwzSpBIk=
 tildegit.org/andinus/lynx v0.2.0 h1:cBoAWqC/osZJE4VPdB0HhIEpMIC4A4eI9nEbHR/9Qvk=
 tildegit.org/andinus/lynx v0.2.0/go.mod h1:/PCNkKwfJ7pb6ziHa76a4gYp1R9S1Ro4ANjQwzSpBIk=
+tildegit.org/andinus/lynx v0.4.0 h1:bAxZLOdWy66+qJ3bDWjkbmJfCWTIOZ8hMGzYt7T7Bxk=
+tildegit.org/andinus/lynx v0.4.0/go.mod h1:/PCNkKwfJ7pb6ziHa76a4gYp1R9S1Ro4ANjQwzSpBIk=
diff --git a/grus.go b/main.go
index 15f3e0e..13971e7 100644
--- a/grus.go
+++ b/main.go
@@ -6,15 +6,18 @@ import (
 	"os"
 
 	"tildegit.org/andinus/grus/lexical"
+	"tildegit.org/andinus/lynx"
 )
 
-func grus() {
+func main() {
+	initGrus()
+
 	if len(os.Args) == 1 {
 		fmt.Println("Usage: grus <word> <dictionaries>")
 		os.Exit(1)
 	}
 
-	version := "v0.3.0"
+	version := "v0.3.1"
 
 	// Print version if first argument is version.
 	if os.Args[1] == "version" {
@@ -134,8 +137,47 @@ func grus() {
 		if !envVar["GRUS_SEARCH_ALL"] {
 			os.Exit(0)
 		}
+	}
+}
+
+func initGrus() {
+	// We need less permissions on these conditions.
+	if len(os.Args) == 1 ||
+		os.Args[1] == "version" ||
+		os.Args[1] == "env" {
+		err := lynx.PledgePromises("stdio")
+		panicOnErr(err)
+	} else {
+		err := lynx.PledgePromises("unveil stdio rpath")
+		panicOnErr(err)
+
+		unveil()
+
+		// Drop unveil from promises.
+		err = lynx.PledgePromises("stdio rpath")
+		panicOnErr(err)
+	}
+}
+
+func unveil() {
+	paths := make(map[string]string)
 
+	paths["/usr/share/dict"] = "r"
+	paths["/usr/local/share/dict"] = "r"
+
+	// Unveil user defined dictionaries.
+	if len(os.Args) >= 3 {
+		for _, dict := range os.Args[2:] {
+			paths[dict] = "r"
+		}
 	}
+	// This will not return error if the file doesn't exist.
+	err := lynx.UnveilPaths(paths)
+	panicOnErr(err)
+
+	// Block further unveil calls.
+	err = lynx.UnveilBlock()
+	panicOnErr(err)
 }
 
 func panicOnErr(err error) {
diff --git a/main_openbsd.go b/main_openbsd.go
deleted file mode 100644
index 7bbe995..0000000
--- a/main_openbsd.go
+++ /dev/null
@@ -1,51 +0,0 @@
-// +build openbsd
-
-package main
-
-import (
-	"os"
-
-	"golang.org/x/sys/unix"
-	"tildegit.org/andinus/lynx"
-)
-
-func main() {
-	// We need less permissions on these conditions.
-	if len(os.Args) == 1 ||
-		os.Args[1] == "version" ||
-		os.Args[1] == "env" {
-		err := unix.PledgePromises("stdio")
-		panicOnErr(err)
-	} else {
-		err := unix.PledgePromises("unveil stdio rpath")
-		panicOnErr(err)
-
-		unveil()
-
-		// Drop unveil from promises.
-		err = unix.PledgePromises("stdio rpath")
-		panicOnErr(err)
-	}
-	grus()
-}
-
-func unveil() {
-	paths := make(map[string]string)
-
-	paths["/usr/share/dict"] = "r"
-	paths["/usr/local/share/dict"] = "r"
-
-	// Unveil user defined dictionaries.
-	if len(os.Args) >= 3 {
-		for _, dict := range os.Args[2:] {
-			paths[dict] = "r"
-		}
-	}
-	// This will not return error if the file doesn't exist.
-	err := lynx.UnveilPaths(paths)
-	panicOnErr(err)
-
-	// Block further unveil calls.
-	err = lynx.UnveilBlock()
-	panicOnErr(err)
-}
diff --git a/main_other.go b/main_other.go
deleted file mode 100644
index 88824ad..0000000
--- a/main_other.go
+++ /dev/null
@@ -1,7 +0,0 @@
-// +build !openbsd
-
-package main
-
-func main() {
-	grus()
-}