mirror of
https://github.com/coteditor/CotEditor.git
synced 2024-09-19 07:07:18 +03:00
Replace UInt16 with Int16 in FilePermissions
This commit is contained in:
parent
fbe0466d8a
commit
fa7f6b4fc2
@ -478,8 +478,9 @@ final class Document: NSDocument, AdditionalDocumentPreparing, EncodingChanging
|
||||
|
||||
// give the execute permission if user requested
|
||||
if self.saveOptions.isExecutable, !saveOperation.isAutosave {
|
||||
let permissions = self.fileAttributes?.permissions.mask ?? 0o644 // ???: Is the default permission really always 644?
|
||||
attributes[FileAttributeKey.posixPermissions] = permissions | S_IXUSR
|
||||
var permissions = self.fileAttributes?.permissions ?? FilePermissions(mask: 0o644) // ???: Is the default permission really always 644?
|
||||
permissions.user.insert(.execute)
|
||||
attributes[FileAttributeKey.posixPermissions] = permissions.mask
|
||||
}
|
||||
|
||||
// save document state to the extended file attributes
|
||||
|
@ -171,7 +171,7 @@ extension DocumentFile.Attributes {
|
||||
self.creationDate = dictionary[.creationDate] as? Date
|
||||
self.modificationDate = dictionary[.modificationDate] as? Date
|
||||
self.size = dictionary[.size] as? Int64 ?? 0
|
||||
self.permissions = FilePermissions(mask: dictionary[.posixPermissions] as? UInt16 ?? 0)
|
||||
self.permissions = FilePermissions(mask: dictionary[.posixPermissions] as? Int16 ?? 0)
|
||||
self.owner = dictionary[.ownerAccountName] as? String
|
||||
}
|
||||
}
|
||||
|
@ -1767,7 +1767,7 @@ extension EditorTextView {
|
||||
}
|
||||
if movement == NSIllegalTextMovement,
|
||||
let character = event.characters?.utf16.first,
|
||||
character < 0xF700, character != UInt16(NSDeleteCharacter)
|
||||
character < 0xF700, character != Int16(NSDeleteCharacter)
|
||||
{ // standard key-input
|
||||
self.needsRecompletion = true
|
||||
}
|
||||
|
@ -32,7 +32,7 @@ struct FilePermissions: Equatable {
|
||||
|
||||
struct Permission: OptionSet {
|
||||
|
||||
let rawValue: UInt16
|
||||
let rawValue: Int16
|
||||
|
||||
static let read = Self(rawValue: 0b100)
|
||||
static let write = Self(rawValue: 0b010)
|
||||
@ -48,7 +48,7 @@ struct FilePermissions: Equatable {
|
||||
}
|
||||
|
||||
|
||||
init(mask: UInt16) {
|
||||
init(mask: Int16) {
|
||||
|
||||
self.user = Permission(rawValue: (mask & 0b111 << 6) >> 6)
|
||||
self.group = Permission(rawValue: (mask & 0b111 << 3) >> 3)
|
||||
@ -56,7 +56,8 @@ struct FilePermissions: Equatable {
|
||||
}
|
||||
|
||||
|
||||
var mask: UInt16 {
|
||||
/// The `Int16` value.
|
||||
var mask: Int16 {
|
||||
|
||||
let userMask = self.user.rawValue << 6
|
||||
let groupMask = self.group.rawValue << 3
|
||||
@ -66,14 +67,14 @@ struct FilePermissions: Equatable {
|
||||
}
|
||||
|
||||
|
||||
/// The human-readable permission expression like "rwxr--r--"
|
||||
/// The human-readable permission expression like “rwxr--r--”.
|
||||
var symbolic: String {
|
||||
|
||||
self.user.symbolic + self.group.symbolic + self.others.symbolic
|
||||
}
|
||||
|
||||
|
||||
/// The octal value expression like "644"
|
||||
/// The octal value expression like “644”.
|
||||
var octal: String {
|
||||
|
||||
String(self.mask, radix: 8)
|
||||
|
@ -44,4 +44,14 @@ final class FilePermissionTests: XCTestCase {
|
||||
XCTAssertEqual(FilePermissions(mask: 0o777).formatted(.filePermissions(.full)), "777 (-rwxrwxrwx)")
|
||||
XCTAssertEqual(FilePermissions(mask: 0o643).formatted(.filePermissions(.full)), "643 (-rw-r---wx)")
|
||||
}
|
||||
|
||||
|
||||
func testCalculation() {
|
||||
|
||||
var permissions = FilePermissions(mask: 0o644)
|
||||
permissions.user.insert(.execute)
|
||||
|
||||
XCTAssertTrue(permissions.user.contains(.execute))
|
||||
XCTAssertEqual(permissions.mask, 0o744)
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user