diff --git a/tempfile.nim b/tempfile.nim index 3bdb1f0..ba56ce5 100644 --- a/tempfile.nim +++ b/tempfile.nim @@ -59,10 +59,20 @@ proc mkdtemp*(prefix = "tmp", suffix = "", dir = ""): string = for x in 0..MAX_RETRIES: path = mktemp(prefix, suffix, dir) try: - # A bit racy, but better than nothing - if not path.existsDir: - createDir(path) - return path + when declared(existsOrCreateDir): + # Nim 0.15.3 or later + createDir(path.parentDir) + if not existsOrCreateDir(path): + return path + else: + # Nim 0.15.2 or older (for compatibility) + # A bit racy, but better than nothing + if not path.existsDir: + createDir(path) + # Before 0.15.3 `createDir` didn't fail if `path` did + # already exist, but was not a directory. + if path.existsDir: + return path except: discard raise newException(IOError, "Unable to create temporary directory")