If read were to return with an error, bad things would happen. Fix it.

Also, make sure read errors are reflected in the applet exit code.
This commit is contained in:
Manuel Novoa III 2004-05-26 15:21:19 +00:00
parent a6f6a95ba4
commit d709743b09

View File

@ -38,7 +38,7 @@ int tee_main(int argc, char **argv)
int flags; int flags;
int retval = EXIT_SUCCESS; int retval = EXIT_SUCCESS;
#ifdef CONFIG_FEATURE_TEE_USE_BLOCK_IO #ifdef CONFIG_FEATURE_TEE_USE_BLOCK_IO
size_t c; ssize_t c;
RESERVE_CONFIG_BUFFER(buf, BUFSIZ); RESERVE_CONFIG_BUFFER(buf, BUFSIZ);
#else #else
int c; int c;
@ -78,12 +78,16 @@ int tee_main(int argc, char **argv)
*p = NULL; /* Store the sentinal value. */ *p = NULL; /* Store the sentinal value. */
#ifdef CONFIG_FEATURE_TEE_USE_BLOCK_IO #ifdef CONFIG_FEATURE_TEE_USE_BLOCK_IO
while ((c = read(STDIN_FILENO, buf, BUFSIZ)) != 0) { while ((c = safe_read(STDIN_FILENO, buf, BUFSIZ)) > 0) {
for (p=files ; *p ; p++) { for (p=files ; *p ; p++) {
fwrite(buf, 1, c, *p); fwrite(buf, 1, c, *p);
} }
} }
if (c < 0) { /* Make sure read errors are signaled. */
retval = EXIT_FAILURE;
}
#ifdef CONFIG_FEATURE_CLEAN_UP #ifdef CONFIG_FEATURE_CLEAN_UP
RELEASE_CONFIG_BUFFER(buf); RELEASE_CONFIG_BUFFER(buf);
#endif #endif