Skip site navigation (1)Skip section navigation (2)
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>