Date: Thu, 23 Nov 2000 01:50:02 -0800 (PST) From: Volker Stolz <stolz@pool.informatik.rwth-aachen.de> To: freebsd-bugs@FreeBSD.org Subject: Re: bin/22071: mtree hangs on fifos Message-ID: <200011230950.BAA55226@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR bin/22071; it has been noted by GNATS.
From: Volker Stolz <stolz@pool.informatik.rwth-aachen.de>
To: freebsd-gnats-submit@FreeBSD.org, lumpy@the.whole.net
Cc:
Subject: Re: bin/22071: mtree hangs on fifos
Date: Thu, 23 Nov 2000 10:45:32 +0100
This is a cryptographically signed message in MIME format.
--------------ms4F3B45C502F866359A77853F
Content-Type: multipart/mixed;
boundary="------------175F523C7E2F02978CE245AD"
This is a multi-part message in MIME format.
--------------175F523C7E2F02978CE245AD
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
This should take care of calculating checksums only for files
and links.
Patch attached.
--
"I came out of it dead broke, without a house, without anything,
except a girlfriend and a knowledge of Unix." "Well, thatīs
something. Normally those two are mutually exclusive."
N. Stephenson, "Cryptonomicon"
--------------175F523C7E2F02978CE245AD
Content-Type: text/plain; charset=iso-8859-1;
name="mtree.diff"
Content-Transfer-Encoding: 8bit
Content-Disposition: inline;
filename="mtree.diff"
diff -cr5 mtree/compare.c mtreevs/compare.c
*** mtree/compare.c Sun Nov 19 14:00:40 2000
--- mtreevs/compare.c Thu Nov 23 10:29:43 2000
***************
*** 194,205 ****
(void)printf("%.24s)\n",
ctime(&p->fts_statp->st_mtimespec.tv_sec));
tab = "\t";
}
if (s->flags & F_CKSUM) {
! if ((fd = open(p->fts_accpath, O_RDONLY, 0)) < 0) {
! LABEL;
(void)printf("%scksum: %s: %s\n",
tab, p->fts_accpath, strerror(errno));
tab = "\t";
} else if (crc(fd, &val, &len)) {
(void)close(fd);
--- 194,210 ----
(void)printf("%.24s)\n",
ctime(&p->fts_statp->st_mtimespec.tv_sec));
tab = "\t";
}
if (s->flags & F_CKSUM) {
! if (canDoCRCs(p->fts_accpath) < 1) {
! LABEL;
! (void)printf("%scksum: %s: wrong filetype for cksum\n",
! tab, p->fts_accpath);
! tab = "\t";
! } else if ((fd = open(p->fts_accpath, O_RDONLY, 0)) < 0) {
! LABEL;
(void)printf("%scksum: %s: %s\n",
tab, p->fts_accpath, strerror(errno));
tab = "\t";
} else if (crc(fd, &val, &len)) {
(void)close(fd);
***************
*** 241,254 ****
--- 246,266 ----
(void)printf(", modified)\n");
else
(void)printf(")\n");
tab = "\t";
}
+
#ifdef MD5
if (s->flags & F_MD5) {
char *new_digest, buf[33];
+ if (canDoCRCs(p->fts_accpath) < 1) {
+ LABEL;
+ (void)printf("%sMD5File: %s: wrong filetype\n",
+ tab, p->fts_accpath);
+ tab = "\t";
+ } else {
new_digest = MD5File(p->fts_accpath, buf);
if (!new_digest) {
LABEL;
printf("%sMD5File: %s: %s\n", tab, p->fts_accpath,
strerror(errno));
***************
*** 257,272 ****
--- 269,291 ----
LABEL;
printf("%sMD5 (%s, %s)\n", tab, s->md5digest,
new_digest);
tab = "\t";
}
+ }
}
#endif /* MD5 */
#ifdef SHA1
if (s->flags & F_SHA1) {
char *new_digest, buf[41];
+ if (canDoCRCs(p->fts_accpath) < 1) {
+ LABEL;
+ (void)printf("%sSHA1_File: %s: wrong filetype\n",
+ tab, p->fts_accpath);
+ tab = "\t";
+ } else {
new_digest = SHA1_File(p->fts_accpath, buf);
if (!new_digest) {
LABEL;
printf("%sSHA1_File: %s: %s\n", tab, p->fts_accpath,
strerror(errno));
***************
*** 275,290 ****
--- 294,316 ----
LABEL;
printf("%sSHA-1 (%s, %s)\n", tab, s->sha1digest,
new_digest);
tab = "\t";
}
+ }
}
#endif /* SHA1 */
#ifdef RMD160
if (s->flags & F_RMD160) {
char *new_digest, buf[41];
+ if (canDoCRCs(p->fts_accpath) < 1) {
+ LABEL;
+ (void)printf("%sRIPEMD160_File: %s: wrong filetype\n",
+ tab, p->fts_accpath);
+ tab = "\t";
+ } else {
new_digest = RIPEMD160_File(p->fts_accpath, buf);
if (!new_digest) {
LABEL;
printf("%sRIPEMD160_File: %s: %s\n", tab,
p->fts_accpath, strerror(errno));
***************
*** 293,311 ****
--- 319,367 ----
LABEL;
printf("%sRIPEMD160 (%s, %s)\n", tab, s->rmd160digest,
new_digest);
tab = "\t";
}
+ }
}
#endif /* RMD160 */
if (s->flags & F_SLINK &&
strcmp(cp = rlink(p->fts_accpath), s->slink)) {
LABEL;
(void)printf("%slink ref (%s, %s)\n", tab, cp, s->slink);
}
return (label);
+ }
+
+ /* Test file for suitable type for checksumming.
+ We donīt want to chksum FIFOs or special devices, wonīt we?
+
+ -1: error calling stat()
+ 1: file is S_IFREG,S_IFLNK
+ 0: otherwise
+ */
+ int canDoCRCs(file)
+ char *file;
+ {
+ struct stat statbuff;
+
+ if (stat(file,&statbuff) < 0) {
+ /*printf("%scanDoCRCs: Canīt stat(): %s!\n",
+ file,strerror(errno)); */
+ return -1;
+ } else {
+ switch (statbuff.st_mode & S_IFMT) {
+ case S_IFREG:
+ return 1;
+ case S_IFLNK:
+ return 1;
+ default:
+ return 0;
+ }
+ /* NOT REACHED */
+ }
}
char *
inotype(type)
u_int type;
--------------175F523C7E2F02978CE245AD--
--------------ms4F3B45C502F866359A77853F
Content-Type: application/x-pkcs7-signature; name="smime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"
Content-Description: S/MIME Cryptographic Signature
MIIFrgYJKoZIhvcNAQcCoIIFnzCCBZsCAQExCzAJBgUrDgMCGgUAMAsGCSqGSIb3DQEHAaCC
A1owggNWMIICv6ADAgECAg8AzXYAAAABaOfwqEl44j8wDQYJKoZIhvcNAQEEBQAwgbwxCzAJ
BgNVBAYTAkRFMRAwDgYDVQQIEwdIYW1idXJnMRAwDgYDVQQHEwdIYW1idXJnMTowOAYDVQQK
EzFUQyBUcnVzdENlbnRlciBmb3IgU2VjdXJpdHkgaW4gRGF0YSBOZXR3b3JrcyBHbWJIMSIw
IAYDVQQLExlUQyBUcnVzdENlbnRlciBDbGFzcyAxIENBMSkwJwYJKoZIhvcNAQkBFhpjZXJ0
aWZpY2F0ZUB0cnVzdGNlbnRlci5kZTAeFw0wMDAxMDcxNDU1MDRaFw0wMTAxMDYxNDU1MDRa
MGoxCzAJBgNVBAYTAkRFMQ8wDQYDVQQHEwZBYWNoZW4xFTATBgNVBAMTDFZvbGtlciBTdG9s
ejEzMDEGCSqGSIb3DQEJARYkc3RvbHpAcG9vbC5pbmZvcm1hdGlrLnJ3dGgtYWFjaGVuLmRl
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC5O96CMrDMsc/MNQG5VvsPMHobWwX+1fa0
9iWQ/QINMqu0Nib1eM6TwnFs+0B8c2riZBEUuHc6G9dZES0Xj8i/gZjf3s3BmWLSl82NOPZ9
eIrSUrHYlY7Caur9v1LWjGrGw4OuYriWQt3hZrn06BwV12hrOUr3tqTLzijPcpaU/wIDAQAB
o4GqMIGnMDMGCWCGSAGG+EIBCAQmFiRodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2d1aWRl
bGluZXMwEQYJYIZIAYb4QgEBBAQDAgWgMF0GCWCGSAGG+EIBAwRQFk5odHRwczovL3d3dy50
cnVzdGNlbnRlci5kZS9jZ2ktYmluL2NoZWNrLXJldi5jZ2kvQ0Q3NjAwMDAwMDAxNjhFN0Yw
QTg0OTc4RTIzRj8wDQYJKoZIhvcNAQEEBQADgYEAjITNTdLSvDoM6k8261ABJPEuXVUTt5Qp
NcuVve0hTogZp6DtD1SjBNXlLb/DPEepFaReIp53dK3agpnWXLLAKpNpZWax48EjuqN3C2VZ
m0NXYeon77f5dZ2GWtLfxEysnyXZucczzW4qv5B6ogXD/FCKHmjlmPctVGPWiG2jnasxggIc
MIICGAIBATCB0DCBvDELMAkGA1UEBhMCREUxEDAOBgNVBAgTB0hhbWJ1cmcxEDAOBgNVBAcT
B0hhbWJ1cmcxOjA4BgNVBAoTMVRDIFRydXN0Q2VudGVyIGZvciBTZWN1cml0eSBpbiBEYXRh
IE5ldHdvcmtzIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVyIENsYXNzIDEgQ0ExKTAn
BgkqhkiG9w0BCQEWGmNlcnRpZmljYXRlQHRydXN0Y2VudGVyLmRlAg8AzXYAAAABaOfwqEl4
4j8wCQYFKw4DAhoFAKCBojAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJ
BTEPFw0wMDExMjMwOTQ1MzJaMCMGCSqGSIb3DQEJBDEWBBSwdnxrp1Ryf5m9FXHJICDRiBrN
cTBDBgkqhkiG9w0BCQ8xNjA0MAoGCCqGSIb3DQMHMA4GCCqGSIb3DQMCAgIAgDAHBgUrDgMC
BzANBggqhkiG9w0DAgIBQDANBgkqhkiG9w0BAQEFAASBgBM3qsDcTsb0n3Aeko+mF9uSjuQT
PTukFd9mTrG1N00HHRQ6udKESVKxl3I8q1n4owi2PIVl0Tuae3Q6cU/uKV78McqOPkXUcX0w
+2J3jIhOpZACOPjpRqtYoi3yvQWHZE2U72kN7iaKn4VufyA4aZUGZTRv5XGze4shDzmbOA7M
--------------ms4F3B45C502F866359A77853F--
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200011230950.BAA55226>
