42 lines · 974 B · C
RawDownload
/*  * This file is part of the UCB release of Plan 9. It is subject to the license * terms in the LICENSE file found in the top-level directory of this * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No * part of the UCB release of Plan 9, including this file, may be copied, * modified, propagated, or distributed except according to the terms contained * in the LICENSE file. */ /* 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> intioctl(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;	}}