fpc/packages/users/examples/testpass2.pp
marco 0cf0c22521 * small freebsd <-> OS X fix
git-svn-id: trunk@11084 -
2008-05-25 11:55:18 +00:00

66 lines
1.5 KiB
ObjectPascal

Program TestPass2;
Uses pwd,grp,baseunix,sysutils;
{$mode objfpc}{$h+}
Procedure printpchar(fieldname:String;p:pchar);
Begin
If assigned(p) Then
Begin
write(fieldname);
write(':',' ':15-length(fieldname));
writeln(p);
End;
End;
Procedure printpchar(fieldname,p:string);
Begin
printpchar(fieldname,pchar(p));
End;
Var p : PPasswd;
supplementary_gids : array[0..99] Of gid_t;
i,nrgids: cint;
pgrp: PGroup;
Begin
p := fpgetpwnam('marcov');
If assigned(p) Then
Begin
printpchar('pw_name',p^.pw_name);
printpchar('pw_passwd',p^.pw_passwd);
writeln('pw_uid:',' ':9,p^.pw_uid);
writeln('pw_gid:',' ':9,p^.pw_gid);
{$ifdef BSD}
printpchar('pw_change',inttostr(p^.pw_change));
printpchar('pw_class',p^.pw_class);
{$endif}
printpchar('pw_gecos',p^.pw_gecos);
printpchar('pw_dir',p^.pw_dir);
printpchar('pw_shell',p^.pw_shell);
{$ifdef BSD}
printpchar('pw_expire',inttostr(p^.pw_expire));
{$ifdef FreeBSD}
printpchar('pw_fields',inttostr(p^.pw_fields));
{$endif}
{$endif}
End;
nrgids := 100;
If fpgetgrouplist(p^.pw_name,p^.pw_gid,@supplementary_gids,@nrgids)<>-1 Then
Begin
Write ('Supplementary groups:');
For i:=0 To nrgids-1 Do
Begin
pgrp := fpgetgrgid(supplementary_gids[i]);
If assigned(pgrp) Then
write(pgrp^.gr_name,' (',supplementary_gids[i],') ')
Else
write(' ???? (',supplementary_gids[i],') ')
End;
writeln;
End;
writeln;
End.