move_temp_to_file(): do not forget to chmod() in "Coda hack" codepath
authorJunio C Hamano <gitster@pobox.com>
Sat, 28 Mar 2009 06:14:39 +0000 (23:14 -0700)
committerJunio C Hamano <gitster@pobox.com>
Sat, 28 Mar 2009 15:01:21 +0000 (08:01 -0700)
Now move_temp_to_file() is responsible for doing everything that is
necessary to turn a tempfile in $GIT_DIR into its final form, it must make
sure "Coda hack" codepath correctly makes the file read-only.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
sha1_file.c

index 3bd20e7..6f27859 100644 (file)
@@ -2263,12 +2263,12 @@ int move_temp_to_file(const char *tmpfile, const char *filename)
         *
         * The same holds for FAT formatted media.
         *
-        * When this succeeds, we just return 0. We have nothing
+        * When this succeeds, we just return We have nothing
         * left to unlink.
         */
        if (ret && ret != EEXIST) {
                if (!rename(tmpfile, filename))
-                       return 0;
+                       goto out;
                ret = errno;
        }
        unlink(tmpfile);
@@ -2279,6 +2279,7 @@ int move_temp_to_file(const char *tmpfile, const char *filename)
                /* FIXME!!! Collision check here ? */
        }
 
+out:
        if (chmod(filename, 0444) || adjust_shared_perm(filename))
                return error("unable to set permission to '%s'", filename);
        return 0;