+/* vi: set sw=4 ts=4: */
/*
* Mini Cat implementation for busybox
*
- * Copyright (C) 1998 by Erik Andersen <andersee@debian.org>
+ * Copyright (C) 1999 by Lineo, inc.
+ * Written by Erik Andersen <andersen@lineo.com>, <andersee@debian.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
#include "internal.h"
#include <stdio.h>
-const char cat_usage[] = "[file ...]";
-extern int cat_more_main(int argc, char **argv)
+static void print_file(FILE * file)
{
- int c;
- FILE *file = stdin;
-
- if ( (argc < 2) || (**(argv+1) == '-') ) {
- fprintf(stderr, "Usage: %s %s", *argv, cat_usage);
- exit(FALSE);
- }
- argc--;
- argv++;
-
- while (argc-- > 0) {
- file = fopen(*argv, "r");
- if (file == NULL) {
- perror(*argv);
- exit(FALSE);
- }
+ int c;
+
while ((c = getc(file)) != EOF)
- putc(c, stdout);
+ 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);
+ }
+
+ if (**(argv + 1) == '-') {
+ usage("cat [file ...]\n");
+ }
argc--;
- argv++;
- }
- exit(TRUE);
+
+ while (argc-- > 0 && *(argv++) != '\0' && strlen(*argv)) {
+ file = fopen(*argv, "r");
+ if (file == NULL) {
+ perror(*argv);
+ exit(FALSE);
+ }
+ print_file(file);
+ }
+ exit(TRUE);
}