...
Source file
src/os/user/lookup.go
Documentation: os/user
1
2
3
4
5 package user
6
7 import "sync"
8
9
10 func Current() (*User, error) {
11 cache.Do(func() { cache.u, cache.err = current() })
12 if cache.err != nil {
13 return nil, cache.err
14 }
15 u := *cache.u
16 return &u, nil
17 }
18
19
20 var cache struct {
21 sync.Once
22 u *User
23 err error
24 }
25
26
27
28 func Lookup(username string) (*User, error) {
29 if u, err := Current(); err == nil && u.Username == username {
30 return u, err
31 }
32 return lookupUser(username)
33 }
34
35
36
37 func LookupId(uid string) (*User, error) {
38 if u, err := Current(); err == nil && u.Uid == uid {
39 return u, err
40 }
41 return lookupUserId(uid)
42 }
43
44
45
46 func LookupGroup(name string) (*Group, error) {
47 return lookupGroup(name)
48 }
49
50
51
52 func LookupGroupId(gid string) (*Group, error) {
53 return lookupGroupId(gid)
54 }
55
56
57 func (u *User) GroupIds() ([]string, error) {
58 return listGroups(u)
59 }
60
View as plain text