aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Jarry <robin@jarry.cc>2023-03-09 22:26:03 +0100
committerRobin Jarry <robin@jarry.cc>2023-03-09 22:29:48 +0100
commit5a6a11ddad23e24ffaf2eabaef60f07c20138992 (patch)
tree2724d705377aeb645b525f548ad6c4306b603640
parent96d85a905f33c5b85b558c1059284db719292096 (diff)
downloadaerc-fs.tar.gz
aerc-fs.zip
fswatcher: fix bsd supportfs
Fix the following error when running maildir on freebsd: could not create file system watcher: Unsupported OS: freebsd Do not register based on os type. Register based on supported API. Rename linux -> inotify and darwin -> fsevents. Only build fsevents on darwin, and inotify on all other platforms. Fixes: a0935a3de0ce ("worker/lib: implement an fswatcher interface") Reported-by: Jens Grassel <jens@wegtam.com> Signed-off-by: Robin Jarry <robin@jarry.cc>
-rw-r--r--worker/handlers/register.go12
-rw-r--r--worker/lib/watchers/fsevents.go (renamed from worker/lib/watchers/darwin/darwin.go)4
-rw-r--r--worker/lib/watchers/inotify.go (renamed from worker/lib/watchers/linux/linux.go)7
-rw-r--r--worker/watcher_darwin.go6
-rw-r--r--worker/watcher_enabled.go3
-rw-r--r--worker/worker_enabled.go2
6 files changed, 14 insertions, 20 deletions
diff --git a/worker/handlers/register.go b/worker/handlers/register.go
index c94a256e..4123665f 100644
--- a/worker/handlers/register.go
+++ b/worker/handlers/register.go
@@ -29,15 +29,15 @@ func GetHandlerForScheme(scheme string, worker *types.Worker) (types.Backend, er
type WatcherFactoryFunc func() (types.FSWatcher, error)
-var watcherFactories map[string]WatcherFactoryFunc = make(map[string]WatcherFactoryFunc)
+var watcherFactory WatcherFactoryFunc
-func RegisterWatcherFactory(os string, fn WatcherFactoryFunc) {
- watcherFactories[os] = fn
+func RegisterWatcherFactory(fn WatcherFactoryFunc) {
+ watcherFactory = fn
}
func NewWatcher() (types.FSWatcher, error) {
- if fn, ok := watcherFactories[runtime.GOOS]; ok {
- return fn()
+ if watcherFactory == nil {
+ return nil, fmt.Errorf("Unsupported OS: %s", runtime.GOOS)
}
- return nil, fmt.Errorf("Unsupported OS: %s", runtime.GOOS)
+ return watcherFactory()
}
diff --git a/worker/lib/watchers/darwin/darwin.go b/worker/lib/watchers/fsevents.go
index e20761f3..7b657999 100644
--- a/worker/lib/watchers/darwin/darwin.go
+++ b/worker/lib/watchers/fsevents.go
@@ -1,7 +1,7 @@
//go:build darwin
// +build darwin
-package darwin
+package watchers
import (
"time"
@@ -13,7 +13,7 @@ import (
)
func init() {
- handlers.RegisterWatcherFactory("darwin", newDarwinWatcher)
+ handlers.RegisterWatcherFactory(newDarwinWatcher)
}
type darwinWatcher struct {
diff --git a/worker/lib/watchers/linux/linux.go b/worker/lib/watchers/inotify.go
index 473bb05e..027ef4f2 100644
--- a/worker/lib/watchers/linux/linux.go
+++ b/worker/lib/watchers/inotify.go
@@ -1,4 +1,7 @@
-package linux
+//go:build !darwin
+// +build !darwin
+
+package watchers
import (
"git.sr.ht/~rjarry/aerc/log"
@@ -8,7 +11,7 @@ import (
)
func init() {
- handlers.RegisterWatcherFactory("linux", newInotifyWatcher)
+ handlers.RegisterWatcherFactory(newInotifyWatcher)
}
type inotifyWatcher struct {
diff --git a/worker/watcher_darwin.go b/worker/watcher_darwin.go
deleted file mode 100644
index fa1af712..00000000
--- a/worker/watcher_darwin.go
+++ /dev/null
@@ -1,6 +0,0 @@
-//go:build darwin
-// +build darwin
-
-package worker
-
-import _ "git.sr.ht/~rjarry/aerc/worker/lib/watchers/darwin"
diff --git a/worker/watcher_enabled.go b/worker/watcher_enabled.go
deleted file mode 100644
index 16333f43..00000000
--- a/worker/watcher_enabled.go
+++ /dev/null
@@ -1,3 +0,0 @@
-package worker
-
-import _ "git.sr.ht/~rjarry/aerc/worker/lib/watchers/linux"
diff --git a/worker/worker_enabled.go b/worker/worker_enabled.go
index a644525f..697ca402 100644
--- a/worker/worker_enabled.go
+++ b/worker/worker_enabled.go
@@ -3,7 +3,7 @@ package worker
// the following workers are always enabled
import (
_ "git.sr.ht/~rjarry/aerc/worker/imap"
+ _ "git.sr.ht/~rjarry/aerc/worker/lib/watchers"
_ "git.sr.ht/~rjarry/aerc/worker/maildir"
-
_ "git.sr.ht/~rjarry/aerc/worker/mbox"
)