diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2020-07-20 07:18:08 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2020-07-20 07:18:08 -0700 |
commit | 9c2fcf3aeae6cd112a1e5b5e8374a03cf5217c9b (patch) | |
tree | ccadbcbe54c724271f5dd61c58983d5fe9b08f5d | |
parent | d9afdbb32c0dd0b693e01b4204176d333805571b (diff) | |
download | txr-9c2fcf3aeae6cd112a1e5b5e8374a03cf5217c9b.tar.gz txr-9c2fcf3aeae6cd112a1e5b5e8374a03cf5217c9b.tar.bz2 txr-9c2fcf3aeae6cd112a1e5b5e8374a03cf5217c9b.zip |
distat: bugfix: use lstat.
* sysif.c (dirstat): Call lstat_wrap, rather than stat_wrap.
This function must report about the directory entry itself,
not about what that entry points to if it happens to be a
symlink. The d-type member of the dirent structure
representing a symlink must be set to dt-lnk.
* txr.1: Updated.
-rw-r--r-- | sysif.c | 2 | ||||
-rw-r--r-- | txr.1 | 15 |
2 files changed, 8 insertions, 9 deletions
@@ -2327,7 +2327,7 @@ static val dirstat(val dirent, val dir_path, val stat_opt) val self = lit("dirstat"); val name = slot(dirent, name_s); val path = if3(null_or_missing_p(dir_path), name, path_cat(dir_path, name)); - val stat = stat_wrap(path, stat_opt); + val stat = lstat_wrap(path, stat_opt); val mode = slot(stat, mode_s); if (mode) { @@ -63148,7 +63148,7 @@ when the handle indicates that no more directory entries remain to be traversed. The .code dirstat function invokes -.code stat +.code lstat on the object represented by the .code dirent structure @@ -63158,13 +63158,13 @@ sets the slot of the .meta dirent-struct accordingly, and then returns the value that -.code stat +.code lstat returned. If the .meta struct argument is specified, it is passed to -.codn stat . +.codn lstat . The .meta dir-path @@ -63194,17 +63194,16 @@ using to form the effective path. The -.code stat +.code lstat function is invoked on the effective path, and if it succeeds, then type information is obtained from the resulting -.code stat structure to set the value of the .code type slot of .metn dirent-struct . -The -.code stat -structure is then returned. +The same structure that was returned by +.code lstat +is then returned. .SS* Unix Sockets |