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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
--Copyright: Matra Datavision 1992,1993
-- File: OSD_Protection.cdl
-- Created: Tue 18 1992
-- Author: Stephan GARNAUD (ARM)
-- <sga@sparc4>
class Protection from OSD
---Purpose: This class provides data to manage file protection
-- Example:These rights are treated in a system dependent manner :
-- On UNIX you have User,Group and Other rights
-- On VMS you have Owner,Group,World and System rights
-- An automatic conversion is done between OSD and UNIX/VMS.
--
-- OSD VMS UNIX
-- User Owner User
-- Group Group Group
-- World World Other
-- System System (combined with Other)
--
-- When you use System protection on UNIX you must know that
-- Other rights and System rights are inclusively "ORed".
-- So Other with only READ access and System with WRITE access
-- will produce on UNIX Other with READ and WRITE access.
--
-- This choice comes from the fact that ROOT can't be considered
-- as member of the group nor as user. So it is considered as Other.
uses SingleProtection, AsciiString from TCollection
is
Create returns Protection;
---Purpose: Initializes global access rights as follows
--
-- User : Read Write
-- System : Read Write
-- Group : Read
-- World : Read
---Level: Public
Create (System ,
User , Group , World : SingleProtection) returns Protection;
---Purpose: Sets values of fields
---Level: Public
Values (me : in out;
System , User , Group , World : out SingleProtection) is static;
---Purpose: Retrieves values of fields
---Level: Public
SetValues (me : in out;
System , User , Group , World : SingleProtection) is static;
---Purpose: Sets values of fields
---Level: Public
SetSystem(me : in out; priv : SingleProtection) is static;
---Purpose: Sets protection of 'System'
---Level: Public
SetUser(me : in out; priv : SingleProtection) is static;
---Purpose: Sets protection of 'User'
---Level: Public
SetGroup(me : in out; priv : SingleProtection) is static;
---Purpose: Sets protection of 'Group'
---Level: Public
SetWorld(me : in out; priv : SingleProtection) is static;
---Purpose: Sets protection of 'World'
---Level: Public
System(me ) returns SingleProtection is static;
---Purpose: Gets protection of 'System'
---Level: Public
User(me ) returns SingleProtection is static;
---Purpose: Gets protection of 'User'
---Level: Public
Group(me ) returns SingleProtection is static;
---Purpose: Gets protection of 'Group'
---Level: Public
World(me ) returns SingleProtection is static;
---Purpose: Gets protection of 'World'
---Level: Public
Internal (me) returns Integer is static private;
---Purpose: Returns System dependent access rights
-- this is a private method.
---Level: Public
Add (me : in out ;
aProt : in out SingleProtection ;aRight : SingleProtection) is static;
---Purpose: Add a right to a single protection.
-- ex: aProt = RWD
-- me.Add(aProt,X) -> aProt = RWXD
---Level: Public
Sub (me : in out ;
aProt : in out SingleProtection ;aRight : SingleProtection) is static;
---Purpose: Subtract a right to a single protection.
-- ex: aProt = RWD
-- me.Sub(aProt,RW) -> aProt = D
-- But me.Sub(aProt,RWX) is also valid and gives same result.
---Level: Public
fields
s : SingleProtection; -- System right
u : SingleProtection; -- User right
g : SingleProtection; -- Group right
w : SingleProtection; -- World right
friends class FileNode, class File, class Directory
end Protection from OSD;
|