File: grp.pp

package info (click to toggle)
fpc 2.6.4%2Bdfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 178,760 kB
  • ctags: 83,946
  • sloc: pascal: 2,000,374; xml: 138,807; ansic: 9,617; asm: 7,843; yacc: 3,747; php: 3,271; sh: 2,626; makefile: 2,610; lex: 2,537; sql: 267; cpp: 145; sed: 132; perl: 126; csh: 34; tcl: 7
file content (60 lines) | stat: -rw-r--r-- 2,231 bytes parent folder | download | duplicates (13)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
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.