diff options
author | Unknwon <u@gogs.io> | 2017-05-29 23:43:40 -0400 |
---|---|---|
committer | Unknwon <u@gogs.io> | 2017-05-29 23:43:40 -0400 |
commit | 0778d7de80ebbd6b1b7c7d7d5676655b7706f1f4 (patch) | |
tree | 41c8878f2bd17e6a63e80903f02c89a02d9a79d6 /vendor/github.com/msteinert/pam/callback.go | |
parent | 9085c3b73d3edb81f09478356d47e77ee89bbe46 (diff) |
vendor: update github.com/msteinert/pam (#4216)
Diffstat (limited to 'vendor/github.com/msteinert/pam/callback.go')
-rw-r--r-- | vendor/github.com/msteinert/pam/callback.go | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/vendor/github.com/msteinert/pam/callback.go b/vendor/github.com/msteinert/pam/callback.go new file mode 100644 index 00000000..672a36e8 --- /dev/null +++ b/vendor/github.com/msteinert/pam/callback.go @@ -0,0 +1,39 @@ +package pam + +import "sync" + +var cb struct { + sync.Mutex + m map[int]interface{} + c int +} + +func init() { + cb.m = make(map[int]interface{}) +} + +func cbAdd(v interface{}) int { + cb.Lock() + defer cb.Unlock() + cb.c++ + cb.m[cb.c] = v + return cb.c +} + +func cbGet(c int) interface{} { + cb.Lock() + defer cb.Unlock() + if v, ok := cb.m[c]; ok { + return v + } + panic("Callback pointer not found") +} + +func cbDelete(c int) { + cb.Lock() + defer cb.Unlock() + if _, ok := cb.m[c]; !ok { + panic("Callback pointer not found") + } + delete(cb.m, c) +} |