summaryrefslogtreecommitdiff
path: root/os/src/fstat.c
blob: a7c251fcbfbc9af97967b5b07dbf3d2434bb573f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <reent.h>
#include <sys/stat.h>
#include <string.h>
#include <errno.h>
#include "fio.h"
#include "osdebug.h"

int _fstat_r(struct _reent * reent, int fd, struct stat * buf) {
    off_t c;
//    DBGOUT("_fstat_r(%p, %i, %p)\r\n", reent, fd, buf);
    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);
    }

    return 0;
}