diff options
-rw-r--r-- | cat.c | 16 | ||||
-rw-r--r-- | coreutils/cat.c | 16 | ||||
-rw-r--r-- | internal.h | 2 | ||||
-rw-r--r-- | lsmod.c | 6 | ||||
-rw-r--r-- | modutils/lsmod.c | 6 | ||||
-rw-r--r-- | utility.c | 31 |
6 files changed, 37 insertions, 40 deletions
@@ -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); @@ -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)); } @@ -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) { |