# Module FileUtil.Mode

    module Mode: sig .. end

Permission symbolic mode.

    type who = [ `All | `Group | `Other | `User ]

    type wholist = [ `All | `Group | `List of who list | `Other | `User ]

    type permcopy = [ `Group | `Other | `User ]

    type perm = [ `Exec | `ExecX | `Read | `Sticky | `StickyO | `Write ]

    type permlist = [ `Exec
           | `ExecX
           | `List of perm list
           | `Read
           | `Sticky
           | `StickyO
           | `Write ]

    type actionarg = [ `Exec
           | `ExecX
           | `Group
           | `List of perm list
           | `Other
           | `Read
           | `Sticky
           | `StickyO
           | `User
           | `Write ]

    type action = [ `Add of actionarg
           | `Remove of actionarg
           | `Set of actionarg ]

    type actionlist = [ `Add of actionarg
           | `List of action list
           | `Remove of actionarg
           | `Set of actionarg ]

    type clause = [ `All of actionlist
           | `Group of actionlist
           | `None of actionlist
           | `Other of actionlist
           | `User of actionlist ]

    type t = clause list

Typical symbolic mode:

- g+r -> ``Group (`Add `Read)`
- u=rw,g+rw,o-rwx -> ``User (`Set (`List [`Read; `Write])); `Group (`Add (`List [`Read; `Write])); `Other (`Remove (`List [`Read; `Write; `Exec]))`