Line data Source code
1 : /* Test opening a stream with a file descriptor.
2 : Copyright (C) 2011-2020 Free Software Foundation, Inc.
3 :
4 : This program is free software: you can redistribute it and/or modify
5 : it under the terms of the GNU General Public License as published by
6 : the Free Software Foundation; either version 3 of the License, or
7 : (at your option) any later version.
8 :
9 : This program is distributed in the hope that it will be useful,
10 : but WITHOUT ANY WARRANTY; without even the implied warranty of
11 : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 : GNU General Public License for more details.
13 :
14 : You should have received a copy of the GNU General Public License
15 : along with this program. If not, see <https://www.gnu.org/licenses/>. */
16 :
17 : #include <config.h>
18 :
19 : #include <stdio.h>
20 :
21 : #include "signature.h"
22 : SIGNATURE_CHECK (fdopen, FILE *, (int, const char *));
23 :
24 : #include <errno.h>
25 : #include <unistd.h>
26 :
27 : #include "macros.h"
28 :
29 : int
30 1 : main (void)
31 : {
32 : /* Test behavior on failure. POSIX makes it hard to check for
33 : failure, since the behavior is not well-defined on invalid file
34 : descriptors, so try fdopen 1000 times and if that's not enough to
35 : fail due to EMFILE, so be it. */
36 :
37 : int i;
38 1001 : for (i = 0; i < 1000; i++)
39 : {
40 1000 : errno = 0;
41 1000 : if (! fdopen (STDOUT_FILENO, "w"))
42 : {
43 0 : ASSERT (errno != 0);
44 0 : break;
45 : }
46 : }
47 :
48 1 : return 0;
49 : }
|