| OLD | NEW |
| (Empty) |
| 1 | |
| 2 /// See http://dartbug.com/22036 | |
| 3 library which.src.has_permission; | |
| 4 | |
| 5 class FilePermission { | |
| 6 | |
| 7 final int index; | |
| 8 final String _name; | |
| 9 | |
| 10 const FilePermission._(this.index, this._name); | |
| 11 | |
| 12 static const EXECUTE = const FilePermission._(0, 'EXECUTE'); | |
| 13 static const WRITE = const FilePermission._(1, 'WRITE'); | |
| 14 static const READ = const FilePermission._(2, 'READ'); | |
| 15 static const SET_UID = const FilePermission._(3, 'SET_UID'); | |
| 16 static const SET_GID = const FilePermission._(4, 'SET_GID'); | |
| 17 static const STICKY = const FilePermission._(5, 'STICKY'); | |
| 18 | |
| 19 static const List<FilePermission> values = const [EXECUTE, WRITE, READ, SET_UI
D, SET_GID, STICKY]; | |
| 20 | |
| 21 String toString() => 'FilePermission.$_name'; | |
| 22 } | |
| 23 | |
| 24 class FilePermissionRole { | |
| 25 | |
| 26 final int index; | |
| 27 final String _name; | |
| 28 | |
| 29 const FilePermissionRole._(this.index, this._name); | |
| 30 | |
| 31 static const WORLD = const FilePermissionRole._(0, 'WORLD'); | |
| 32 static const GROUP = const FilePermissionRole._(1, 'GROUP'); | |
| 33 static const OWNER = const FilePermissionRole._(2, 'OWNER'); | |
| 34 | |
| 35 static const List<FilePermissionRole> values = const [WORLD, GROUP, OWNER]; | |
| 36 | |
| 37 String toString() => 'FilePermissionRole.$_name'; | |
| 38 } | |
| 39 | |
| 40 bool hasPermission(int fileStatMode, FilePermission permission, {FilePermissionR
ole role: FilePermissionRole.WORLD}) { | |
| 41 var bitIndex = _getPermissionBitIndex(permission, role); | |
| 42 return (fileStatMode & (1 << bitIndex)) != 0; | |
| 43 } | |
| 44 | |
| 45 int _getPermissionBitIndex(FilePermission permission, FilePermissionRole role) { | |
| 46 switch (permission) { | |
| 47 case FilePermission.SET_UID: return 11; | |
| 48 case FilePermission.SET_GID: return 10; | |
| 49 case FilePermission.STICKY: return 9; | |
| 50 default: return (role.index * 3) + permission.index; | |
| 51 } | |
| 52 } | |
| OLD | NEW |