1#
2# @(#) Test reverse lookup of user ids from getent match getpwuid() output
3#
4
5load_lib util-defs.exp
6
7# Compile getpwuid.c
8
9set output [target_compile "$srcdir/$subdir/getpwuid.c" \
10        "$srcdir/$subdir/getpwuid" executable {additional_flags="-g"}]
11
12if {$output != ""} {
13    perror "compile getpwuid"
14    puts $output
15    return
16}
17
18# Get list of uids using getent
19
20set output [util_start "getent" "passwd" ""]
21set got_entries 0
22
23verbose $output
24
25foreach {line} [split $output "\n"] {
26
27    # Process user
28
29    set pwd_entry [split $line ":"]
30    set user [lindex $pwd_entry 0]
31
32    if {[regexp {^[^/]+/} $user]} {
33
34        set got_entries 1
35
36        # Only lookup winbindd users
37
38        set uid [lindex $pwd_entry 2]
39        set gid [lindex $pwd_entry 3]
40
41        # Test lookup of uid succeeds
42
43        set output [util_start "$srcdir/$subdir/getpwuid" "$uid" ""]
44
45	verbose $output
46
47	set test_desc "getpwuid $uid ($user)"
48
49        if {[regexp "PASS:" $output]} {
50            pass $test_desc
51        } else {
52            fail $test_desc
53        }
54    }
55}
56
57if {!$got_entries} {
58    perror "No domain users returned from getent"
59}
60