aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cat.c16
-rw-r--r--coreutils/cat.c16
-rw-r--r--internal.h2
-rw-r--r--lsmod.c6
-rw-r--r--modutils/lsmod.c6
-rw-r--r--utility.c31
6 files changed, 37 insertions, 40 deletions
diff --git a/cat.c b/cat.c
index c27f07e82..6a9204fe7 100644
--- a/cat.c
+++ b/cat.c
@@ -24,20 +24,8 @@
#include "internal.h"
#include <stdio.h>
-static void print_file(FILE * file)
-{
- int c;
-
- while ((c = getc(file)) != EOF)
- putc(c, stdout);
- fclose(file);
- fflush(stdout);
-}
-
extern int cat_main(int argc, char **argv)
{
- FILE *file;
-
if (argc == 1) {
print_file(stdin);
exit(TRUE);
@@ -47,12 +35,10 @@ extern int cat_main(int argc, char **argv)
usage(cat_usage);
while (--argc > 0) {
- file = fopen(*++argv, "r");
- if (file == NULL) {
+ if (print_file_by_name(*++argv) == FALSE) {
perror(*argv);
exit(FALSE);
}
- print_file(file);
}
return(TRUE);
}
diff --git a/coreutils/cat.c b/coreutils/cat.c
index c27f07e82..6a9204fe7 100644
--- a/coreutils/cat.c
+++ b/coreutils/cat.c
@@ -24,20 +24,8 @@
#include "internal.h"
#include <stdio.h>
-static void print_file(FILE * file)
-{
- int c;
-
- while ((c = getc(file)) != EOF)
- putc(c, stdout);
- fclose(file);
- fflush(stdout);
-}
-
extern int cat_main(int argc, char **argv)
{
- FILE *file;
-
if (argc == 1) {
print_file(stdin);
exit(TRUE);
@@ -47,12 +35,10 @@ extern int cat_main(int argc, char **argv)
usage(cat_usage);
while (--argc > 0) {
- file = fopen(*++argv, "r");
- if (file == NULL) {
+ if (print_file_by_name(*++argv) == FALSE) {
perror(*argv);
exit(FALSE);
}
- print_file(file);
}
return(TRUE);
}
diff --git a/internal.h b/internal.h
index e36c7f396..5cf72d6d3 100644
--- a/internal.h
+++ b/internal.h
@@ -354,6 +354,8 @@ extern long getNum (const char *cp);
extern pid_t* findPidByName( char* pidName);
extern int find_real_root_device_name(char* name);
extern char *get_line_from_file(FILE *file);
+extern void print_file(FILE *file);
+extern int print_file_by_name(char *filename);
extern char process_escape_sequence(char **ptr);
extern char *get_last_path_component(char *path);
extern void xregcomp(regex_t *preg, const char *regex, int cflags);
diff --git a/lsmod.c b/lsmod.c
index d3b1bb79e..6eb9c56b8 100644
--- a/lsmod.c
+++ b/lsmod.c
@@ -28,13 +28,13 @@
extern int lsmod_main(int argc, char **argv)
{
#if defined BB_FEATURE_USE_DEVPS_PATCH
- char *cmd[] = { "cat", "/dev/modules", "\0" };
+ char *filename = "/dev/modules";
#else
#if ! defined BB_FEATURE_USE_PROCFS
#error Sorry, I depend on the /proc filesystem right now.
#endif
- char *cmd[] = { "cat", "/proc/modules", "\0" };
+ char *filename = "/proc/modules";
#endif
- return(cat_main(3, cmd));
+ return(print_file_by_name(filename));
}
diff --git a/modutils/lsmod.c b/modutils/lsmod.c
index d3b1bb79e..6eb9c56b8 100644
--- a/modutils/lsmod.c
+++ b/modutils/lsmod.c
@@ -28,13 +28,13 @@
extern int lsmod_main(int argc, char **argv)
{
#if defined BB_FEATURE_USE_DEVPS_PATCH
- char *cmd[] = { "cat", "/dev/modules", "\0" };
+ char *filename = "/dev/modules";
#else
#if ! defined BB_FEATURE_USE_PROCFS
#error Sorry, I depend on the /proc filesystem right now.
#endif
- char *cmd[] = { "cat", "/proc/modules", "\0" };
+ char *filename = "/proc/modules";
#endif
- return(cat_main(3, cmd));
+ return(print_file_by_name(filename));
}
diff --git a/utility.c b/utility.c
index c682bf05d..5f890c0ea 100644
--- a/utility.c
+++ b/utility.c
@@ -483,7 +483,7 @@ const char *timeString(time_t timeVal)
return buf;
}
-#endif /* BB_TAR */
+#endif /* BB_TAR || BB_AR */
#if defined BB_TAR || defined BB_CP_MV || defined BB_AR
/*
@@ -511,10 +511,10 @@ int fullWrite(int fd, const char *buf, int len)
return total;
}
-#endif /* BB_TAR || BB_CP_MV */
+#endif /* BB_TAR || BB_CP_MV || BB_AR */
-#if defined BB_TAR || defined BB_TAIL || defined BB_AR
+#if defined BB_TAR || defined BB_TAIL || defined BB_AR || defined BB_SH
/*
* Read all of the supplied buffer from a file.
* This does multiple reads as necessary.
@@ -544,7 +544,7 @@ int fullRead(int fd, char *buf, int len)
return total;
}
-#endif /* BB_TAR || BB_TAIL */
+#endif /* BB_TAR || BB_TAIL || BB_AR || BB_SH */
#if defined (BB_CHMOD_CHOWN_CHGRP) \
@@ -1667,6 +1667,29 @@ extern char *get_line_from_file(FILE *file)
return linebuf;
}
+#if defined BB_CAT || defined BB_LSMOD
+extern void print_file(FILE *file)
+{
+ int c;
+
+ while ((c = getc(file)) != EOF)
+ putc(c, stdout);
+ fclose(file);
+ fflush(stdout);
+}
+
+extern int print_file_by_name(char *filename)
+{
+ FILE *file;
+ file = fopen(filename, "r");
+ if (file == NULL) {
+ return FALSE;
+ }
+ print_file(file);
+ return TRUE;
+}
+#endif /* BB_CAT || BB_LSMOD */
+
#if defined BB_ECHO || defined BB_TR
char process_escape_sequence(char **ptr)
{