Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/bash/src/lib/sh/input_avail.c |
Source code | Switch to Preprocessed file |
Line | Source | Count | ||||||
---|---|---|---|---|---|---|---|---|
1 | /* input_avail.c -- check whether or not data is available for reading on a | - | ||||||
2 | specified file descriptor. */ | - | ||||||
3 | - | |||||||
4 | /* Copyright (C) 2008,2009 Free Software Foundation, Inc. | - | ||||||
5 | - | |||||||
6 | This file is part of GNU Bash, the Bourne Again SHell. | - | ||||||
7 | - | |||||||
8 | Bash is free software: you can redistribute it and/or modify | - | ||||||
9 | it under the terms of the GNU General Public License as published by | - | ||||||
10 | the Free Software Foundation, either version 3 of the License, or | - | ||||||
11 | (at your option) any later version. | - | ||||||
12 | - | |||||||
13 | Bash is distributed in the hope that it will be useful, | - | ||||||
14 | but WITHOUT ANY WARRANTY; without even the implied warranty of | - | ||||||
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | - | ||||||
16 | GNU General Public License for more details. | - | ||||||
17 | - | |||||||
18 | You should have received a copy of the GNU General Public License | - | ||||||
19 | along with Bash. If not, see <http://www.gnu.org/licenses/>. | - | ||||||
20 | */ | - | ||||||
21 | - | |||||||
22 | #if defined (__TANDEM) | - | ||||||
23 | # include <floss.h> | - | ||||||
24 | #endif | - | ||||||
25 | - | |||||||
26 | #if defined (HAVE_CONFIG_H) | - | ||||||
27 | # include <config.h> | - | ||||||
28 | #endif | - | ||||||
29 | - | |||||||
30 | #include <sys/types.h> | - | ||||||
31 | #include <fcntl.h> | - | ||||||
32 | #if defined (HAVE_SYS_FILE_H) | - | ||||||
33 | # include <sys/file.h> | - | ||||||
34 | #endif /* HAVE_SYS_FILE_H */ | - | ||||||
35 | - | |||||||
36 | #if defined (HAVE_UNISTD_H) | - | ||||||
37 | # include <unistd.h> | - | ||||||
38 | #endif /* HAVE_UNISTD_H */ | - | ||||||
39 | - | |||||||
40 | #include "bashansi.h" | - | ||||||
41 | - | |||||||
42 | #include "posixselect.h" | - | ||||||
43 | - | |||||||
44 | #if defined (FIONREAD_IN_SYS_IOCTL) | - | ||||||
45 | # include <sys/ioctl.h> | - | ||||||
46 | #endif | - | ||||||
47 | - | |||||||
48 | #include <stdio.h> | - | ||||||
49 | #include <errno.h> | - | ||||||
50 | - | |||||||
51 | #if !defined (errno) | - | ||||||
52 | extern int errno; | - | ||||||
53 | #endif /* !errno */ | - | ||||||
54 | - | |||||||
55 | #if !defined (O_NDELAY) && defined (O_NONBLOCK) | - | ||||||
56 | # define O_NDELAY O_NONBLOCK /* Posix style */ | - | ||||||
57 | #endif | - | ||||||
58 | - | |||||||
59 | /* Return >= 1 if select/FIONREAD indicates data available for reading on | - | ||||||
60 | file descriptor FD; 0 if no data available. Return -1 on error. */ | - | ||||||
61 | int | - | ||||||
62 | input_avail (fd) | - | ||||||
63 | int fd; | - | ||||||
64 | { | - | ||||||
65 | int result, chars_avail; | - | ||||||
66 | #if defined(HAVE_SELECT) | - | ||||||
67 | fd_set readfds, exceptfds; | - | ||||||
68 | struct timeval timeout; | - | ||||||
69 | #endif | - | ||||||
70 | - | |||||||
71 | if (fd < 0)
| 0-3 | ||||||
72 | return -1; never executed: return -1; | 0 | ||||||
73 | - | |||||||
74 | chars_avail = 0; | - | ||||||
75 | - | |||||||
76 | #if defined (HAVE_SELECT) | - | ||||||
77 | FD_ZERO (&readfds); | - | ||||||
78 | FD_ZERO (&exceptfds); | - | ||||||
79 | FD_SET (fd, &readfds); | - | ||||||
80 | FD_SET (fd, &exceptfds); | - | ||||||
81 | timeout.tv_sec = 0; | - | ||||||
82 | timeout.tv_usec = 0; | - | ||||||
83 | result = select (fd + 1, &readfds, (fd_set *)NULL, &exceptfds, &timeout); | - | ||||||
84 | return ((result <= 0) ? 0 : 1); executed 3 times by 1 test: return ((result <= 0) ? 0 : 1); Executed by:
| 3 | ||||||
85 | - | |||||||
86 | #endif | - | ||||||
87 | - | |||||||
88 | result = -1; dead code: result = -1; | - | ||||||
89 | #if defined (FIONREAD) | - | ||||||
90 | errno = 0; dead code: (*__errno_location ()) = 0; | - | ||||||
91 | result = ioctl (fd, FIONREAD, &chars_avail); dead code: result = ioctl (fd, 0x541B , &chars_avail); | - | ||||||
92 | if (result == -1 && errno == EIO) dead code: if (result == -1 && (*__errno_location ()) == 5 ) return -1; | - | ||||||
93 | return -1; dead code: if (result == -1 && (*__errno_location ()) == 5 ) return -1; | - | ||||||
94 | return (chars_avail); dead code: return (chars_avail); | - | ||||||
95 | #endif | - | ||||||
96 | - | |||||||
97 | return 0; dead code: return 0; | - | ||||||
98 | } | - | ||||||
Source code | Switch to Preprocessed file |