fdopen.c

来自「操作系统SunOS 4.1.3版本的源码」· C语言 代码 · 共 63 行

C
63 行
字号
#if !defined(lint) && defined(SCCSIDS)static	char sccsid[] = "@(#)fdopen.c 1.1 92/07/30 SMI"; /* from S5R2 1.4 */#endif/*LINTLIBRARY*//* * Unix routine to do an "fopen" on file descriptor * The mode has to be repeated because you can't query its * status */#include <stdio.h>#include <sys/errno.h>extern int  errno;extern long lseek();extern FILE *_findiop();FILE *fdopen(fd, mode)int	fd;register char *mode;{	static int nofile = -1;	register FILE *iop;	if(nofile < 0)		nofile = getdtablesize();	if(fd < 0 || fd >= nofile) {		errno = EINVAL;		return(NULL);	}	if((iop = _findiop()) == NULL)		return(NULL);	iop->_cnt = 0;	iop->_file = fd;	iop->_base = iop->_ptr = NULL;	iop->_bufsiz = 0;	switch(*mode) {		case 'r':			iop->_flag = _IOREAD;			break;		case 'a':			(void) lseek(fd, 0L, 2);			/* No break */		case 'w':			iop->_flag = _IOWRT;			break;		default:			errno = EINVAL;			return(NULL);	}	if(mode[1] == '+')		iop->_flag = _IORW;	return(iop);}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?