From bc8ccc959d0a27f4a0eee7f7457f3d9cc2422ab7 Mon Sep 17 00:00:00 2001
From: Yorhel <git@yorhel.nl>
Date: Fri, 12 Apr 2013 19:43:01 +0200
Subject: [PATCH] dir_scan.c: Reset directory sizes when excluded by a
 CACHEDIR.TAG

Tiny bug fix: The size of an excluded directory entry itself should not
be counted, either. This is consistent with what you'd expect: A cache
directory with thousands of files can easily take up several megabytes
for the dir entry - but from the perspective of a backup system that
recognizes cache dirs - the dir is empty, and therefore shouldn't take
any extra space at all.
---
 src/dir_scan.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/dir_scan.c b/src/dir_scan.c
index 57f96b3..2953421 100644
--- a/src/dir_scan.c
+++ b/src/dir_scan.c
@@ -197,8 +197,10 @@ static int dir_scan_item(struct dir *d) {
     stat_to_dir(d, &st);
 
   if(cachedir_tags && (d->flags & FF_DIR) && !(d->flags & (FF_ERR|FF_EXL|FF_OTHFS)))
-    if(has_cachedir_tag(d->name))
+    if(has_cachedir_tag(d->name)) {
       d->flags |= FF_EXL;
+      d->size = d->asize = 0;
+    }
 
   /* Recurse into the dir or output the item */
   if(d->flags & FF_DIR && !(d->flags & (FF_ERR|FF_EXL|FF_OTHFS)))
-- 
GitLab