#!/bin/sh # Compare the two halves (user and group) of idcache.c. # Once xformed, they'd better be the same: pwd=`pwd` t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp=$t0/$$ trap 'status=$?; cd "$pwd" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $status' EXIT trap '(exit $?); exit $?' HUP INT PIPE TERM srcdir=../.. framework_failure=0 mkdir -p $tmp || framework_failure=1 cd $tmp || framework_failure=1 if test $framework_failure = 1; then echo "$0: failure in testing framework" 1>&2 (exit 1); exit 1 fi # Extract user-oriented functions. perl -ne \ 'print if /^static struct.*user_alist/ .. /^static struct.*group_alist/' \ $srcdir/idcache.c | head -n -3 > u # Extract group-oriented functions. perl -ne 'print if /^static struct.*group_alist/ .. eof' $srcdir/idcache.c > g # Convert user-specific strings of "u" into corresponding group-specific strings subst=' s/user_/group_/g; s/\buser\b/group/g; s/USER/GROUP/g; s/\bu\b/g/g; s/passwd/group/g; s/pw_uid/gr_gid/g; s/pwnam/grnam/g; s/pwent/grent/g; s/getpw/getgr/g; s/pw_/gr_/g; s/UID/GID/g; s/uid/gid/g; s/getuser/getgroup/; s/login name/group name/; s/to be the/to belong to/; s/pwd fun/grp fun/; ' fail=0 # Ensure that the transformed "u" is the same as g. # Any differences here constitute an error. perl -pe "$subst" u | diff -u - g || fail=1 exit $fail