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"><rudiments/private/permissionsincludes.h></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 "sticky bit" 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 "filename" to "perms".</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 "fd" to "perms".</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 "permstring".</font>
<font color="#0000ff">//</font>
<font color="#0000ff">// "permstring" should be the same format as</font>
<font color="#0000ff">// displayed by the "ls -l" 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>
|