diff options
author | Junio C Hamano <gitster@pobox.com> | 2015-07-27 12:21:40 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2015-07-27 12:21:40 -0700 |
commit | 7c696007ca422b9712549f27e17c2d778cb887c4 (patch) | |
tree | e64efa59cac666666fa1e456187516c56fe5cd72 /sha1_file.c | |
parent | 3f8b439a0e7cb808a24679a154cf6b76d8a8bc89 (diff) | |
parent | 3096b2ecdb91c27cb9e64b692c480deed6c7e77e (diff) | |
download | git-7c696007ca422b9712549f27e17c2d778cb887c4.tar.gz |
Merge branch 'jk/fix-refresh-utime' into maint
Fix a small bug in our use of umask() return value.
* jk/fix-refresh-utime:
check_and_freshen_file: fix reversed success-check
Diffstat (limited to 'sha1_file.c')
-rw-r--r-- | sha1_file.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/sha1_file.c b/sha1_file.c index 0c70152c17..a68ae18dd8 100644 --- a/sha1_file.c +++ b/sha1_file.c @@ -443,6 +443,7 @@ void prepare_alt_odb(void) read_info_alternates(get_object_directory(), 0); } +/* Returns 1 if we have successfully freshened the file, 0 otherwise. */ static int freshen_file(const char *fn) { struct utimbuf t; @@ -450,11 +451,18 @@ static int freshen_file(const char *fn) return !utime(fn, &t); } +/* + * All of the check_and_freshen functions return 1 if the file exists and was + * freshened (if freshening was requested), 0 otherwise. If they return + * 0, you should not assume that it is safe to skip a write of the object (it + * either does not exist on disk, or has a stale mtime and may be subject to + * pruning). + */ static int check_and_freshen_file(const char *fn, int freshen) { if (access(fn, F_OK)) return 0; - if (freshen && freshen_file(fn)) + if (freshen && !freshen_file(fn)) return 0; return 1; } |