Allow reading the checksum list from stdin if no file is given with -c.
This allows verifying the checksums e.g. after downloading a NetBSD release: cat BSDSUM CKSUM MD5 SHA512 SYSVSUM | cksum -c
This commit is contained in:
parent
14a07a0706
commit
0b4add3077
@ -1,4 +1,4 @@
|
||||
.\" $NetBSD: cksum.1,v 1.35 2006/04/23 17:45:04 wiz Exp $
|
||||
.\" $NetBSD: cksum.1,v 1.36 2006/04/24 21:07:43 hubertf Exp $
|
||||
.\"
|
||||
.\" Copyright (c) 1991, 1993
|
||||
.\" The Regents of the University of California. All rights reserved.
|
||||
@ -49,18 +49,18 @@
|
||||
.Op Fl nw
|
||||
.Oo
|
||||
.Fl a Ar algorithm |
|
||||
.Fl c Ar file |
|
||||
.Fl c |
|
||||
.Op Fl o Ar 1 | Ar 2
|
||||
.Oc
|
||||
.Op Ar
|
||||
.Nm sum
|
||||
.Op Fl w
|
||||
.Op Fl c Ar file
|
||||
.Op Fl c
|
||||
.Op Ar
|
||||
.Nm md2
|
||||
.Op Fl nw
|
||||
.Oo
|
||||
.Fl c Ar file |
|
||||
.Fl c |
|
||||
.Fl p |
|
||||
.Fl t |
|
||||
.Fl x |
|
||||
@ -70,7 +70,7 @@
|
||||
.Nm md4
|
||||
.Op Fl nw
|
||||
.Oo
|
||||
.Fl c Ar file |
|
||||
.Fl c |
|
||||
.Fl p |
|
||||
.Fl t |
|
||||
.Fl x |
|
||||
@ -80,7 +80,7 @@
|
||||
.Nm md5
|
||||
.Op Fl nw
|
||||
.Oo
|
||||
.Fl c Ar file |
|
||||
.Fl c |
|
||||
.Fl p |
|
||||
.Fl t |
|
||||
.Fl x |
|
||||
@ -90,7 +90,7 @@
|
||||
.Nm sha1
|
||||
.Op Fl nw
|
||||
.Oo
|
||||
.Fl c Ar file |
|
||||
.Fl c |
|
||||
.Fl p |
|
||||
.Fl t |
|
||||
.Fl x |
|
||||
@ -100,7 +100,7 @@
|
||||
.Nm rmd160
|
||||
.Op Fl nw
|
||||
.Oo
|
||||
.Fl c Ar file |
|
||||
.Fl c |
|
||||
.Fl p |
|
||||
.Fl t |
|
||||
.Fl x |
|
||||
@ -210,18 +210,19 @@ and
|
||||
.Fl o Ar 2 ,
|
||||
respectively.
|
||||
The default is CRC.
|
||||
.It Fl c Ar file
|
||||
Verify a list of checksums generated by the
|
||||
.Nm
|
||||
program and stored in
|
||||
.Pa file
|
||||
against files on disk.
|
||||
.It Fl c
|
||||
Verify (check) files against a list of checksums.
|
||||
The list is read from a filename given on the command line, or from
|
||||
stdin if no filename is given.
|
||||
E.g. first run
|
||||
.Dl Ic md5 *.tgz \*[Gt] MD5
|
||||
.Dl Ic sha1 *.tgz \*[Gt] SHA1
|
||||
to generate a list of MD5 checksums in
|
||||
.Pa MD5 ,
|
||||
then use the following command to verify them:
|
||||
.Dl Ic md5 -c MD5
|
||||
.Dl Ic cat MD5 SHA1 | cksum -c
|
||||
If an error is found during checksum verification, an error
|
||||
message is printed, and the program returns an error code of 1.
|
||||
.It Fl o
|
||||
Use historic algorithms instead of the (superior) default one.
|
||||
.Pp
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: cksum.c,v 1.34 2006/04/24 19:41:41 hubertf Exp $ */
|
||||
/* $NetBSD: cksum.c,v 1.35 2006/04/24 21:07:43 hubertf Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1991, 1993
|
||||
@ -81,7 +81,7 @@ __COPYRIGHT("@(#) Copyright (c) 1991, 1993\n\
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)cksum.c 8.2 (Berkeley) 4/28/95";
|
||||
#endif
|
||||
__RCSID("$NetBSD: cksum.c,v 1.34 2006/04/24 19:41:41 hubertf Exp $");
|
||||
__RCSID("$NetBSD: cksum.c,v 1.35 2006/04/24 21:07:43 hubertf Exp $");
|
||||
#endif /* not lint */
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
@ -163,15 +163,14 @@ main(int argc, char **argv)
|
||||
int (*cfncn) (int, u_int32_t *, off_t *);
|
||||
void (*pfncn) (char *, u_int32_t, off_t);
|
||||
struct hash *hash;
|
||||
int normal, i, check_warn;
|
||||
char *checkfile;
|
||||
int normal, i, check_warn, do_check;
|
||||
|
||||
cfncn = NULL;
|
||||
pfncn = NULL;
|
||||
dosum = pflag = nohashstdin = 0;
|
||||
normal = 0;
|
||||
checkfile = NULL;
|
||||
check_warn = 0;
|
||||
do_check = 0;
|
||||
|
||||
setlocale(LC_ALL, "");
|
||||
|
||||
@ -199,7 +198,7 @@ main(int argc, char **argv)
|
||||
* are still supported in code to not break anything that might
|
||||
* be using them.
|
||||
*/
|
||||
while ((ch = getopt(argc, argv, "a:c:mno:ps:twx12456")) != -1)
|
||||
while ((ch = getopt(argc, argv, "a:cmno:ps:twx12456")) != -1)
|
||||
switch(ch) {
|
||||
case 'a':
|
||||
if (hash != NULL || dosum) {
|
||||
@ -267,7 +266,7 @@ main(int argc, char **argv)
|
||||
hash = &hashes[HASH_RMD160];
|
||||
break;
|
||||
case 'c':
|
||||
checkfile = optarg;
|
||||
do_check = 1;
|
||||
break;
|
||||
case 'n':
|
||||
normal = 1;
|
||||
@ -322,7 +321,7 @@ main(int argc, char **argv)
|
||||
argc -= optind;
|
||||
argv += optind;
|
||||
|
||||
if (checkfile) {
|
||||
if (do_check) {
|
||||
/*
|
||||
* Verify checksums
|
||||
*/
|
||||
@ -336,10 +335,16 @@ main(int argc, char **argv)
|
||||
|
||||
rval = 0;
|
||||
cnt = badcnt = 0;
|
||||
|
||||
f = fopen(checkfile, "r");
|
||||
|
||||
if (argc == 0) {
|
||||
f = fdopen(STDIN_FILENO, "r");
|
||||
} else {
|
||||
f = fopen(argv[0], "r");
|
||||
}
|
||||
if (f == NULL)
|
||||
err(1, "Cannot read %s", checkfile);
|
||||
err(1, "Cannot read %s",
|
||||
argc>0?argv[0]:"stdin");
|
||||
|
||||
while(fgets(buf, sizeof(buf), f) != NULL) {
|
||||
s=strrchr(buf, '\n');
|
||||
if (s)
|
||||
|
Loading…
Reference in New Issue
Block a user