From bd5d53f9e3eda65e69557b2551d2b37e0bdc5fc8 Mon Sep 17 00:00:00 2001 From: Christian Neukirchen Date: Tue, 1 Sep 2015 17:23:44 +0200 Subject: Store hash for foo in .foo.dep too, to detect changes to targets --- redo.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/redo.c b/redo.c index 5dc8064..8bdf85d 100644 --- a/redo.c +++ b/redo.c @@ -677,14 +677,22 @@ redo_ifchange(int targetc, char *targetv[]) char *target = targetchdir(job->target); char *depfile = targetdep(target); - rename(job->temp_depfile, depfile); - if (stat(job->temp_target, &st) == 0 && st.st_size > 0) { + int dfd, tfd; + + dfd = open(job->temp_depfile, O_WRONLY|O_APPEND); + tfd = open(job->temp_target, O_RDONLY); + dprintf(dfd, "=%s@%s\n", hashfile(tfd), target); + close(dfd); + close(tfd); + rename(job->temp_target, target); } else { remove(job->temp_target); } + + rename(job->temp_depfile, depfile); } vacate(job->implicit); -- cgit 1.4.1