Enable wt-status output to a given FILE pointer.
[gitweb.git] / diff.c
diff --git a/diff.c b/diff.c
index 26d7bb96bcaa52b4a104a2dfa17da388e3032c49..2216d756d1f351cf51eb4bca07c0cd5e0497b619 100644 (file)
--- a/diff.c
+++ b/diff.c
@@ -9,7 +9,6 @@
 #include "xdiff-interface.h"
 #include "color.h"
 #include "attr.h"
-#include "strbuf.h"
 
 #ifdef NO_FAST_WORKING_DIRECTORY
 #define FAST_WORKING_DIRECTORY 0
@@ -18,7 +17,7 @@
 #endif
 
 static int diff_detect_rename_default;
-static int diff_rename_limit_default = -1;
+static int diff_rename_limit_default = 100;
 static int diff_use_color_default;
 int diff_auto_refresh_index = 1;
 
@@ -84,13 +83,8 @@ static int parse_lldiff_command(const char *var, const char *ep, const char *val
                if (!strncmp(drv->name, name, namelen) && !drv->name[namelen])
                        break;
        if (!drv) {
-               char *namebuf;
                drv = xcalloc(1, sizeof(struct ll_diff_driver));
-               namebuf = xmalloc(namelen + 1);
-               memcpy(namebuf, name, namelen);
-               namebuf[namelen] = 0;
-               drv->name = namebuf;
-               drv->next = NULL;
+               drv->name = xmemdupz(name, namelen);
                if (!user_diff_tail)
                        user_diff_tail = &user_diff;
                *user_diff_tail = drv;
@@ -127,12 +121,8 @@ static int parse_funcname_pattern(const char *var, const char *ep, const char *v
                if (!strncmp(pp->name, name, namelen) && !pp->name[namelen])
                        break;
        if (!pp) {
-               char *namebuf;
                pp = xcalloc(1, sizeof(*pp));
-               namebuf = xmalloc(namelen + 1);
-               memcpy(namebuf, name, namelen);
-               namebuf[namelen] = 0;
-               pp->name = namebuf;
+               pp->name = xmemdupz(name, namelen);
                pp->next = funcname_pattern_list;
                funcname_pattern_list = pp;
        }
@@ -1548,8 +1538,8 @@ static int populate_from_stdin(struct diff_filespec *s)
 {
        struct strbuf buf;
 
-       strbuf_init(&buf);
-       if (strbuf_read(&buf, 0) < 0)
+       strbuf_init(&buf, 0);
+       if (strbuf_read(&buf, 0, 0) < 0)
                return error("error while reading from stdin %s",
                                     strerror(errno));
 
@@ -1600,10 +1590,9 @@ int diff_populate_filespec(struct diff_filespec *s, int size_only)
 
        if (!s->sha1_valid ||
            reuse_worktree_file(s->path, s->sha1, 0)) {
+               struct strbuf buf;
                struct stat st;
                int fd;
-               char *buf;
-               unsigned long size;
 
                if (!strcmp(s->path, "-"))
                        return populate_from_stdin(s);
@@ -1644,13 +1633,12 @@ int diff_populate_filespec(struct diff_filespec *s, int size_only)
                /*
                 * Convert from working tree format to canonical git format
                 */
-               size = s->size;
-               buf = convert_to_git(s->path, s->data, &size);
-               if (buf) {
+               strbuf_init(&buf, 0);
+               if (convert_to_git(s->path, s->data, s->size, &buf)) {
                        munmap(s->data, s->size);
                        s->should_munmap = 0;
-                       s->data = buf;
-                       s->size = size;
+                       s->data = buf.buf;
+                       s->size = buf.len;
                        s->should_free = 1;
                }
        }