]> sourceware.org Git - glibc.git/blame - libio/iofopen.c
Update.
[glibc.git] / libio / iofopen.c
CommitLineData
40a55d20
UD
1/* Copyright (C) 1993, 1997 Free Software Foundation, Inc.
2 This file is part of the GNU IO Library.
3
4 This library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU General Public License as
6 published by the Free Software Foundation; either version 2, or (at
7 your option) any later version.
8
9 This library is distributed in the hope that it will be useful, but
10 WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 General Public License for more details.
13
14 You should have received a copy of the GNU General Public License
15 along with this library; see the file COPYING. If not, write to
16 the Free Software Foundation, 59 Temple Place - Suite 330, Boston,
17 MA 02111-1307, USA.
18
19 As a special exception, if you link this library with files
20 compiled with a GNU compiler to produce an executable, this does
21 not cause the resulting executable to be covered by the GNU General
22 Public License. This exception does not however invalidate any
23 other reasons why the executable file might be covered by the GNU
24 General Public License. */
96aa2d94
RM
25
26#include "libioP.h"
27#ifdef __STDC__
28#include <stdlib.h>
29#endif
30
31_IO_FILE *
1ea89a40 32_IO_new_fopen (filename, mode)
96aa2d94
RM
33 const char *filename;
34 const char *mode;
35{
edf5b2d7
UD
36 struct locked_FILE
37 {
1ea89a40 38 struct _IO_FILE_complete fp;
499e7464 39#ifdef _IO_MTSAFE_IO
edf5b2d7 40 _IO_lock_t lock;
499e7464 41#endif
edf5b2d7
UD
42 } *new_f = (struct locked_FILE *) malloc (sizeof (struct locked_FILE));
43
44 if (new_f == NULL)
96aa2d94 45 return NULL;
499e7464 46#ifdef _IO_MTSAFE_IO
1ea89a40 47 new_f->fp.plus.file._lock = &new_f->lock;
499e7464 48#endif
1ea89a40
UD
49 _IO_init (&new_f->fp.plus.file, 0);
50 _IO_JUMPS (&new_f->fp.plus.file) = &_IO_file_jumps;
51 _IO_file_init (&new_f->fp.plus.file);
96aa2d94 52#if !_IO_UNIFIED_JUMPTABLES
1ea89a40 53 new_f->fp.plus.vtable = NULL;
96aa2d94 54#endif
1ea89a40
UD
55 if (_IO_file_fopen (&new_f->fp.plus.file, filename, mode, 0) != NULL)
56 return (_IO_FILE *) &new_f->fp.plus;
57 _IO_un_link (&new_f->fp.plus.file);
edf5b2d7 58 free (new_f);
96aa2d94
RM
59 return NULL;
60}
61
1ea89a40
UD
62#ifdef DO_VERSIONING
63strong_alias (_IO_new_fopen, __new_fopen)
f2ea0f5b
UD
64default_symbol_version (_IO_new_fopen, _IO_fopen, GLIBC_2.1);
65default_symbol_version (__new_fopen, fopen, GLIBC_2.1);
1ea89a40
UD
66#else
67# ifdef weak_alias
68weak_symbol (_IO_new_fopen, _IO_fopen)
69weak_symbol (_IO_new_fopen, fopen)
70# endif
ca34d7a7 71#endif
This page took 0.053326 seconds and 5 git commands to generate.