65
package CFG
import (
"fmt"
"os"
"os/exec"
"sophuwu.site/manhttpd/neterr"
"strings"
)
var (
Mandoc string = "mandoc"
DbCmd string = "apropos" // or "whatis"
ManCmd string = "man"
Hostname string
)
func which(s string) (string, error) {
c := exec.Command("which", s)
b, e := c.CombinedOutput()
return strings.TrimSpace(string(b)), e
}
func init() {
var e error
var b []byte
var s string
if s = os.Getenv("HOSTNAME"); s != "" {
Hostname = s
} else if s, e = os.Hostname(); e == nil {
Hostname = s
} else if b, e = os.ReadFile("/etc/hostname"); e == nil {
Hostname = strings.TrimSpace(string(b))
}
if Hostname == "" {
Hostname = "Unresolved"
}
var err error
Mandoc, err = which("mandoc")
fmt.Println(Mandoc, err)
if err != nil || len(Mandoc) == 0 {
neterr.Fatal("dependency `mandoc` not found in $PATH, is it installed?\n")
}
ManCmd, err = which("man")
if err != nil {
neterr.Fatal("dependency `man` not found in $PATH, is it installed?\n")
}
DbCmd, err = which("apropos")
if err != nil || len(DbCmd) == 0 {
DbCmd, err = which("whatis")
if err != nil || len(DbCmd) == 0 {
neterr.Fatal("dependency `apropos` or `whatis` not found in $PATH, is it installed?\n")
}
}
if len(os.Args) > 1 && strings.HasSuffix(os.Args[1], ".conf") {
ConfFile = os.Args[1]
}
DefaultConf, err = ParseEtcConf()
if err != nil {
neterr.Fatal("Failed to parse configuration file:", err)
}
}