diff --git a/usr.bin/cmp/cmp.c b/usr.bin/cmp/cmp.c --- a/usr.bin/cmp/cmp.c +++ b/usr.bin/cmp/cmp.c @@ -92,7 +92,6 @@ break; case 's': /* silent run */ sflag = true; - zflag = true; break; case 'x': /* hex output */ lflag = true; @@ -149,6 +148,9 @@ skip1 = argc > 2 ? strtol(argv[2], NULL, 0) : 0; skip2 = argc == 4 ? strtol(argv[3], NULL, 0) : 0; + if (sflag && skip1 == 0 && skip2 == 0) + zflag = true; + if (fd1 == -1) { if (fd2 == -1) { c_link(file1, skip1, file2, skip2); diff --git a/usr.bin/cmp/tests/cmp_test2.sh b/usr.bin/cmp/tests/cmp_test2.sh --- a/usr.bin/cmp/tests/cmp_test2.sh +++ b/usr.bin/cmp/tests/cmp_test2.sh @@ -62,8 +62,22 @@ atf_check -s not-exit:0 -o ignore -e ignore cmp -h a.lnk adup.lnk } +atf_test_case pr252542 +pr252542_head() +{ + atf_set "descr" "Test cmp(1) -s with file offset skips" +} +pr252542_body() +{ + echo -n '1234567890' > a + echo -n 'abc567890' > b + atf_check -s exit:0 cmp -s a b 4 3 + atf_check -s exit:1 -o ignore cmp -z a b 4 3 +} + atf_init_test_cases() { atf_add_test_case special atf_add_test_case symlink + atf_add_test_case pr252542 }