Continue concatenating files even if we can't open one.
diff --git a/cat.c b/cat.c
index 51f1d27..151ce4e 100644
--- a/cat.c
+++ b/cat.c
@@ -26,20 +26,21 @@
extern int cat_main(int argc, char **argv)
{
+ int status = EXIT_SUCCESS;
+
if (argc == 1) {
print_file(stdin);
- exit(TRUE);
+ return status;
}
while (--argc > 0) {
if(!(strcmp(*++argv, "-"))) {
print_file(stdin);
} else if (print_file_by_name(*argv) == FALSE) {
- perror(*argv);
- exit(FALSE);
+ status = EXIT_FAILURE;
}
}
- return(TRUE);
+ return status;
}
/*
diff --git a/coreutils/cat.c b/coreutils/cat.c
index 51f1d27..151ce4e 100644
--- a/coreutils/cat.c
+++ b/coreutils/cat.c
@@ -26,20 +26,21 @@
extern int cat_main(int argc, char **argv)
{
+ int status = EXIT_SUCCESS;
+
if (argc == 1) {
print_file(stdin);
- exit(TRUE);
+ return status;
}
while (--argc > 0) {
if(!(strcmp(*++argv, "-"))) {
print_file(stdin);
} else if (print_file_by_name(*argv) == FALSE) {
- perror(*argv);
- exit(FALSE);
+ status = EXIT_FAILURE;
}
}
- return(TRUE);
+ return status;
}
/*
diff --git a/utility.c b/utility.c
index ae69baf..df2515c 100644
--- a/utility.c
+++ b/utility.c
@@ -1636,12 +1636,13 @@
FILE *file;
file = fopen(filename, "r");
if (file == NULL) {
+ errorMsg("%s: %s\n", filename, strerror(errno));
return FALSE;
}
print_file(file);
return TRUE;
}
-#endif /* BB_CAT || BB_LSMOD */
+#endif /* BB_CAT */
#if defined BB_ECHO || defined BB_TR
char process_escape_sequence(char **ptr)