From b44222fc2b061382dc601014cde287cc41b857ca Mon Sep 17 00:00:00 2001 From: Lukasz Kasprzak Date: Thu, 17 Sep 2026 13:59:52 +0200 Subject: a duplicate test in an exclude protects like one in a rule The scopes that drive "no rule deletes a file krino found to be a duplicate" were collected from rules only. A directory whose duplicate tests lived in (exclude ...) forms had no scopes at all, so the protection never engaged: krino explain said "yes duplicate" and the next rule permanently deleted every copy. The README's promise was false in that shape, and the spec's wording permitted it. What matters is what krino knows, not which form taught it. The spec and krino.conf(5) now say so too. --- man/krino.conf.5 | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'man') diff --git a/man/krino.conf.5 b/man/krino.conf.5 index a9b3ea8..1a60ecc 100644 --- a/man/krino.conf.5 +++ b/man/krino.conf.5 @@ -1319,9 +1319,13 @@ A rule combining .Ic (duplicate) with a delete action is refused .Pq Sx RULES . -And in a directory whose rules use -.Ic (duplicate) , -a file that is a duplicate under any of the duplicate scopes those rules use +And in a directory that uses +.Ic (duplicate) +\(em in a rule or in an +.Ic (exclude ...) , +since what matters is what krino knows and not which form taught it \(em +a file that is a duplicate under any of the duplicate scopes that directory +uses \(em each distinct set of .Ar dir arguments, and the plain -- cgit v1.3