summary refs log tree commit diff stats
path: root/lib
diff options
context:
space:
mode:
authorClay Sweetser <clay.sweetser@gmail.com>2014-08-06 20:42:43 -0400
committerClay Sweetser <clay.sweetser@gmail.com>2014-08-06 20:42:43 -0400
commitc4ac8edce9fc04e9898b12f9935850a9469e5340 (patch)
tree1322931fb933c226891069287564906cbcd129dd /lib
parent915d3291ab57d59e41877c98dba97d6388c56a35 (diff)
downloadNim-c4ac8edce9fc04e9898b12f9935850a9469e5340.tar.gz
Make device and file ID's public.
Added the isHidden() proc
Diffstat (limited to 'lib')
-rw-r--r--lib/pure/os.nim26
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.}