diff options
author | Mikael Djurfeldt <djurfeldt@nada.kth.se> | 1997-03-04 18:54:52 +0000 |
---|---|---|
committer | Mikael Djurfeldt <djurfeldt@nada.kth.se> | 1997-03-04 18:54:52 +0000 |
commit | c0ebd8c5a8443e41cba8ce0b3f5897b3c2e1f346 (patch) | |
tree | 1805f22fdca764140c532fed5ebeb78f1008368d /libguile/filesys.c | |
parent | 2c4bd736ca7ef94bd578e1a2e53260682721fbbc (diff) | |
download | guile-c0ebd8c5a8443e41cba8ce0b3f5897b3c2e1f346.tar.gz |
* filesys.c (scm_stat): stat now takes fport arguments too as
documented in the manual.
Diffstat (limited to 'libguile/filesys.c')
-rw-r--r-- | libguile/filesys.c | 31 |
1 files changed, 16 insertions, 15 deletions
diff --git a/libguile/filesys.c b/libguile/filesys.c index 88a1e3aea..297e341ed 100644 --- a/libguile/filesys.c +++ b/libguile/filesys.c @@ -361,28 +361,29 @@ scm_stat2scm (stat_temp) SCM_PROC (s_stat, "stat", 1, 0, 0, scm_stat); SCM -scm_stat (fd_or_path) - SCM fd_or_path; +scm_stat (file) + SCM file; { int rv = 1; struct stat stat_temp; - if (SCM_INUMP (fd_or_path)) - { - rv = SCM_INUM (fd_or_path); - SCM_SYSCALL (rv = fstat (rv, &stat_temp)); - } + if (SCM_INUMP (file)) + SCM_SYSCALL (rv = fstat (SCM_INUM (file), &stat_temp)); else { - SCM_ASSERT (SCM_NIMP (fd_or_path), fd_or_path, SCM_ARG1, s_stat); - SCM_ASSERT (SCM_ROSTRINGP (fd_or_path), fd_or_path, SCM_ARG1, s_stat); - if (SCM_ROSTRINGP (fd_or_path)) + SCM_ASSERT (SCM_NIMP (file), file, SCM_ARG1, s_stat); + if (SCM_FPORTP (file)) + SCM_SYSCALL (rv = fstat (fileno ((FILE *) SCM_STREAM (file)), + &stat_temp)); + else { - if (SCM_SUBSTRP (fd_or_path)) - fd_or_path = scm_makfromstr (SCM_ROCHARS (fd_or_path), SCM_ROLENGTH (fd_or_path), 0); - SCM_SYSCALL (rv = stat (SCM_CHARS (fd_or_path), &stat_temp)); + SCM_ASSERT (SCM_ROSTRINGP (file), file, SCM_ARG1, s_stat); + if (SCM_SUBSTRP (file)) + file = scm_makfromstr (SCM_ROCHARS (file), + SCM_ROLENGTH (file), + 0); + SCM_SYSCALL (rv = stat (SCM_CHARS (file), &stat_temp)); } - } if (rv != 0) { @@ -390,7 +391,7 @@ scm_stat (fd_or_path) scm_syserror_msg (s_stat, "%s: %S", scm_listify (scm_makfrom0str (strerror (errno)), - fd_or_path, + file, SCM_UNDEFINED), en); } |