diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2017-02-08 08:20:38 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-02-08 08:20:38 +0100 |
commit | 41d3660e3a0af7d4d69c41a4fef4c9f0c4ee376b (patch) | |
tree | 19921b940f57382acdb01d03b7f7741c38d399dd | |
parent | 63f28b3650aee952b851875c6c687aaca23855fd (diff) | |
parent | 3680cbaf25a1b25fa14c82be249ef0eca235f0de (diff) | |
download | Nim-41d3660e3a0af7d4d69c41a4fef4c9f0c4ee376b.tar.gz |
Merge pull request #5348 from c-blake/devel
Update Stat to work with modern Unix impls
-rw-r--r-- | lib/posix/posix.nim | 31 |
1 files changed, 24 insertions, 7 deletions
diff --git a/lib/posix/posix.nim b/lib/posix/posix.nim index 716f625e7..a08da2dfa 100644 --- a/lib/posix/posix.nim +++ b/lib/posix/posix.nim @@ -101,6 +101,11 @@ type {.deprecated: [TSocketHandle: SocketHandle].} type + Timespec* {.importc: "struct timespec", + header: "<time.h>", final, pure.} = object ## struct timespec + tv_sec*: Time ## Seconds. + tv_nsec*: int ## Nanoseconds. + Dirent* {.importc: "struct dirent", header: "<dirent.h>", final, pure.} = object ## dirent_t struct d_ino*: Ino ## File serial number. @@ -270,9 +275,14 @@ type ## For a typed memory object, the length in bytes. ## For other file types, the use of this field is ## unspecified. - st_atime*: Time ## Time of last access. - st_mtime*: Time ## Time of last data modification. - st_ctime*: Time ## Time of last status change. + when defined(macosx): + st_atime*: Time ## Time of last access. + st_mtime*: Time ## Time of last data modification. + st_ctime*: Time ## Time of last status change. + else: + st_atim*: Timespec ## Time of last access. + st_mtim*: Timespec ## Time of last data modification. + st_ctim*: Timespec ## Time of last status change. st_blksize*: Blksize ## A file system-specific preferred I/O block size ## for this object. In some file system types, this ## may vary from file to file. @@ -311,10 +321,6 @@ type tm_wday*: cint ## Day of week [0,6] (Sunday =0). tm_yday*: cint ## Day of year [0,365]. tm_isdst*: cint ## Daylight Savings flag. - Timespec* {.importc: "struct timespec", - header: "<time.h>", final, pure.} = object ## struct timespec - tv_sec*: Time ## Seconds. - tv_nsec*: int ## Nanoseconds. Itimerspec* {.importc: "struct itimerspec", header: "<time.h>", final, pure.} = object ## struct itimerspec it_interval*: Timespec ## Timer period. @@ -1609,6 +1615,17 @@ var MSG_OOB* {.importc, header: "<sys/socket.h>".}: cint ## Out-of-band data. +when not defined(macosx): + proc st_atime*(s: Stat): Time {.inline.} = + ## Second-granularity time of last access + result = s.st_atim.tv_sec + proc st_mtime*(s: Stat): Time {.inline.} = + ## Second-granularity time of last data modification. + result = s.st_mtim.tv_sec + proc st_ctime*(s: Stat): Time {.inline.} = + ## Second-granularity time of last status change. + result = s.st_ctim.tv_sec + proc WIFCONTINUED*(s:cint) : bool {.importc, header: "<sys/wait.h>".} ## True if child has been continued. proc WIFEXITED*(s:cint) : bool {.importc, header: "<sys/wait.h>".} |