Make device and file ID's public.

Added the isHidden() proc
This commit is contained in:
Clay Sweetser 2014-08-06 20:42:43 -04:00
commit c4ac8edce9

View file

@ -1860,12 +1860,12 @@ proc expandTilde*(path: string): string =
when defined(Windows): when defined(Windows):
type type
DeviceId = int32 DeviceId* = int32
FileId = int64 FileId* = int64
else: else:
type type
DeviceId = TDev DeviceId* = TDev
FileId = TIno FileId* = TIno
type type
FileInfo* = object FileInfo* = object
@ -1908,6 +1908,7 @@ template rawToFormalFileInfo(rawInfo, formalInfo): expr =
if (rawInfo.dwFileAttributes and FILE_ATTRIBUTE_REPARSE_POINT) != 0'i32: if (rawInfo.dwFileAttributes and FILE_ATTRIBUTE_REPARSE_POINT) != 0'i32:
formalInfo.kind = succ(result.kind) formalInfo.kind = succ(result.kind)
else: else:
template checkAndIncludeMode(rawMode, formalMode: expr) = template checkAndIncludeMode(rawMode, formalMode: expr) =
if (rawInfo.st_mode and rawMode) != 0'i32: if (rawInfo.st_mode and rawMode) != 0'i32:
@ -1994,4 +1995,21 @@ proc getFileInfo*(path: string, followSymlink = true): FileInfo =
osError(osLastError()) osError(osLastError())
rawToFormalFileInfo(rawInfo, result) 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.} {.pop.}