mirror of https://gitee.com/Nocallback/glibc.git
Browse Source
* libio/Makefile (routines): Add fwide. * libio/iofwide.c (_IO_fwide): Remove locking. This is done in fwide now. Internal calls to _IO_fwide must do locking themselves or don't need locking. * libio/fwide.c: New file. * elf/dl-load.c (_dl_map_object): Implement handling of DF_1_NODEFLIB.cvs/glibc-2-2-branch
4 changed files with 61 additions and 9 deletions
@ -0,0 +1,53 @@ |
|||
/* Copyright (C) 1999, 2000 Free Software Foundation, Inc.
|
|||
This file is part of the GNU IO Library. |
|||
|
|||
This library is free software; you can redistribute it and/or |
|||
modify it under the terms of the GNU General Public License as |
|||
published by the Free Software Foundation; either version 2, or (at |
|||
your option) any later version. |
|||
|
|||
This library is distributed in the hope that it will be useful, but |
|||
WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|||
General Public License for more details. |
|||
|
|||
You should have received a copy of the GNU General Public License |
|||
along with this library; see the file COPYING. If not, write to |
|||
the Free Software Foundation, 59 Temple Place - Suite 330, Boston, |
|||
MA 02111-1307, USA. |
|||
|
|||
As a special exception, if you link this library with files |
|||
compiled with a GNU compiler to produce an executable, this does |
|||
not cause the resulting executable to be covered by the GNU General |
|||
Public License. This exception does not however invalidate any |
|||
other reasons why the executable file might be covered by the GNU |
|||
General Public License. */ |
|||
|
|||
#include <libioP.h> |
|||
#include <stdio.h> |
|||
|
|||
int |
|||
fwide (fp, mode) |
|||
_IO_FILE *fp; |
|||
int mode; |
|||
{ |
|||
int result; |
|||
|
|||
/* Normalize the value. */ |
|||
mode = mode < 0 ? -1 : (mode == 0 ? 0 : 1); |
|||
|
|||
if (mode == 0 || fp->_mode != 0) |
|||
/* The caller simply wants to know about the current orientation
|
|||
or the orientation already has been determined. */ |
|||
return fp->_mode; |
|||
|
|||
_IO_cleanup_region_start ((void (*) __P ((void *))) _IO_funlockfile, fp); |
|||
_IO_flockfile (fp); |
|||
|
|||
result = _IO_fwide (fp, mode); |
|||
|
|||
_IO_funlockfile (fp); |
|||
_IO_cleanup_region_end (0); |
|||
|
|||
return result; |
|||
} |
|||
Loading…
Reference in new issue