ghash.h: Fix GH_HASHSTR64*.
[u/mdw/catacomb] / hashsum.c
index c9bb3ec..9721410 100644 (file)
--- a/hashsum.c
+++ b/hashsum.c
@@ -7,7 +7,7 @@
  * (c) 2000 Straylight/Edgeware
  */
 
-/*----- Licensing notice --------------------------------------------------* 
+/*----- Licensing notice --------------------------------------------------*
  *
  * This file is part of Catacomb.
  *
  * it under the terms of the GNU Library General Public License as
  * published by the Free Software Foundation; either version 2 of the
  * License, or (at your option) any later version.
- * 
+ *
  * Catacomb is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU Library General Public License for more details.
- * 
+ *
  * You should have received a copy of the GNU Library General Public
  * License along with Catacomb; if not, write to the Free
  * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
@@ -94,7 +94,7 @@ static size_t gethex(const char *p, octet *q, size_t sz, char **pp)
   }
   if (pp)
     *pp = (char *)p;
-  return (i); 
+  return (i);
 }
 
 /* --- Base64 encoding --- */
@@ -211,7 +211,7 @@ static int fhash(const char *file, unsigned f, const gchash *gch, void *buf)
   ghash *h;
   int e;
 
-  if (!file)
+  if (!file || strcmp(file, "-") == 0)
     fp = stdin;
   else if ((fp = fopen(file, f & f_binary ? "rb" : "r")) == 0)
     return (-1);
@@ -441,7 +441,7 @@ static int checkhash(const char *file, unsigned f,
   unsigned long n = 0, nfail = 0;
   octet *buf = xmalloc(2 * gch->hashsz);
 
-  if (!file)
+  if (!file || strcmp(file, "-") == 0)
     fp = stdin;
   else if ((fp = fopen(file, f & f_raw ? "r" : "rb")) == 0) {
     moan("couldn't open `%s': %s", file, strerror(errno));
@@ -571,7 +571,7 @@ static int hashfiles(const char *file, unsigned f,
   int rc = 0;
   int rrc;
 
-  if (!file)
+  if (!file || strcmp(file, "-") == 0)
     fp = stdin;
   else if ((fp = fopen(file, f & f_raw ? "r" : "rb")) == 0) {
     moan("couldn't open `%s': %s", file, strerror(errno));
@@ -753,6 +753,11 @@ int main(int argc, char *argv[])
 
   /* --- Generate output --- */
 
+  if (!(f & f_check) && (argc || (f & f_files))) {
+    if (f & f_oddhash) printf("#hash %s\n", gch->name);
+    if (f & f_oddenc) printf("#encoding %s\n", e->name);
+    if (f & f_escape) fputs("#escape\n", stdout);
+  }
   if (!argc)
     rc = hashsum(0, f, gch, e);
   else {
@@ -760,11 +765,6 @@ int main(int argc, char *argv[])
     int rrc;
 
     rc = 0;
-    if (!(f & f_check)) {
-      if (f & f_oddhash) printf("#hash %s\n", gch->name);
-      if (f & f_oddenc) printf("#encoding %s\n", e->name);
-      if (f & f_escape) fputs("#escape\n", stdout);
-    }
     for (i = 0; i < argc; i++) {
       if ((rrc = hashsum(argv[i], f, gch, e)) != 0)
        rc = rrc;