From owner-freebsd-hackers@FreeBSD.ORG Wed May 12 08:01:47 2010 Return-Path: Delivered-To: hackers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id C4D2C1065677 for ; Wed, 12 May 2010 08:01:47 +0000 (UTC) (envelope-from lists@eitanadler.com) Received: from mail-vw0-f54.google.com (mail-vw0-f54.google.com [209.85.212.54]) by mx1.freebsd.org (Postfix) with ESMTP id 830C28FC18 for ; Wed, 12 May 2010 08:01:47 +0000 (UTC) Received: by vws1 with SMTP id 1so446518vws.13 for ; Wed, 12 May 2010 01:01:46 -0700 (PDT) Received: by 10.220.127.81 with SMTP id f17mr5345214vcs.13.1273651306413; Wed, 12 May 2010 01:01:46 -0700 (PDT) MIME-Version: 1.0 Received: by 10.220.122.31 with HTTP; Wed, 12 May 2010 01:01:26 -0700 (PDT) From: Eitan Adler Date: Wed, 12 May 2010 11:01:26 +0300 Message-ID: To: hackers@freebsd.org Content-Type: multipart/mixed; boundary=0016e68e8ba5afbeff0486610ddd Cc: Subject: adding "check option to md5(1) [was: md5(1) and cal(1) on -questions] X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 12 May 2010 08:01:47 -0000 --0016e68e8ba5afbeff0486610ddd Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable > D> 2. Why doesn't md5(1) have a "check" option? =C2=A0Seems to me requiri= ng a > D> manual inspection is error-prone at best, and makes scripting > D> unecessarily complicated. Would something like the attached patch be good? It adds a -c option for a string to check against. It prints "[failed]" if the string does not match the files md5 unless in -q mode. It also returns 2 to indicate md5 match failure for use in scripts. --0016e68e8ba5afbeff0486610ddd Content-Type: application/octet-stream; name="md5-check.patch" Content-Disposition: attachment; filename="md5-check.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g9345t3k0 SW5kZXg6IG1kNS4xCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIG1kNS4xCShyZXZpc2lvbiAyMDc0MzMpCisrKyBt ZDUuMQkod29ya2luZyBjb3B5KQpAQCAtNzMsNiArNzMsOCBAQAogVGhlIGhleGFkZWNpbWFsIGNo ZWNrc3VtIG9mIGVhY2ggZmlsZSBsaXN0ZWQgb24gdGhlIGNvbW1hbmQgbGluZSBpcyBwcmludGVk CiBhZnRlciB0aGUgb3B0aW9ucyBhcmUgcHJvY2Vzc2VkLgogLkJsIC10YWcgLXdpZHRoIGluZGVu dAorLkl0IEZsIGMgQXIgc3RyaW5nCitDb21wYXJlIGZpbGVzIHRvIHRoaXMgbWQ1IHN0cmluZwog Lkl0IEZsIHMgQXIgc3RyaW5nCiBQcmludCBhIGNoZWNrc3VtIG9mIHRoZSBnaXZlbgogLkFyIHN0 cmluZyAuCkBAIC0xMDEsNyArMTAzLDggQEAKIGFuZAogLk5tIHJtZDE2MAogdXRpbGl0aWVzIGV4 aXQgMCBvbiBzdWNjZXNzLAotYW5kIDEgaWYgYXQgbGVhc3Qgb25lIG9mIHRoZSBpbnB1dCBmaWxl cyBjb3VsZCBub3QgYmUgcmVhZC4KKzEgaWYgYXQgbGVhc3Qgb25lIG9mIHRoZSBpbnB1dCBmaWxl cyBjb3VsZCBub3QgYmUgcmVhZCwKK2FuZCAyIGlmIGF0IGxlYXN0IG9uZSBmaWxlIGRvZXMgbm90 IGhhdmUgdGhlIHNhbWUgaGFzaCBhcyB0aGUgLWMgb3B0aW9uLgogLlNoIFNFRSBBTFNPCiAuWHIg Y2tzdW0gMSAsCiAuWHIgbWQ1IDMgLApJbmRleDogbWQ1LmMKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbWQ1LmMJ KHJldmlzaW9uIDIwNzQzMykKKysrIG1kNS5jCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw4 IEBACiBpbnQgcWZsYWc7CiBpbnQgcmZsYWc7CiBpbnQgc2ZsYWc7Cit1bnNpZ25lZCBjaGFyKiBj aGVja0FnYWluc3Q7CitpbnQJY2hlY2tzRmFpbGVkOwogCiB0eXBlZGVmIHZvaWQgKERJR0VTVF9J bml0KSh2b2lkICopOwogdHlwZWRlZiB2b2lkIChESUdFU1RfVXBkYXRlKSh2b2lkICosIGNvbnN0 IHVuc2lnbmVkIGNoYXIgKiwgc2l6ZV90KTsKQEAgLTEzOCw4ICsxNDAsMTMgQEAKICAJCWRpZ2Vz dCA9IDA7CiAKIAlmYWlsZWQgPSAwOwotCXdoaWxlICgoY2ggPSBnZXRvcHQoYXJnYywgYXJndiwg InBxcnM6dHgiKSkgIT0gLTEpCisJY2hlY2tBZ2FpbnN0ID0gTlVMTDsKKwljaGVja3NGYWlsZWQg PSAwOworCXdoaWxlICgoY2ggPSBnZXRvcHQoYXJnYywgYXJndiwgImM6cHFyczp0eCIpKSAhPSAt MSkKIAkJc3dpdGNoIChjaCkgeworCQljYXNlICdjJzoKKwkJCWNoZWNrQWdhaW5zdCA9IG9wdGFy ZzsKKwkJCWJyZWFrOwogCQljYXNlICdwJzoKIAkJCU1ERmlsdGVyKCZBbGdvcml0aG1bZGlnZXN0 XSwgMSk7CiAJCQlicmVhazsKQEAgLTE3MywxMiArMTgwLDE5IEBACiAJCQkJZmFpbGVkKys7CiAJ CQl9IGVsc2UgewogCQkJCWlmIChxZmxhZykKLQkJCQkJcHJpbnRmKCIlc1xuIiwgcCk7CisJCQkJ CXByaW50ZigiJXMiLCBwKTsKIAkJCQllbHNlIGlmIChyZmxhZykKLQkJCQkJcHJpbnRmKCIlcyAl c1xuIiwgcCwgKmFyZ3YpOworCQkJCQlwcmludGYoIiVzICVzIiwgcCwgKmFyZ3YpOwogCQkJCWVs c2UKLQkJCQkJcHJpbnRmKCIlcyAoJXMpID0gJXNcbiIsCisJCQkJCXByaW50ZigiJXMgKCVzKSA9 ICVzIiwKIAkJCQkJICAgIEFsZ29yaXRobVtkaWdlc3RdLm5hbWUsICphcmd2LCBwKTsKKwkJCQlp ZiAoY2hlY2tBZ2FpbnN0ICYmIHN0cmNtcChjaGVja0FnYWluc3QscCkpCisJCQkJeworCQkJCQlj aGVja3NGYWlsZWQrKzsKKwkJCQkJaWYgKCFxZmxhZykKKwkJCQkJCXByaW50ZigiJXMiLCJbIEZh aWxlZCBdIik7CisJCQkJfQorCQkJCXByaW50ZigiXG4iKTsKIAkJCX0KIAkJfSB3aGlsZSAoKisr YXJndik7CiAJfSBlbHNlIGlmICghc2ZsYWcgJiYgKG9wdGluZCA9PSAxIHx8IHFmbGFnIHx8IHJm bGFnKSkKQEAgLTE4Niw2ICsyMDAsOCBAQAogCiAJaWYgKGZhaWxlZCAhPSAwKQogCQlyZXR1cm4g KDEpOworCWlmIChjaGVja3NGYWlsZWQgIT0gMCkKKwkJcmV0dXJuICgyKTsKIAogCXJldHVybiAo MCk7CiB9CkBAIC0xOTgsMTIgKzIxNCwyMCBAQAogCXNpemVfdCBsZW4gPSBzdHJsZW4oc3RyaW5n KTsKIAljaGFyIGJ1ZltIRVhfRElHRVNUX0xFTkdUSF07CiAKKwlhbGctPkRhdGEoc3RyaW5nLGxl bixidWYpOwogCWlmIChxZmxhZykKLQkJcHJpbnRmKCIlc1xuIiwgYWxnLT5EYXRhKHN0cmluZywg bGVuLCBidWYpKTsKKwkJcHJpbnRmKCIlcyIsIGJ1Zik7CiAJZWxzZSBpZiAocmZsYWcpCi0JCXBy aW50ZigiJXMgXCIlc1wiXG4iLCBhbGctPkRhdGEoc3RyaW5nLCBsZW4sIGJ1ZiksIHN0cmluZyk7 CisJCXByaW50ZigiJXMgXCIlc1wiIiwgYnVmLCBzdHJpbmcpOwogCWVsc2UKLQkJcHJpbnRmKCIl cyAoXCIlc1wiKSA9ICVzXG4iLCBhbGctPm5hbWUsIHN0cmluZywgYWxnLT5EYXRhKHN0cmluZywg bGVuLCBidWYpKTsKKwkJcHJpbnRmKCIlcyAoXCIlc1wiKSA9ICVzIiwgYWxnLT5uYW1lLCBzdHJp bmcsIGJ1Zik7CisJaWYgKGNoZWNrQWdhaW5zdCAmJiBzdHJjbXAoYnVmLGNoZWNrQWdhaW5zdCkp CisJeworCQljaGVja3NGYWlsZWQrKzsKKwkJaWYgKCFxZmxhZykKKwkJCXByaW50ZigiJXMiLCIg WyBmYWlsZWQgXSIpOworCX0KKwlwcmludGYoIlxuIik7CiB9CiAvKgogICogTWVhc3VyZXMgdGhl IHRpbWUgdG8gZGlnZXN0IFRFU1RfQkxPQ0tfQ09VTlQgVEVTVF9CTE9DS19MRU4tYnl0ZSBibG9j a3MuCg== --0016e68e8ba5afbeff0486610ddd--