diff options
-rw-r--r-- | sysif.c | 19 | ||||
-rw-r--r-- | txr.1 | 10 |
2 files changed, 14 insertions, 15 deletions
@@ -449,8 +449,7 @@ static val mknod_wrap(val path, val mode, val dev) #endif -#if HAVE_CHMOD - +#if HAVE_CHMOD || HAVE_SYS_STAT static int get_fd(val stream, val self) { val fd_in = if3(integerp(stream), stream, stream_get_prop(stream, fd_k)); @@ -467,6 +466,9 @@ static int get_fd(val stream, val self) return c_int(fd_in, self); } +#endif + +#if HAVE_CHMOD static val chmod_wrap(val target, val mode) { @@ -790,16 +792,9 @@ static int w_lstat(val wpath, struct stat *buf) static int w_fstat(val stream, struct stat *buf) { - val fd = stream_get_prop(stream, fd_k); - - if (fd) { - int res = fstat(c_num(fd), buf); - return res; - } - - uw_throwf(file_error_s, - lit("cannot fstat stream ~s: it has no :fd property"), - stream, nao); + val self = lit("fstat"); + int fd = get_fd(stream, self); + return fstat(fd, buf); } #endif @@ -57697,7 +57697,7 @@ fields take on values of zero. .synb .mets (stat << path ) .mets (lstat << path ) -.mets (fstat << stream ) +.mets (fstat > { stream | << fd }) .syne .desc The @@ -57731,8 +57731,12 @@ The .code fstat function retrieves information about the file system object associated with the open stream -.metn stream . -The stream must be of a kind from which the +.meta stream +or numeric file descriptor +.metn fd . +If a +.meta stream +is specified, that stream must be of a kind from which the .code fileno function can retrieve a file descriptor, otherwise an exception of type .code file-error |