! File access control record.  This record is used by the file system to
! validate access requests and to apply defaults to newly-created files.

%constinteger max group membership = 48

%recordformat fsys access fm(%integer user ID, supervisor ID,
                             %integer privileges,
                             %integer groups,
                             %integerarray group(1 : max group membership))
%constinteger fsys access size = 8 + 4 + 4  { + 4 for each group }

%constinteger readall   privilege = 16_0001
%constinteger no local  privilege = 16_0002;  ! NB negated for convenience
%constinteger admin     privilege = 16_0004
%constinteger bootarea  privilege = 16_0008
%constinteger no remote privilege = 16_0010;  ! User can't log on remotely
%constinteger bypass    privilege = 16_0020


! Global authority record.  This one contains pointers to all the various
! access control records required by the various file systems.

%recordformat access fm(%record(fsys access fm)%name local,
                        %record(*)%name NFS)


! Attributes list, used to obtain and modify file attributes.  Passed to the
! various file systems to modify files' attributes, and from the file systems
! to the client interpreters to obtain files' attributes.  It doesn't really
! belong here, but it'll do for now (better than FACMess).

%recordformat attributes list fm(%record(attributes list fm)%name next,
                                 %integer code, status,
                                 %integer numeric,
                                 (%integer numeric2 %or %string(*)%name textual))

%constinteger file ID            attribute =  1
%constinteger file owner         attribute =  2
%constinteger file supervisor    attribute =  3
%constinteger owner access       attribute =  4
%constinteger local access       attribute =  5
%constinteger world access       attribute =  6
%constinteger group access       attribute =  7
%constinteger defined groups     attribute =  8
%constinteger file creator       attribute =  9
%constinteger static ID          attribute = 10
%constinteger audit ID           attribute = 11
%constinteger date created       attribute = 12
%constinteger date modified      attribute = 13
%constinteger date accessed      attribute = 14
%constinteger creation name      attribute = 15
%constinteger file size          attribute = 16
%constinteger file extents       attribute = 17
%constinteger file flags         attribute = 18

%constinteger first              attribute = file ID attribute
%constinteger last               attribute = file flags attribute

%constinteger attribute OK             =  0
%constinteger attribute unavailable    = -1
%constinteger attribute list overflow  = -2
%constinteger unrecognised attribute   = -3

%end %of %file
