X-Git-Url: http://git.dolda2000.com/gitweb/?a=blobdiff_plain;f=daemon%2Fclient.c;h=46766e94e459d46d290f37d7592cee856ddd754e;hb=2f4cd43c4483070e81c0862582a80b59a208f0dd;hp=bf3082176c446c6258d6209b4acfdfba27fd1bcd;hpb=1104a3d449ca71696d000ac4d9c253ecf66ba3e6;p=doldaconnect.git diff --git a/daemon/client.c b/daemon/client.c index bf30821..46766e9 100644 --- a/daemon/client.c +++ b/daemon/client.c @@ -106,6 +106,7 @@ static struct timer *hashwritetimer = NULL; static pid_t hashjob = -1; struct sharecache *shareroot = NULL; static struct timer *scantimer = NULL; +int sharedfiles = 0; unsigned long long sharesize = 0; GCBCHAIN(sharechangecb, unsigned long long); @@ -648,6 +649,8 @@ static void freecache(struct sharecache *node) CBCHAINDOCB(node, share_delete, node); CBCHAINFREE(node, share_delete); sharesize -= node->size; + if(node->f.b.type == FILE_REG) + sharedfiles--; if(node->path != NULL) free(node->path); if(node->name != NULL) @@ -938,6 +941,7 @@ int doscan(int quantum) if(S_ISREG(sb.st_mode)) { sharesize += (n->size = sb.st_size); + sharedfiles++; } else { n->size = 0; } @@ -1082,6 +1086,8 @@ static void terminate(void) { if(hashjob != 0) kill(hashjob, SIGHUP); + if(hashwritetimer != NULL) + writehashcache(1); while(shares != NULL) freesharepoint(shares); freecache(shareroot);