Subversion Repositories planix.SVN

Rev

Rev 2 | Blame | Compare with Previous | Last modification | View Log | RSS feed

/* posix */
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <fcntl.h>
#include <sys/stat.h>

/* bsd extensions */
#include <sys/uio.h>
#include <sys/socket.h>
#include <sys/ioctl.h>

int
ioctl(int fd, unsigned long request, void* arg)
{
        struct stat d;

        if(request == FIONREAD) {
                if(fstat(fd, &d) < 0) {
                        errno = EBADF;
                        return -1;
                }
                /* this works if the file is buffered somehow */
                *(long*)arg = d.st_size;
                return 0;
        } else {
                errno = EINVAL;
                return -1;
        }
}