aerc/commands/mode/noquit.go
Moritz Poldrack ef599aa8fc lint: simplify code (gosimple)
Replaces infinite for loops containing a select on a channel with a
single case with a range over the channel.

Removes redundant assignments to blank identifiers.

Remove unnecessary guard clause around delete().

Remove `if condition { return true } return false` with return condition

Signed-off-by: Moritz Poldrack <moritz@poldrack.dev>
Acked-by: Robin Jarry <robin@jarry.cc>
2022-08-04 21:57:52 +02:00

24 lines
580 B
Go

package mode
import "sync/atomic"
// noquit is a counter for goroutines that requested the no-quit mode
var noquit int32
// NoQuit enters no-quit mode where aerc cannot be exited (unless the force
// option is used)
func NoQuit() {
atomic.AddInt32(&noquit, 1)
}
// NoQuitDone leaves the no-quit mode
func NoQuitDone() {
atomic.AddInt32(&noquit, -1)
}
// QuitAllowed checks if aerc can exit normally (only when all goroutines that
// requested a no-quit mode were done and called the NoQuitDone() function)
func QuitAllowed() bool {
return atomic.LoadInt32(&noquit) <= 0
}