File: permissions.h.html

package info (click to toggle)
rudiments 0.31-2
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 7,516 kB
  • ctags: 3,248
  • sloc: asm: 23,776; cpp: 22,792; sh: 7,769; ansic: 1,769; makefile: 1,054; xml: 169; perl: 19
file content (151 lines) | stat: -rw-r--r-- 11,881 bytes parent folder | download | duplicates (2)
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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
<html>
<head>
<title>~/src/firstworks/rudiments-0.31/include/rudiments/permissions.h.html</title>
<meta name="Generator" content="Vim/7.0">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body bgcolor="#ffffff" text="#000000">
<pre>
<font color="#0000ff">// Copyright (c) 1999-2002 David Muse</font>
<font color="#0000ff">// See the COPYING file for more information.</font>

<font color="#a020f0">#ifndef RUDIMENTS_PERMISSIONS_H</font>
<font color="#a020f0">#define RUDIMENTS_PERMISSIONS_H</font>

<font color="#a020f0">#include </font><font color="#ff00ff">&lt;rudiments/private/permissionsincludes.h&gt;</font>

<font color="#0000ff">// Permissions are access priveleges.  Files, directories, semaphores and</font>
<font color="#0000ff">// shared memory segments all have permissions associated with them.</font>
<font color="#0000ff">//</font>
<font color="#0000ff">// There are 3 types of permissions: read, write and execute.</font>
<font color="#0000ff">//</font>
<font color="#0000ff">// These permissions can be granted to:</font>
<font color="#0000ff">//      1. The user that owns the object.</font>
<font color="#0000ff">//      2. Other users in the group of the user that owns the object.</font>
<font color="#0000ff">//      3. All other users.</font>
<font color="#0000ff">//</font>
<font color="#0000ff">// The execute permission has 2 modifications which can be applied to it:</font>
<font color="#0000ff">//      1. Set user id - the program will run as the user that owns</font>
<font color="#0000ff">//                      it instead of as the user that ran it</font>
<font color="#0000ff">//      1. Set group id - the program will run as the group that owns</font>
<font color="#0000ff">//                      it instead of as the group of the user that ran it</font>
<font color="#0000ff">//</font>
<font color="#0000ff">// The &quot;sticky bit&quot; may also be set.  When set, the file is saved in the</font>
<font color="#0000ff">// system's swap space. As a side-effect, it cannot be deleted by a user other</font>
<font color="#0000ff">// than the one that created it.</font>

