aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Landley <rob@landley.net>2008-08-15 14:16:53 -0500
committerRob Landley <rob@landley.net>2008-08-15 14:16:53 -0500
commit24396bbf78d03dee1e695d8b32bea48805c89a1b (patch)
treeef87842032af40d849b66c78185767e03aa1fdbf
parent5a9c37f5e9dde147270974d796b5c6c742fb2804 (diff)
downloadtoybox-24396bbf78d03dee1e695d8b32bea48805c89a1b.tar.gz
An error from an input file isn't fatal, keep reading remaining input files.
-rw-r--r--toys/cat.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/toys/cat.c b/toys/cat.c
index 80f3ee49..81bfcafd 100644
--- a/toys/cat.c
+++ b/toys/cat.c
@@ -1,6 +1,6 @@
/* vi: set sw=4 ts=4:
*
- * hello.c - A hello world program.
+ * cat.c - copy inputs to stdout.
*
* Copyright 2006 Rob Landley <rob@landley.net>
*
@@ -14,6 +14,7 @@ config CAT
help
usage: cat [-u] [file...]
Copy (concatenate) files to stdout. If no files listed, copy from stdin.
+ Filename "-" is a synonym for stdin.
-u Copy one byte at a time (slow).
*/
@@ -25,8 +26,11 @@ static void do_cat(int fd, char *name)
int len, size=toys.optflags ? 1 : sizeof(toybuf);
for (;;) {
- len = xread(fd, toybuf, size);
- if (len<0) toys.exitval = EXIT_FAILURE;
+ len = read(fd, toybuf, size);
+ if (len<0) {
+ perror_msg("%s",name);
+ toys.exitval = EXIT_FAILURE;
+ }
if (len<1) break;
xwrite(1, toybuf, len);
}