diff options
author | Todd C. Miller <millert@cvs.openbsd.org> | 2017-08-28 15:33:28 +0000 |
---|---|---|
committer | Todd C. Miller <millert@cvs.openbsd.org> | 2017-08-28 15:33:28 +0000 |
commit | 6d90813bf3d4336f3813c7363f43d43619132701 (patch) | |
tree | a2b387f34560531fbb305da69f814f9f2d7b4293 | |
parent | 5a31c1921922406134a885c582fa4e8bed909f3f (diff) |
Fix exit value when diffing directories with missing files and the -N
or -P options are not used. From Ibrahim Khalifa
-rw-r--r-- | usr.bin/diff/diffdir.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/usr.bin/diff/diffdir.c b/usr.bin/diff/diffdir.c index 3b817f1a2c6..758332b04ce 100644 --- a/usr.bin/diff/diffdir.c +++ b/usr.bin/diff/diffdir.c @@ -1,4 +1,4 @@ -/* $OpenBSD: diffdir.c,v 1.45 2015/10/05 20:15:00 millert Exp $ */ +/* $OpenBSD: diffdir.c,v 1.46 2017/08/28 15:33:27 millert Exp $ */ /* * Copyright (c) 2003, 2010 Todd C. Miller <Todd.Miller@courtesan.com> @@ -57,7 +57,7 @@ diffdir(char *p1, char *p2, int flags) dirlen1 = strlcpy(path1, *p1 ? p1 : ".", sizeof(path1)); if (dirlen1 >= sizeof(path1) - 1) { warnc(ENAMETOOLONG, "%s", p1); - status = 2; + status |= 2; return; } if (path1[dirlen1 - 1] != '/') { @@ -67,7 +67,7 @@ diffdir(char *p1, char *p2, int flags) dirlen2 = strlcpy(path2, *p2 ? p2 : ".", sizeof(path2)); if (dirlen2 >= sizeof(path2) - 1) { warnc(ENAMETOOLONG, "%s", p2); - status = 2; + status |= 2; return; } if (path2[dirlen2 - 1] != '/') { @@ -129,19 +129,23 @@ diffdir(char *p1, char *p2, int flags) dp2++; } else if (pos < 0) { /* file only in first dir, only diff if -N */ - if (Nflag) + if (Nflag) { diffit(dent1, path1, dirlen1, path2, dirlen2, flags); - else + } else { print_only(path1, dirlen1, dent1->d_name); + status |= 1; + } dp1++; } else { /* file only in second dir, only diff if -N or -P */ - if (Nflag || Pflag) + if (Nflag || Pflag) { diffit(dent2, path1, dirlen1, path2, dirlen2, flags); - else + } else { print_only(path2, dirlen2, dent2->d_name); + status |= 1; + } dp2++; } } |