Code

Makefile: remove test-chmtime program in target clean.
[git.git] / commit.c
index f78ce262f6cd141b9b4b8ba1c73fc37ecc07d6f4..718e568855a37586f99f20bcfafd44cf3aa2b657 100644 (file)
--- a/commit.c
+++ b/commit.c
@@ -352,18 +352,18 @@ int parse_commit_buffer(struct commit *item, void *buffer, unsigned long size)
 
 int parse_commit(struct commit *item)
 {
-       char type[20];
+       enum object_type type;
        void *buffer;
        unsigned long size;
        int ret;
 
        if (item->object.parsed)
                return 0;
-       buffer = read_sha1_file(item->object.sha1, type, &size);
+       buffer = read_sha1_file(item->object.sha1, &type, &size);
        if (!buffer)
                return error("Could not read %s",
                             sha1_to_hex(item->object.sha1));
-       if (strcmp(type, commit_type)) {
+       if (type != OBJ_COMMIT) {
                free(buffer);
                return error("Object %s not a commit",
                             sha1_to_hex(item->object.sha1));
@@ -651,7 +651,7 @@ static char *get_header(const struct commit *commit, const char *key)
        }
 }
 
-static char *replace_encoding_header(char *buf, char *encoding)
+static char *replace_encoding_header(char *buf, const char *encoding)
 {
        char *encoding_header = strstr(buf, "\nencoding ");
        char *end_of_encoding_header;
@@ -694,29 +694,26 @@ static char *replace_encoding_header(char *buf, char *encoding)
 }
 
 static char *logmsg_reencode(const struct commit *commit,
-                            char *output_encoding)
+                            const char *output_encoding)
 {
+       static const char *utf8 = "utf-8";
+       const char *use_encoding;
        char *encoding;
        char *out;
-       char *utf8 = "utf-8";
 
        if (!*output_encoding)
                return NULL;
        encoding = get_header(commit, "encoding");
-       if (!encoding)
-               encoding = utf8;
-       if (!strcmp(encoding, output_encoding))
-               out = strdup(commit->buffer);
+       use_encoding = encoding ? encoding : utf8;
+       if (!strcmp(use_encoding, output_encoding))
+               out = xstrdup(commit->buffer);
        else
                out = reencode_string(commit->buffer,
-                                     output_encoding, encoding);
+                                     output_encoding, use_encoding);
        if (out)
                out = replace_encoding_header(out, output_encoding);
 
-       if (encoding != utf8)
-               free(encoding);
-       if (!out)
-               return NULL;
+       free(encoding);
        return out;
 }
 
@@ -917,7 +914,7 @@ unsigned long pretty_print_commit(enum cmit_fmt fmt,
        const char *msg = commit->buffer;
        int plain_non_ascii = 0;
        char *reencoded;
-       char *encoding;
+       const char *encoding;
 
        if (fmt == CMIT_FMT_USERFORMAT)
                return format_commit_message(commit, msg, buf, space);
@@ -1382,14 +1379,17 @@ struct commit_list *get_merge_bases(struct commit *one,
        return result;
 }
 
-int in_merge_bases(struct commit *rev1, struct commit *rev2)
+int in_merge_bases(struct commit *commit, struct commit **reference, int num)
 {
        struct commit_list *bases, *b;
        int ret = 0;
 
-       bases = get_merge_bases(rev1, rev2, 1);
+       if (num == 1)
+               bases = get_merge_bases(commit, *reference, 1);
+       else
+               die("not yet");
        for (b = bases; b; b = b->next) {
-               if (!hashcmp(rev1->object.sha1, b->item->object.sha1)) {
+               if (!hashcmp(commit->object.sha1, b->item->object.sha1)) {
                        ret = 1;
                        break;
                }