diff options
Diffstat (limited to 'os/src/fstat.c')
-rw-r--r-- | os/src/fstat.c | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/os/src/fstat.c b/os/src/fstat.c index a756206..b10194c 100644 --- a/os/src/fstat.c +++ b/os/src/fstat.c @@ -1,8 +1,25 @@ #include <reent.h> #include <sys/stat.h> -#include "osdebug.h" +#include <string.h> +#include <errno.h> +#include "fio.h" + +int _fstat_r(struct _reent * reent, int fd, struct stat * buf) { + off_t c; + memset(buf, 0, sizeof(struct stat)); + + if (!fio_is_open(fd)) { + reent->_errno = EBADF; + return -1; + } + + buf->st_mode = S_IFCHR; + buf->st_blksize = 1024; + c = fio_seek(fd, 0, SEEK_CUR); + if (c >= 0) { + buf->st_size = fio_seek(fd, 0, SEEK_END); + fio_seek(fd, c, SEEK_SET); + } -int _fstat_r(struct _reent * ptr, int fildes, struct stat * buf) { - DBGOUT("_fstat_r(%p, %d, %p)\r\n", ptr, fildes, buf); return 0; } |