<font color="#a020f0">#ifdef RUDIMENTS_NAMESPACE</font>
<font color="#2e8b57"><b>namespace</b></font> rudiments {
<font color="#a020f0">#endif</font>

<font color="#2e8b57"><b>class</b></font> permissions {
        <font color="#a52a2a"><b>public</b></font>:
                <font color="#2e8b57"><b>static</b></font>        <font color="#2e8b57"><b>bool</b></font>   setFilePermissions(<font color="#2e8b57"><b>const</b></font> <font color="#2e8b57"><b>char</b></font> *filename,
                                                        mode_t perms);
                                <font color="#0000ff">// Set the permissions on &quot;filename&quot; to &quot;perms&quot;.</font>
                                <font color="#0000ff">//</font>
                                <font color="#0000ff">// Returns true on success and false on failure.</font>
                <font color="#2e8b57"><b>static</b></font>        <font color="#2e8b57"><b>bool</b></font>   setFilePermissions(<font color="#2e8b57"><b>int</b></font> fd, mode_t perms);
                                <font color="#0000ff">// Set the permissions on the file associated</font>
                                <font color="#0000ff">// with file descriptor &quot;fd&quot; to &quot;perms&quot;.</font>
                                <font color="#0000ff">// </font>
                                <font color="#0000ff">// Returns true on success and false on failure.</font>

                <font color="#2e8b57"><b>static</b></font>        mode_t  evalPermString(<font color="#2e8b57"><b>const</b></font> <font color="#2e8b57"><b>char</b></font> *permstring);
                                <font color="#0000ff">// Return a permission defined in &quot;permstring&quot;.</font>
                                <font color="#0000ff">//</font>
                                <font color="#0000ff">// &quot;permstring&quot; should be the same format as</font>
                                <font color="#0000ff">// displayed by the &quot;ls -l&quot; command.</font>
                                <font color="#0000ff">//</font>
                                <font color="#0000ff">// The first 3 characters set permissions for </font>
                                <font color="#0000ff">// the owner.</font>
                                <font color="#0000ff">// The next 3 characters set permissions for </font>
                                <font color="#0000ff">// the group.</font>
                                <font color="#0000ff">// The next 3 characters set permissions for </font>
                                <font color="#0000ff">// all others.</font>
                                <font color="#0000ff">//</font>
                                <font color="#0000ff">// For example:</font>
                                <font color="#0000ff">//  rwxr-xr-x : read/execute for everyone</font>
                                <font color="#0000ff">//                  and write for the owner</font>
                                <font color="#0000ff">//  rw-rw-r-- : read for everyone and</font>
                                <font color="#0000ff">//                  write for the owner and</font>
                                <font color="#0000ff">//                  owner's group</font>
                                <font color="#0000ff">//  rw-r--r-- : read for everyone and</font>
                                <font color="#0000ff">//                  write for the owner</font>
                                <font color="#0000ff">//  rwsr-sr-x : read/execute for everyone,</font>
                                <font color="#0000ff">//                  write for the owner and</font>
                                <font color="#0000ff">//                  run as the user/group</font>
                                <font color="#0000ff">//                  that owns the file</font>
                                <font color="#0000ff">//  rw-rw-rwt : read/write for everyone,</font>
                                <font color="#0000ff">//                  and save the file in</font>
                                <font color="#0000ff">//                  swap space</font>
                <font color="#2e8b57"><b>static</b></font>        <font color="#2e8b57"><b>char</b></font>   *evalPermOctal(mode_t mode);
                                <font color="#0000ff">// </font><span style="background-color: #ffff00"><font color="#0000ff">FIXME</font></span><font color="#0000ff">: document this</font>



                <font color="#0000ff">// The following methods can be or'ed together to define</font>
                <font color="#0000ff">// a permission.  For example:</font>
                <font color="#0000ff">//</font>
                <font color="#0000ff">// mode_t perm=(ownerReadWriteExecute() | </font>
                <font color="#0000ff">//                    groupReadExecute() | </font>
                <font color="#0000ff">//                    othersReadExecute())</font>
                <font color="#0000ff">// </font>
                <font color="#0000ff">// sets perm equal to rwxr-xr-x permissions </font>

                <font color="#2e8b57"><b>static</b></font>        mode_t  everyoneReadWrite();
                                <font color="#0000ff">// returns rw-rw-rw- (666) permissions</font>
                <font color="#2e8b57"><b>static</b></font>        mode_t  everyoneReadWriteExecute();
                                <font color="#0000ff">// returns rwxrwxrwx (777) permissions</font>
                <font color="#2e8b57"><b>static</b></font>        mode_t  ownerRead();
                                <font color="#0000ff">// returns r-------- (400) permissions</font>
                <font color="#2e8b57"><b>static</b></font>        mode_t  ownerWrite();
                                <font color="#0000ff">// returns -w------- (200) permissions</font>
                <font color="#2e8b57"><b>static</b></font>        mode_t  ownerExecute();
                                <font color="#0000ff">// returns --x------ (100) permissions</font>
                <font color="#2e8b57"><b>static</b></font>        mode_t  ownerReadWrite();
                                <font color="#0000ff">// returns rw------- (600) permissions</font>
                <font color="#2e8b57"><b>static</b></font>        mode_t  ownerReadExecute();
                                <font color="#0000ff">// returns r-x------ (500) permissions</font>
                <font color="#2e8b57"><b>static</b></font>        mode_t  ownerReadWriteExecute();
                                <font color="#0000ff">// returns rwx------ (700) permissions</font>
                <font color="#2e8b57"><b>static</b></font>        mode_t  groupRead();
                                <font color="#0000ff">// returns ---r----- (040) permissions</font>
                <font color="#2e8b57"><b>static</b></font>        mode_t  groupWrite();
                                <font color="#0000ff">// returns ----w---- (020) permissions</font>
                <font color="#2e8b57"><b>static</b></font>        mode_t  groupExecute();
                                <font color="#0000ff">// returns -----x--- (010) permissions</font>
                <font color="#2e8b57"><b>static</b></font>        mode_t  groupReadWrite();
                                <font color="#0000ff">// returns ---rw---- (060) permissions</font>
                <font color="#2e8b57"><b>static</b></font>        mode_t  groupReadExecute();
                                <font color="#0000ff">// returns ---r-x--- (050) permissions</font>
                <font color="#2e8b57"><b>static</b></font>        mode_t  groupReadWriteExecute();
                                <font color="#0000ff">// returns ---rwx--- (070) permissions</font>
                <font color="#2e8b57"><b>static</b></font>        mode_t  othersRead();
                                <font color="#0000ff">// returns ------r-- (004) permissions</font>
                <font color="#2e8b57"><b>static</b></font>        mode_t  othersWrite();
                                <font color="#0000ff">// returns -------w- (002) permissions</font>
                <font color="#2e8b57"><b>static</b></font>        mode_t  othersExecute();
                                <font color="#0000ff">// returns --------x (001) permissions</font>
                <font color="#2e8b57"><b>static</b></font>        mode_t  othersReadWrite();
                                <font color="#0000ff">// returns ------rw- (006) permissions</font>
                <font color="#2e8b57"><b>static</b></font>        mode_t  othersReadExecute();
                                <font color="#0000ff">// returns ------r-x (005) permissions</font>
                <font color="#2e8b57"><b>static</b></font>        mode_t  othersReadWriteExecute();
                                <font color="#0000ff">// returns ------rwx (007) permissions</font>
                <font color="#2e8b57"><b>static</b></font>        mode_t  saveInSwapSpace();
                                <font color="#0000ff">// returns --------t permissions</font>
                <font color="#2e8b57"><b>static</b></font>        mode_t  setUserId();
                                <font color="#0000ff">// returns --s------ (u+s) permissions</font>
                <font color="#2e8b57"><b>static</b></font>        mode_t  setGroupId();
                                <font color="#0000ff">// returns -----s--- (g+s) permissions</font>
};

<font color="#a020f0">#ifdef RUDIMENTS_NAMESPACE</font>
}
<font color="#a020f0">#endif</font>

<font color="#a020f0">#endif</font>
</pre>
</body>
</html>