Instead of using hardcoded fixed width integers, use C integer types. As the actual integer size of C depends on the implementation, even if it is often 32bit, we use the C integer types to guard against cases, where that is not the case.
48 lines
2.3 KiB
Swift
48 lines
2.3 KiB
Swift
import CInotify
|
|
|
|
public struct InotifyEventMask: OptionSet, Sendable, Hashable {
|
|
public let rawValue: CUnsignedInt
|
|
|
|
public init(rawValue: UInt32) {
|
|
self.rawValue = rawValue
|
|
}
|
|
|
|
// MARK: - Watchable Events
|
|
|
|
public static let access = InotifyEventMask(rawValue: CUnsignedInt(IN_ACCESS))
|
|
public static let attrib = InotifyEventMask(rawValue: CUnsignedInt(IN_ATTRIB))
|
|
public static let closeWrite = InotifyEventMask(rawValue: CUnsignedInt(IN_CLOSE_WRITE))
|
|
public static let closeNoWrite = InotifyEventMask(rawValue: CUnsignedInt(IN_CLOSE_NOWRITE))
|
|
public static let create = InotifyEventMask(rawValue: CUnsignedInt(IN_CREATE))
|
|
public static let delete = InotifyEventMask(rawValue: CUnsignedInt(IN_DELETE))
|
|
public static let deleteSelf = InotifyEventMask(rawValue: CUnsignedInt(IN_DELETE_SELF))
|
|
public static let modify = InotifyEventMask(rawValue: CUnsignedInt(IN_MODIFY))
|
|
public static let moveSelf = InotifyEventMask(rawValue: CUnsignedInt(IN_MOVE_SELF))
|
|
public static let movedFrom = InotifyEventMask(rawValue: CUnsignedInt(IN_MOVED_FROM))
|
|
public static let movedTo = InotifyEventMask(rawValue: CUnsignedInt(IN_MOVED_TO))
|
|
public static let open = InotifyEventMask(rawValue: CUnsignedInt(IN_OPEN))
|
|
|
|
// MARK: - Combinations
|
|
|
|
public static let move: InotifyEventMask = [.movedFrom, .movedTo]
|
|
public static let close: InotifyEventMask = [.closeWrite, .closeNoWrite]
|
|
public static let allEvents: InotifyEventMask = [
|
|
.access, .attrib, .closeWrite, .closeNoWrite,
|
|
.create, .delete, .deleteSelf, .modify,
|
|
.moveSelf, .movedFrom, .movedTo, .open
|
|
]
|
|
|
|
// MARK: - Watch Flags
|
|
|
|
public static let dontFollow = InotifyEventMask(rawValue: CUnsignedInt(IN_DONT_FOLLOW))
|
|
public static let onlyDir = InotifyEventMask(rawValue: CUnsignedInt(IN_ONLYDIR))
|
|
public static let oneShot = InotifyEventMask(rawValue: CUnsignedInt(IN_ONESHOT))
|
|
|
|
// MARK: - Kernel-Only Flags
|
|
|
|
public static let isDir = InotifyEventMask(rawValue: CUnsignedInt(IN_ISDIR))
|
|
public static let ignored = InotifyEventMask(rawValue: CUnsignedInt(IN_IGNORED))
|
|
public static let queueOverflow = InotifyEventMask(rawValue: CUnsignedInt(IN_Q_OVERFLOW))
|
|
public static let unmount = InotifyEventMask(rawValue: CUnsignedInt(IN_UNMOUNT))
|
|
}
|