commit 18fb498e981b875dc523dae45ce29f05c676ee9f
Author: FRIGN <[email protected]>
Date:   Mon Mar 2 00:36:51 2015 +0100

    Audit cat(1)
    
    1) Fix usage ... spacing
    2) use *argv instead of argv[0] in the idiomatic for-loop
    3) Stop the naïve usage of "/dev/fd/0" and use plain stdin
       instead (This also makes error-messages more consistent).
    4) Add newline before return
    5) Remove comma in manpage

diff --git a/README b/README
index 95afd82..8f09017 100644
--- a/README
+++ b/README
@@ -11,7 +11,7 @@ The following tools are implemented ('*' == finished, '#' == 
UTF-8 support,
     -------         --------------------         ---------------
 =*| basename        yes                          none
 =*  cal             yes                          none
-=*  cat             yes                          none
+=*| cat             yes                          none
 =*  chgrp           yes                          none
 =*  chmod           yes                          none
 =*  chown           yes                          none
diff --git a/cat.1 b/cat.1
index 60b304c..2332158 100644
--- a/cat.1
+++ b/cat.1
@@ -1,4 +1,4 @@
-.Dd January 16, 2015
+.Dd March 1, 2015
 .Dt CAT 1
 .Os sbase
 .Sh NAME
@@ -14,7 +14,7 @@ reads each
 .Ar file
 in sequence and writes it to stdout. If no
 .Ar file
-is given,
+is given
 .Nm
 reads from stdin.
 .Sh OPTIONS
diff --git a/cat.c b/cat.c
index 77131d1..90eefd5 100644
--- a/cat.c
+++ b/cat.c
@@ -8,7 +8,7 @@
 static void
 usage(void)
 {
-       eprintf("usage: %s [-u] [file...]\n", argv0);
+       eprintf("usage: %s [-u] [file ...]\n", argv0);
 }
 
 int
@@ -28,17 +28,18 @@ main(int argc, char *argv[])
        if (argc == 0) {
                concat(stdin, "<stdin>", stdout, "<stdout>");
        } else {
-               for (; argc; argc--, argv++) {
-                       if (argv[0][0] == '-' && !argv[0][1])
-                               argv[0] = "/dev/fd/0";
-                       if (!(fp = fopen(argv[0], "r"))) {
-                               weprintf("fopen %s:", argv[0]);
+               for (; argc > 0; argc--, argv++) {
+                       if ((*argv)[0] == '-' && !(*argv)[1]) {
+                               concat(stdin, "<stdin>", stdout, "<stdout>");
+                       } else if (!(fp = fopen(*argv, "r"))) {
+                               weprintf("fopen %s:", *argv);
                                ret = 1;
-                               continue;
+                       } else {
+                               concat(fp, *argv, stdout, "<stdout>");
+                               fclose(fp);
                        }
-                       concat(fp, argv[0], stdout, "<stdout>");
-                       fclose(fp);
                }
        }
+
        return ret;
 }

Reply via email to