diff --git a/lib/posix/posix.nim b/lib/posix/posix.nim index 9239ca1482c0b..4525e469a9aff 100644 --- a/lib/posix/posix.nim +++ b/lib/posix/posix.nim @@ -136,6 +136,10 @@ else: ## Nanosecond-granularity time of last data modification. result.tv_sec = s.st_ctime +proc `and`*(x, y: Mode): Mode {.borrow.} +proc `or`*(x, y: Mode): Mode {.borrow.} +proc `==`*(x, y: Mode): bool {.borrow.} + when hasAioH: proc aio_cancel*(a1: cint, a2: ptr Taiocb): cint {.importc, header: "".} proc aio_error*(a1: ptr Taiocb): cint {.importc, header: "".} diff --git a/lib/posix/posix_haiku.nim b/lib/posix/posix_haiku.nim index 6e325cb6595e5..704c9e23ad30d 100644 --- a/lib/posix/posix_haiku.nim +++ b/lib/posix/posix_haiku.nim @@ -154,7 +154,7 @@ type Id* {.importc: "id_t", header: "".} = int32 Ino* {.importc: "ino_t", header: "".} = int64 Key* {.importc: "key_t", header: "".} = int32 - Mode* {.importc: "mode_t", header: "".} = ( + Mode* {.importc: "mode_t", header: "".} = distinct ( when defined(android) or defined(macos) or defined(macosx) or (defined(bsd) and not defined(openbsd) and not defined(netbsd)): uint16 diff --git a/lib/posix/posix_linux_amd64.nim b/lib/posix/posix_linux_amd64.nim index 7a9126abed618..28b888c3cde25 100644 --- a/lib/posix/posix_linux_amd64.nim +++ b/lib/posix/posix_linux_amd64.nim @@ -144,7 +144,7 @@ type Id* {.importc: "id_t", header: "".} = cuint Ino* {.importc: "ino_t", header: "".} = culong Key* {.importc: "key_t", header: "".} = cint - Mode* {.importc: "mode_t", header: "".} = uint32 + Mode* {.importc: "mode_t", header: "".} = distinct uint32 Nlink* {.importc: "nlink_t", header: "".} = culong Off* {.importc: "off_t", header: "".} = clong Pid* {.importc: "pid_t", header: "".} = cint diff --git a/lib/posix/posix_macos_amd64.nim b/lib/posix/posix_macos_amd64.nim index 2b5dea69f4c51..6591eb11e9e4f 100644 --- a/lib/posix/posix_macos_amd64.nim +++ b/lib/posix/posix_macos_amd64.nim @@ -133,7 +133,7 @@ type Id* {.importc: "id_t", header: "".} = int Ino* {.importc: "ino_t", header: "".} = int Key* {.importc: "key_t", header: "".} = int - Mode* {.importc: "mode_t", header: "".} = ( + Mode* {.importc: "mode_t", header: "".} = distinct ( when defined(openbsd) or defined(netbsd): uint32 else: diff --git a/lib/posix/posix_nintendoswitch.nim b/lib/posix/posix_nintendoswitch.nim index fdc4e590e4c2e..59686338575c9 100644 --- a/lib/posix/posix_nintendoswitch.nim +++ b/lib/posix/posix_nintendoswitch.nim @@ -123,7 +123,7 @@ type Id* {.importc: "id_t", header: "".} = cuint Ino* {.importc: "ino_t", header: "".} = culong Key* {.importc: "key_t", header: "".} = cint - Mode* {.importc: "mode_t", header: "".} = uint16 + Mode* {.importc: "mode_t", header: "".} = distinct uint16 Nlink* {.importc: "nlink_t", header: "".} = culong Off* {.importc: "off_t", header: "".} = clong Pid* {.importc: "pid_t", header: "".} = cint diff --git a/lib/posix/posix_openbsd_amd64.nim b/lib/posix/posix_openbsd_amd64.nim index 9244ce78ccc2a..eb0a05e002742 100644 --- a/lib/posix/posix_openbsd_amd64.nim +++ b/lib/posix/posix_openbsd_amd64.nim @@ -142,7 +142,7 @@ type Id* {.importc: "id_t", header: "".} = int Ino* {.importc: "ino_t", header: "".} = int Key* {.importc: "key_t", header: "".} = int - Mode* {.importc: "mode_t", header: "".} = uint32 + Mode* {.importc: "mode_t", header: "".} = distinct uint32 Nlink* {.importc: "nlink_t", header: "".} = uint32 Off* {.importc: "off_t", header: "".} = int64 Pid* {.importc: "pid_t", header: "".} = int32 diff --git a/lib/posix/posix_other.nim b/lib/posix/posix_other.nim index 6301216d4c0cb..012eeeddd5e61 100644 --- a/lib/posix/posix_other.nim +++ b/lib/posix/posix_other.nim @@ -157,7 +157,7 @@ type Id* {.importc: "id_t", header: "".} = int Ino* {.importc: "ino_t", header: "".} = int Key* {.importc: "key_t", header: "".} = int - Mode* {.importc: "mode_t", header: "".} = ( + Mode* {.importc: "mode_t", header: "".} = distinct ( when defined(android) or defined(macos) or defined(macosx) or (defined(bsd) and not defined(openbsd) and not defined(netbsd)): uint16 diff --git a/lib/std/private/osdirs.nim b/lib/std/private/osdirs.nim index 5c6aa3e4d9514..e82f548316a7b 100644 --- a/lib/std/private/osdirs.nim +++ b/lib/std/private/osdirs.nim @@ -362,7 +362,7 @@ proc rawCreateDir(dir: string): bool {.noWeirdTarget.} = # This is a thin wrapper over mkDir (or alternatives on other systems), # so in case of a pre-existing path we don't check that it is a directory. when defined(solaris): - let res = mkdir(dir, 0o777) + let res = mkdir(dir, Mode(0o777)) if res == 0'i32: result = true elif errno in {EEXIST, ENOSYS}: @@ -370,7 +370,7 @@ proc rawCreateDir(dir: string): bool {.noWeirdTarget.} = else: raiseOSError(osLastError(), dir) elif defined(haiku): - let res = mkdir(dir, 0o777) + let res = mkdir(dir, Mode(0o777)) if res == 0'i32: result = true elif errno == EEXIST or errno == EROFS: @@ -378,7 +378,7 @@ proc rawCreateDir(dir: string): bool {.noWeirdTarget.} = else: raiseOSError(osLastError(), dir) elif defined(posix): - let res = mkdir(dir, 0o777) + let res = mkdir(dir, Mode(0o777)) if res == 0'i32: result = true elif errno == EEXIST: