123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- unit grp;
- interface
- uses
- initc,unixtype,baseunix,ctypes;
- {$IFDEF FPC}
- {$PACKRECORDS C}
- {$ENDIF}
- const
- External_library= clib; {Setup as you need}
- _PATH_GROUP = '/etc/group';
- Type
- PGroup = ^TGroup;
- PPGroup = ^PGroup;
- TGroup = record
- gr_name : pchar; { group name }
- gr_passwd : pchar; { group password }
- gr_gid : gid_t; { group id }
- gr_mem : ppchar; { group members }
- end;
- procedure fpendgrent; cdecl;external External_library name 'endgrent';
- function fpgetgrent:pgroup; cdecl;external External_library name 'getgrent';
- function fpgetgrgid (id:gid_t):pgroup; cdecl;external External_library name 'getgrgid';
- function fpgetgrnam (name:pchar):pgroup; cdecl;external External_library name 'getgrnam';
- {$ifdef BSD}
- function fpgroup_from_gid (gid:gid_t; nogrup:cint):pchar; cdecl;external External_library name 'group_from_gid';
- {$endif}
- function fpsetgrent:cint;cdecl;external External_library name 'setgrent';
- function fpgetgrgid_r (id:gid_t; grp:Pgroup; buffer:pchar; buffersize:size_t; grresult:PPgroup):cint;cdecl;external External_library name 'getgrgid_r';
- function fpgetgrnam_r (nam:pchar; grp:Pgroup; buffer:pchar; buffersize:size_t; grresult:PPgroup):cint;cdecl;external External_library name 'getgrnam_r';
- {$ifndef Darwin}
- function fpgetgrent_r (grp:Pgroup; buffer:pchar; buffersize:size_t; grresult:PPgroup):cint;cdecl;external External_library name 'getgrent_r';
- {$endif}
- function fpsetgroupent (stayopen:cint):cint;cdecl;external External_library name 'setgroupent';
- {$ifdef Darwin}
- procedure fpsetgrfile(name:pchar); cdecl; external external_library name 'setgrfile';
- {$endif}
- // FreeBSD has these, Linux too if USE_BSD is defined. Darwin too.
- // Darwin uses ints instead of gid's though, except for setgroups.
- function fpsetgroups(n:size_t;groups:pgid):cint; cdecl; external External_Library name 'setgroups';
- function fpgetgrouplist(user:pchar;group:tgid;groups:pgid;ngroups:pcint):cint; cdecl; external External_Library name 'getgrouplist';
- function fpinitgroups(user:pchar;group:tgid):cint;cdecl; external External_Library name 'initgroups';
- implementation
- end.
|