When diff(1) finds differences, it returns an exit status of 1.
authorschwarze <schwarze@openbsd.org>
Tue, 21 Apr 2015 10:24:22 +0000 (10:24 +0000)
committerschwarze <schwarze@openbsd.org>
Tue, 21 Apr 2015 10:24:22 +0000 (10:24 +0000)
In that particular case, refrain from printing "diff: exit code 1"
because that exit status doesn't indicate an error condition.

Issue noticed by and patch OK'ed by ajacoutot@.
"I agree with the goal, and I suspect the diff actually achieves it" guenther@.

libexec/security/security

index ef11c0c..65ec816 100644 (file)
@@ -1,6 +1,6 @@
 #!/usr/bin/perl -T
 
-# $OpenBSD: security,v 1.34 2015/03/27 13:26:19 schwarze Exp $
+# $OpenBSD: security,v 1.35 2015/04/21 10:24:22 schwarze Exp $
 #
 # Copyright (c) 2011, 2012, 2014, 2015 Ingo Schwarze <schwarze@openbsd.org>
 # Copyright (c) 2011 Andrew Fresh <andrew@afresh1.com>
@@ -738,7 +738,11 @@ sub diff {
            and return;
        local $/;
        my $diff = <$fh>;
-       close_or_nag $fh, "diff";
+       {
+               close $fh and last;
+               nag $!, "diff: error closing pipe: $!" and last;
+               nag $? >> 8 > 1, "diff: exit code " . ($? >> 8);
+       }
        return nag !!$diff, $diff;
 }