26 lines
770 B
Swift
26 lines
770 B
Swift
import CInotify
|
|
|
|
public enum InotifyError: Error, Sendable, CustomStringConvertible {
|
|
case initFailed(errno: Int32)
|
|
case addWatchFailed(path: String, errno: Int32)
|
|
case removeWatchFailed(watchDescriptor: Int32, errno: Int32)
|
|
|
|
public var description: String {
|
|
switch self {
|
|
case .initFailed(let code):
|
|
"inotify_init1 failed: \(readableErrno(code))"
|
|
case .addWatchFailed(let path, let code):
|
|
"inotify_add_watch failed for '\(path)': \(readableErrno(code))"
|
|
case .removeWatchFailed(let wd, let code):
|
|
"inotify_rm_watch failed for wd \(wd): \(readableErrno(code))"
|
|
}
|
|
}
|
|
|
|
private func readableErrno(_ code: Int32) -> String {
|
|
if let cStr = get_error_message() {
|
|
return String(cString: cStr) + " (errno \(code))"
|
|
}
|
|
return "errno \(code)"
|
|
}
|
|
}
|