diff options
Diffstat (limited to 'newlib/libc/stdio/fdopen.c')
-rw-r--r-- | newlib/libc/stdio/fdopen.c | 56 |
1 files changed, 18 insertions, 38 deletions
diff --git a/newlib/libc/stdio/fdopen.c b/newlib/libc/stdio/fdopen.c index f4fc551c4..bd4018b69 100644 --- a/newlib/libc/stdio/fdopen.c +++ b/newlib/libc/stdio/fdopen.c @@ -1,21 +1,4 @@ /* - * Copyright (c) 1990 The Regents of the University of California. - * All rights reserved. - * - * Redistribution and use in source and binary forms are permitted - * provided that the above copyright notice and this paragraph are - * duplicated in all such forms and that any documentation, - * advertising materials, and other materials related to such - * distribution and use acknowledge that the software was developed - * by the University of California, Berkeley. The name of the - * University may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. - */ - -/* FUNCTION <<fdopen>>---turn open file into a stream @@ -27,9 +10,9 @@ INDEX ANSI_SYNOPSIS #include <stdio.h> FILE *fdopen(int <[fd]>, const char *<[mode]>); - FILE *_fdopen_r(struct _reent *<[reent]>, - int <[fd]>, const char *<[mode]>); - + FILE *_fdopen_r(void *<[reent]>, + int <[fd]>, const char *<[mode]>); + TRAD_SYNOPSIS #include <stdio.h> FILE *fdopen(<[fd]>, <[mode]>) @@ -37,7 +20,7 @@ TRAD_SYNOPSIS char *<[mode]>; FILE *_fdopen_r(<[reent]>, <[fd]>, <[mode]>) - struct _reent *<[reent]>; + char *<[reent]>; int <[fd]>; char *<[mode]>); @@ -54,20 +37,21 @@ PORTABILITY <<fdopen>> is ANSI. */ -#include <_ansi.h> -#include <reent.h> #include <sys/types.h> #include <sys/fcntl.h> + #include <stdio.h> #include <errno.h> #include "local.h" #include <_syslist.h> +extern int __sflags (); + FILE * -_DEFUN(_fdopen_r, (ptr, fd, mode), - struct _reent *ptr _AND - int fd _AND - _CONST char *mode) +_DEFUN (_fdopen_r, (ptr, fd, mode), + struct _reent *ptr _AND + int fd _AND + _CONST char *mode) { register FILE *fp; int flags, oflags; @@ -80,7 +64,7 @@ _DEFUN(_fdopen_r, (ptr, fd, mode), /* make sure the mode the user wants is a subset of the actual mode */ #ifdef HAVE_FCNTL - if ((fdflags = _fcntl_r (ptr, fd, F_GETFL, 0)) < 0) + if ((fdflags = _fcntl (fd, F_GETFL, 0)) < 0) return 0; fdmode = fdflags & O_ACCMODE; if (fdmode != O_RDWR && (fdmode != (oflags & O_ACCMODE))) @@ -92,9 +76,6 @@ _DEFUN(_fdopen_r, (ptr, fd, mode), if ((fp = __sfp (ptr)) == 0) return 0; - - _flockfile (fp); - fp->_flags = flags; /* * If opened for appending, but underlying descriptor @@ -123,23 +104,22 @@ _DEFUN(_fdopen_r, (ptr, fd, mode), #ifdef __SCLE /* Explicit given mode results in explicit setting mode on fd */ if (oflags & O_BINARY) - setmode (fp->_file, O_BINARY); + setmode(fp->_file, O_BINARY); else if (oflags & O_TEXT) - setmode (fp->_file, O_TEXT); - if (__stextmode (fp->_file)) + setmode(fp->_file, O_TEXT); + if (__stextmode(fp->_file)) fp->_flags |= __SCLE; #endif - _funlockfile (fp); return fp; } #ifndef _REENT_ONLY FILE * -_DEFUN(fdopen, (fd, mode), - int fd _AND - _CONST char *mode) +_DEFUN (fdopen, (fd, mode), + int fd _AND + _CONST char *mode) { return _fdopen_r (_REENT, fd, mode); } |