/* posix */ #include #include #include #include #include #include #include #include /* bsd extensions */ #include #include #include 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; } }