aboutsummaryrefslogtreecommitdiff
path: root/vendor/github.com/msteinert/pam/callback.go
diff options
context:
space:
mode:
authorUnknwon <u@gogs.io>2017-05-29 23:43:40 -0400
committerUnknwon <u@gogs.io>2017-05-29 23:43:40 -0400
commit0778d7de80ebbd6b1b7c7d7d5676655b7706f1f4 (patch)
tree41c8878f2bd17e6a63e80903f02c89a02d9a79d6 /vendor/github.com/msteinert/pam/callback.go
parent9085c3b73d3edb81f09478356d47e77ee89bbe46 (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.go39
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)
+}