File: 1438

package info (click to toggle)
pcp 7.1.0-1
  • links: PTS
  • area: main
  • in suites: forky, sid
  • size: 252,748 kB
  • sloc: ansic: 1,483,656; sh: 182,366; xml: 160,462; cpp: 83,813; python: 24,980; perl: 18,327; yacc: 6,877; lex: 2,864; makefile: 2,738; awk: 165; fortran: 60; java: 52
file content (149 lines) | stat: -rwxr-xr-x 3,526 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
#!/bin/sh
# PCP QA Test No. 1438
# exercise __pmAcc*() methods
#
# non-valgrind variant, see qa/1439 for the valgrind variant
#
# Copyright (c) 2023 Ken McDonell.  All Rights Reserved.
#

if [ $# -eq 0 ]
then
    seq=`basename $0`
    echo "QA output created by $seq"
else
    # use $seq from caller, unless not set
    [ -n "$seq" ] || seq=`basename $0`
    echo "QA output created by `basename $0` $*"
fi

# get standard environment, filters and checks
. ./common.product
. ./common.filter
. ./common.check

do_valgrind=false
if [ "$1" = "--valgrind" ]
then
    _check_valgrind
    do_valgrind=true
elif _prefer_valgrind
then
    [ $PCPQA_VALGRIND = both ] || \
	_notrun "valgrind variant qa/1439 will be run"
fi

root_group_is_wheel=false
case $PCP_PLATFORM
in
    darwin|freebsd|netbsd|openbsd)
	root_group_is_wheel=true
	;;
esac

uids="root bin daemon pcp"
for name in $uids
do
    grep "^$name:" /etc/passwd >/dev/null || _notrun "no user $name in passwd file"
done

for name in $uids
do
    [ "$name" = root ] && $root_group_is_wheel && name=wheel
    grep "^$name:" /etc/group >/dev/null || _notrun "no group $name in group file"
done

_cleanup()
{
    cd $here
    $sudo rm -rf $tmp $tmp.*
}

status=0	# success is the default!
trap "_cleanup; exit \$status" 0 1 2 3 15

echo "root_group_is_wheel=$root_group_is_wheel" >>$seq_full

_filter()
{
    tee -a $seq_full \
    | sed -f $tmp.sed
}

# real QA test starts here

if $root_group_is_wheel
then
    gids="`echo $uids | sed -e 's/root/wheel/'`"
else
    gids="$uids"
fi

echo "=== users ===" | tee -a $seq_full
for name in $uids
do
    $PCP_AWK_PROG </etc/passwd >>$tmp.sed -F ':' '
$1 == "'$name'" { printf "s/  *%d %s/ %7s %s/\n",$3,$1,toupper($1),$1 }
'
done
for name in $gids
do
    $PCP_AWK_PROG </etc/group >>$tmp.sed -F ':' '
$1 == "'$name'" {
	    printf "/ %s /s/ [^ ]*,%d(%s)/ %s(%s)/\n",toupper($1),$3,$1,toupper($1),$1
	    printf "/ %s /s/ %d(%s)/ %s(%s)/\n",toupper($1),$3,$1,toupper($1),$1
	}'
done
$root_group_is_wheel && echo 's/[0-9][0-9]*(wheel)/ROOT(root)/' >>$tmp.sed
# some of our target users may be in other groups, esp user "root",
# and some of the target users may be in some of the other target
# groups, so cull the extra ones
#
echo 's/,[0-9][0-9]*([^)]*)//g' >>$tmp.sed
echo 's/,[A-Z][A-Z]*([^)]*)//g' >>$tmp.sed
cat $tmp.sed >>$seq_full
if $do_valgrind
then
    _run_valgrind src/usergroup -u $uids
else
    src/usergroup -u $uids 2>&1
fi \
| sed -e "s@$tmp@TMP@g" \
| _filter

echo "=== groups ===" | tee -a $seq_full
rm -f $tmp.sed
for name in $gids
do
    $PCP_AWK_PROG </etc/group >>$tmp.sed -F ':' '
$1 == "'$name'" { printf "s/  *%d %s/ %7s %s/\n",$3,$1,toupper($1),$1 }
'
done
for name in $uids
do
    $PCP_AWK_PROG </etc/passwd >>$tmp.sed -F ':' '
$1 == "'$name'" {
	    printf "/ %s /s/ [^ ]*,%d(%s)/ %s(%s)/\n",toupper($1),$3,$1,toupper($1),$1
	    printf "/ %s /s/ %d(%s)/ %s(%s)/\n",toupper($1),$3,$1,toupper($1),$1
	}'
done
$root_group_is_wheel && echo 's/ WHEEL wheel /  ROOT root  /' >>$tmp.sed
$root_group_is_wheel && echo 's/[0-9][0-9]*(root)/ROOT(root)/' >>$tmp.sed
# some of our target groups may be have other users, esp user "root",
# and some of the target users may be in some of the other target
# groups, so cull the extra ones
#
echo 's/,[0-9][0-9]*([^)]*)//g' >>$tmp.sed
echo 's/,[A-Z][A-Z]*([^)]*)//g' >>$tmp.sed
cat $tmp.sed >>$seq_full
if $do_valgrind
then
    _run_valgrind src/usergroup -g $gids
else
    src/usergroup -g $gids 2>&1
fi \
| sed -e "s@$tmp@TMP@g" \
| _filter

# success, all done
exit