mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-06-09 02:18:31 +02:00
66 lines
1.5 KiB
ObjectPascal
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.
|