git-apply: normalize file mode when comparing with expected value
[gitweb.git] / sha1_file.c
index a2ba4c81dba1b55b119d9ec3c42a7e4ce4ca1df5..e648c068b558fbdbbdc866c8829af3641e2c5b60 100644 (file)
@@ -58,7 +58,7 @@ static int get_sha1_file(const char *path, unsigned char *result)
        return get_sha1_hex(buffer, result);
 }
 
-static char *git_dir, *git_object_dir, *git_index_file;
+static char *git_dir, *git_object_dir, *git_index_file, *git_refs_dir;
 static void setup_git_env(void)
 {
        git_dir = gitenv(GIT_DIR_ENVIRONMENT);
@@ -69,6 +69,8 @@ static void setup_git_env(void)
                git_object_dir = xmalloc(strlen(git_dir) + 9);
                sprintf(git_object_dir, "%s/objects", git_dir);
        }
+       git_refs_dir = xmalloc(strlen(git_dir) + 6);
+       sprintf(git_refs_dir, "%s/refs", git_dir);
        git_index_file = gitenv(INDEX_ENVIRONMENT);
        if (!git_index_file) {
                git_index_file = xmalloc(strlen(git_dir) + 7);
@@ -83,6 +85,13 @@ char *get_object_directory(void)
        return git_object_dir;
 }
 
+char *get_refs_directory(void)
+{
+       if (!git_refs_dir)
+               setup_git_env();
+       return git_refs_dir;
+}
+
 char *get_index_file(void)
 {
        if (!git_index_file)
@@ -257,7 +266,7 @@ static char *find_sha1_file(const unsigned char *sha1, struct stat *st)
        return NULL;
 }
 
-int check_sha1_signature(unsigned char *sha1, void *map, unsigned long size, const char *type)
+int check_sha1_signature(const unsigned char *sha1, void *map, unsigned long size, const char *type)
 {
        char header[100];
        unsigned char real_sha1[20];