diff options
author | Clay Sweetser <clay.sweetser@gmail.com> | 2014-08-06 20:42:43 -0400 |
---|---|---|
committer | Clay Sweetser <clay.sweetser@gmail.com> | 2014-08-06 20:42:43 -0400 |
commit | c4ac8edce9fc04e9898b12f9935850a9469e5340 (patch) | |
tree | 1322931fb933c226891069287564906cbcd129dd /lib | |
parent | 915d3291ab57d59e41877c98dba97d6388c56a35 (diff) | |
download | Nim-c4ac8edce9fc04e9898b12f9935850a9469e5340.tar.gz |
Make device and file ID's public.
Added the isHidden() proc
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pure/os.nim | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/lib/pure/os.nim b/lib/pure/os.nim index a70bfa7f1..37d341787 100644 --- a/lib/pure/os.nim +++ b/lib/pure/os.nim @@ -1860,12 +1860,12 @@ proc expandTilde*(path: string): string = when defined(Windows): type - DeviceId = int32 - FileId = int64 + DeviceId* = int32 + FileId* = int64 else: type - DeviceId = TDev - FileId = TIno + DeviceId* = TDev + FileId* = TIno type FileInfo* = object @@ -1908,6 +1908,7 @@ template rawToFormalFileInfo(rawInfo, formalInfo): expr = if (rawInfo.dwFileAttributes and FILE_ATTRIBUTE_REPARSE_POINT) != 0'i32: formalInfo.kind = succ(result.kind) + else: template checkAndIncludeMode(rawMode, formalMode: expr) = if (rawInfo.st_mode and rawMode) != 0'i32: @@ -1994,4 +1995,21 @@ proc getFileInfo*(path: string, followSymlink = true): FileInfo = osError(osLastError()) rawToFormalFileInfo(rawInfo, result) +proc isHidden*(path: string): bool = + ## Determines whether a given path is hidden or not. Returns false if the + ## file doesn't exist. On Windows, a file is hidden if the file's 'hidden' + ## attribute is set. On Unix-like systems, a file is hidden if it starts + ## with a '.' ." + when defined(Windows): + wrapUnary(attributes, getFileAttributesW, path) + if attributes != -1'i32: + result = (attributes and FILE_ATTRIBUTE_HIDDEN) != 0'i32 + else: + result = false + else: + if fileExists(path): + result = (path[0] == '.') + else: + result = false + {.pop.} |