From 34d87c105cdb667b40df6c7c3c953d0c9cd6180a Mon Sep 17 00:00:00 2001 From: def Date: Tue, 24 Feb 2015 23:31:31 +0100 Subject: Fall back to lstat() calls on unsupported filesystems --- lib/pure/os.nim | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'lib/pure') diff --git a/lib/pure/os.nim b/lib/pure/os.nim index 23e01a7d4..f668e756d 100644 --- a/lib/pure/os.nim +++ b/lib/pure/os.nim @@ -1300,13 +1300,17 @@ iterator walkDir*(dir: string): tuple[kind: PathComponent, path: string] {. var s: TStat y = dir / y var k = pcFile + when defined(linux) or defined(macosx): - if x.d_type == DT_DIR: k = pcDir - if x.d_type == DT_LNK: k = succ(k) - else: - if lstat(y, s) < 0'i32: break - if S_ISDIR(s.st_mode): k = pcDir - if S_ISLNK(s.st_mode): k = succ(k) + if x.d_type != DT_UNKNOWN: + if x.d_type == DT_DIR: k = pcDir + if x.d_type == DT_LNK: k = succ(k) + yield (k, y) + continue + + if lstat(y, s) < 0'i32: break + if S_ISDIR(s.st_mode): k = pcDir + if S_ISLNK(s.st_mode): k = succ(k) yield (k, y) discard closedir(d) -- cgit 1.4.1-2-gfad0