]> sourceware.org Git - glibc.git/blame - libio/oldstdfiles.c
hurd: Add missing va_end call in fcntl implementation. [BZ #32234]
[glibc.git] / libio / oldstdfiles.c
CommitLineData
dff8da6b 1/* Copyright (C) 1993-2024 Free Software Foundation, Inc.
41bdb6e2 2 This file is part of the GNU C Library.
1ea89a40 3
41bdb6e2
AJ
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
1ea89a40 8
41bdb6e2
AJ
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
1ea89a40 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
41bdb6e2 12 Lesser General Public License for more details.
1ea89a40 13
41bdb6e2 14 You should have received a copy of the GNU Lesser General Public
59ba27a6 15 License along with the GNU C Library; if not, see
5a82c748 16 <https://www.gnu.org/licenses/>.
1ea89a40 17
41bdb6e2
AJ
18 As a special exception, if you link the code in this file with
19 files compiled with a GNU compiler to produce an executable,
20 that does not cause the resulting executable to be covered by
21 the GNU Lesser General Public License. This exception does not
22 however invalidate any other reasons why the executable file
23 might be covered by the GNU Lesser General Public License.
24 This exception applies to code released by its copyright holders
25 in files containing the exception. */
1ea89a40 26
16710d58
RM
27#include <shlib-compat.h>
28#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)
1ea89a40 29
a5406364
FW
30/* This file provides legacy definitions of _IO_stdin_, _IO_stdout_,
31 and _IO_stderr_. See stdfiles.c for the current definitions. */
1ea89a40 32
bd355af0 33#define _IO_USE_OLD_IO_FILE
1ea89a40
UD
34#include "libioP.h"
35
36#ifdef _IO_MTSAFE_IO
bd355af0 37#define DEF_STDFILE(NAME, FD, CHAIN, FLAGS) \
1ea89a40 38 static _IO_lock_t _IO_stdfile_##FD##_lock = _IO_lock_initializer; \
bd355af0 39 struct _IO_FILE_plus NAME \
d64b6ad0 40 = {FILEBUF_LITERAL(CHAIN, FLAGS, FD, NULL), &_IO_old_file_jumps};
1ea89a40 41#else
bd355af0
UD
42#define DEF_STDFILE(NAME, FD, CHAIN, FLAGS) \
43 struct _IO_FILE_plus NAME \
d64b6ad0 44 = {FILEBUF_LITERAL(CHAIN, FLAGS, FD, NULL), &_IO_old_file_jumps};
1ea89a40
UD
45#endif
46
bd355af0 47DEF_STDFILE(_IO_stdin_, 0, 0, _IO_NO_WRITES);
2ca8b1ee
GM
48DEF_STDFILE(_IO_stdout_, 1, &_IO_stdin_, _IO_NO_READS);
49DEF_STDFILE(_IO_stderr_, 2, &_IO_stdout_, _IO_NO_READS+_IO_UNBUFFERED);
1ea89a40 50
85472c20
L
51compat_symbol (libc, _IO_stdin_, _IO_stdin_, GLIBC_2_0);
52compat_symbol (libc, _IO_stdout_, _IO_stdout_, GLIBC_2_0);
53compat_symbol (libc, _IO_stderr_, _IO_stderr_, GLIBC_2_0);
54
6973fc01
UD
55#if defined __GNUC__ && __GNUC__ >= 2
56
57#include <stdio.h>
58
9c4c0024 59extern const int _IO_stdin_used;
6973fc01
UD
60weak_extern (_IO_stdin_used);
61
62#undef stdin
63#undef stdout
64#undef stderr
65
66extern FILE *stdin;
67extern FILE *stdout;
68extern FILE *stderr;
69
79937577 70static void _IO_check_libio (void) __THROW __attribute__ ((constructor));
6973fc01
UD
71
72/* This function determines which shared C library the application
73 was linked against. We then set up the stdin/stdout/stderr and
74 _IO_list_all accordingly. */
75
76static void
60d2f8f3 77_IO_check_libio (void)
6973fc01
UD
78{
79 if (&_IO_stdin_used == NULL)
80 {
81 /* We are using the old one. */
a5406364
FW
82 stdin = (FILE *) &_IO_stdin_;
83 stdout = (FILE *) &_IO_stdout_;
84 stderr = (FILE *) &_IO_stderr_;
d18ea0c5 85 _IO_list_all = &_IO_stderr_;
a5406364
FW
86 stdin->_vtable_offset = stdout->_vtable_offset
87 = stderr->_vtable_offset =
bd355af0
UD
88 ((int) sizeof (struct _IO_FILE)
89 - (int) sizeof (struct _IO_FILE_complete));
cb61630e
FW
90
91 if (_IO_stdin_.vtable != &_IO_old_file_jumps
92 || _IO_stdout_.vtable != &_IO_old_file_jumps
93 || _IO_stderr_.vtable != &_IO_old_file_jumps)
94 IO_set_accept_foreign_vtables (&_IO_vtable_check);
6973fc01
UD
95 }
96}
97
f2ea0f5b 98#endif
16710d58
RM
99
100#endif
This page took 0.721317 seconds and 6 git commands to generate.