Hi,
For a while now I have been sitting on this test that I thought might be
of interest to
the vmsperl community. I have not worked it into a patch, but I wanted
this
to appear in the mailing list archive for future reference. The tests run
only on VMS
and more than testing things I think help to illustrate the equivalence of
the lexical calls and the perl (hence C rtl) calls employed.
Peter Prymmer
# uic.t - test return values from the getpwuid() function against
# equivalent DCL calls. This can be expected to run on VMS only.
#
# $Id: //perl/pvhp/perl/t/vms/uic.t#1 $
# $Change: 2142 $
# $DateTime: 2002/04/30 10:21:00 $
# $Revision: #1 $
# $Author: pvhp $
BEGIN {
if ( $^O ne 'VMS' ) { print "1..0\n"; exit; }
}
print "1..5\n";
# variables for perl
my $login;
my $pass;
my $uid;
my $gid;
my ( $f, $g, $h );
my $sys_login;
my $cliname;
# for manipulation
my $ugid_as_uic;
# variables for DCL
my $USERNAME;
my $UIC;
my $CLINAME;
# for $fao reformatting
my $UIC_NUMERIC;
( $login, $pass, $uid, $gid, $f, $g, $h, $sys_login, $cliname ) =
getpwuid( $< );
$login = uc( $login );
$USERNAME = `write sys\$output f\$edit( f\$getjpi( "", "USERNAME" ),
"TRIM" )`;
chomp( $USERNAME );
print + ( $USERNAME eq $login ) ? '' : 'not ', "ok 1\n";
$UIC = `write sys\$output f\$identifier("$USERNAME","NAME_TO_NUMBER")`;
chomp( $UIC );
print + ( $UIC == $uid ) ? '' : 'not ', "ok 2\n";
$UIC_NUMERIC = `write sys\$output f\$fao( "!\%U", $UIC )`;
chomp( $UIC_NUMERIC );
$ugid_as_uic = sprintf( "[%o,%o]", $gid, ( $uid - ( $gid * 0x10000 ) ) );
print + ( $UIC_NUMERIC eq $ugid_as_uic ) ? '' : 'not ', "ok 3\n";
$CLINAME = `write sys\$output f\$getjpi("","CLINAME")`;
chomp( $CLINAME );
print + ( $cliname eq $CLINAME ) ? '' : 'not ', "ok 4\n";
print + ( $sys_login eq $ENV{'SYS$LOGIN'} ) ? '' : 'not ', "ok 5\n";