//go:build !windows package instance import "errors" // ErrAlreadyRunning means another instance holds the single-instance slot. var ErrAlreadyRunning = errors.New("another instance of ipswap is already running") type noLock struct{} func (noLock) release() {} // lockProcess is a no-op off Windows: there is no named mutex, and the control // listener alone is enough to detect a running instance during development. // The consequence is only that two launches racing in the same millisecond // could both become primary, which does not matter on a dev box. func lockProcess() (releaser, error) { return noLock{}, nil }