testpass2.pp 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. Program TestPass2;
  2. Uses pwd,grp,baseunix,sysutils;
  3. {$mode objfpc}{$h+}
  4. Procedure printpchar(fieldname:String;p:pchar);
  5. Begin
  6. If assigned(p) Then
  7. Begin
  8. write(fieldname);
  9. write(':',' ':15-length(fieldname));
  10. writeln(p);
  11. End;
  12. End;
  13. Procedure printpchar(fieldname,p:string);
  14. Begin
  15. printpchar(fieldname,pchar(p));
  16. End;
  17. Var p : PPasswd;
  18. supplementary_gids : array[0..99] Of gid_t;
  19. i,nrgids: cint;
  20. pgrp: PGroup;
  21. Begin
  22. p := fpgetpwnam('marcov');
  23. If assigned(p) Then
  24. Begin
  25. printpchar('pw_name',p^.pw_name);
  26. printpchar('pw_passwd',p^.pw_passwd);
  27. writeln('pw_uid:',' ':9,p^.pw_uid);
  28. writeln('pw_gid:',' ':9,p^.pw_gid);
  29. {$ifdef BSD}
  30. printpchar('pw_change',inttostr(p^.pw_change));
  31. printpchar('pw_class',p^.pw_class);
  32. {$endif}
  33. printpchar('pw_gecos',p^.pw_gecos);
  34. printpchar('pw_dir',p^.pw_dir);
  35. printpchar('pw_shell',p^.pw_shell);
  36. {$ifdef BSD}
  37. printpchar('pw_expire',inttostr(p^.pw_expire));
  38. {$ifdef FreeBSD}
  39. printpchar('pw_fields',inttostr(p^.pw_fields));
  40. {$endif}
  41. {$endif}
  42. End;
  43. nrgids := 100;
  44. If fpgetgrouplist(p^.pw_name,p^.pw_gid,@supplementary_gids,@nrgids)<>-1 Then
  45. Begin
  46. Write ('Supplementary groups:');
  47. For i:=0 To nrgids-1 Do
  48. Begin
  49. pgrp := fpgetgrgid(supplementary_gids[i]);
  50. If assigned(pgrp) Then
  51. write(pgrp^.gr_name,' (',supplementary_gids[i],') ')
  52. Else
  53. write(' ???? (',supplementary_gids[i],') ')
  54. End;
  55. writeln;
  56. End;
  57. writeln;
  58. End.