diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2020-01-27 06:04:25 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2020-01-27 06:04:25 -0800 |
commit | 15e201b0cb4a0b4c0bd7f2e001d9604723fd663d (patch) | |
tree | 53beb18f9e9c1b8f451f1c21e5c508a0cfe798ef | |
parent | cc27788ab64f3826c59f9485be7e2f97d838dfb2 (diff) | |
download | txr-15e201b0cb4a0b4c0bd7f2e001d9604723fd663d.tar.gz txr-15e201b0cb4a0b4c0bd7f2e001d9604723fd663d.tar.bz2 txr-15e201b0cb4a0b4c0bd7f2e001d9604723fd663d.zip |
ensure-dir: return nil when exists.
* sysif.c (mkdir_nothrow_exists): Return nil in the existence
case, when the object is a directory or a symlink to one.
* txr.1: Updated.
-rw-r--r-- | sysif.c | 3 | ||||
-rw-r--r-- | txr.1 | 15 |
2 files changed, 12 insertions, 6 deletions
@@ -339,6 +339,7 @@ static val mkdir_nothrow_exists(val path, val mode) ret = num(errno); break; case EEXIST: + ret = nil; #if HAVE_SYS_STAT { struct stat st; @@ -384,7 +385,7 @@ static val ensure_dir(val path, val mode) partial_path, sep, pop(&split_path), nao); } - if (ret != t) { + if (integerp(ret)) { int eno = c_num(ret); uw_throwf(errno_to_file_error(eno), lit("ensure-dir: ~a: ~d/~s"), path, ret, @@ -57494,13 +57494,18 @@ are subject to the system The function .code ensure-dir -is similar to -.code mkdir -except that it attempts to create all the missing parent directories -as necessary, and does not throw an error if +also creates a directory named +.metn path . +Unlike +.codn mkdir , +it also attempt to create all the necessary parent directories, +and does not throw an error if .meta path refers to an existing object, if that object is a directory or a symbolic -link to a directory. +link to a directory. Rather, in that case it returns +.code nil +instead of +.codn t . .coNP Function @ chdir .synb |