diff --git a/ui-commit.c b/ui-commit.c
index 3618800..f1a22d3 100644
--- a/ui-commit.c
+++ b/ui-commit.c
@@ -14,7 +14,7 @@
 {
 	char *query;
 	char *class;
-	
+
 	switch (pair->status) {
 	case DIFF_STATUS_ADDED:
 		class = "add";
@@ -52,25 +52,25 @@
 		html_filemode(pair->two->mode);
 	}
 
-	if (pair->one->mode != pair->two->mode && 
-	    !is_null_sha1(pair->one->sha1) && 
+	if (pair->one->mode != pair->two->mode &&
+	    !is_null_sha1(pair->one->sha1) &&
 	    !is_null_sha1(pair->two->sha1)) {
 		html("<span class='modechange'>[");
 		html_filemode(pair->one->mode);
 		html("]</span>");
 	}
 	htmlf("</td><td class='%s'>", class);
-	query = fmt("id=%s&id2=%s", sha1_to_hex(pair->one->sha1), 
-		    sha1_to_hex(pair->two->sha1));	
-	html_link_open(cgit_pageurl(cgit_query_repo, "diff", query), 
+	query = fmt("id=%s&id2=%s", sha1_to_hex(pair->one->sha1),
+		    sha1_to_hex(pair->two->sha1));
+	html_link_open(cgit_pageurl(cgit_query_repo, "diff", query),
 		       NULL, NULL);
-	if (pair->status == DIFF_STATUS_COPIED || 
+	if (pair->status == DIFF_STATUS_COPIED ||
 	    pair->status == DIFF_STATUS_RENAMED) {
 		html_txt(pair->two->path);
-		htmlf("</a> (%s from ", pair->status == DIFF_STATUS_COPIED ? 
+		htmlf("</a> (%s from ", pair->status == DIFF_STATUS_COPIED ?
 		      "copied" : "renamed");
-		query = fmt("id=%s", sha1_to_hex(pair->one->sha1));	
-		html_link_open(cgit_pageurl(cgit_query_repo, "view", query), 
+		query = fmt("id=%s", sha1_to_hex(pair->one->sha1));
+		html_link_open(cgit_pageurl(cgit_query_repo, "view", query),
 			       NULL, NULL);
 		html_txt(pair->one->path);
 		html("</a>)");
@@ -81,44 +81,9 @@
 	html("<td>");
 
 	//TODO: diffstat graph
-	
+
 	html("</td></tr>\n");
-	files++;	
-}
-
-void diff_format_cb(struct diff_queue_struct *q,
-		    struct diff_options *options, void *data)
-{
-	int i;
-
-	for (i = 0; i < q->nr; i++) {
-		if (q->queue[i]->status == 'U')
-			continue;
-		print_filepair(q->queue[i]);
-	}
-}
-
-void cgit_diffstat(struct commit *commit)
-{
-	struct diff_options opt;
-	int ret;
-
-	diff_setup(&opt);
-	opt.output_format = DIFF_FORMAT_CALLBACK;
-	opt.detect_rename = 1;
-	opt.recursive = 1;
-	opt.format_callback = diff_format_cb;
-	diff_setup_done(&opt);
-	
-	if (commit->parents)
-		ret = diff_tree_sha1(commit->parents->item->object.sha1,
-				     commit->object.sha1,
-				     "", &opt);
-	else
-		ret = diff_root_tree_sha1(commit->object.sha1, "", &opt);
-
-	diffcore_std(&opt);
-	diff_flush(&opt);
+	files++;
 }
 
 void cgit_print_commit(const char *hex)
@@ -166,17 +131,16 @@
 		     "<a href='");
 		query = fmt("id=%s", sha1_to_hex(p->item->object.sha1));
 		html_attr(cgit_pageurl(cgit_query_repo, "commit", query));
-		htmlf("'>%s</a></td></tr>\n", 
+		htmlf("'>%s</a></td></tr>\n",
 		      sha1_to_hex(p->item->object.sha1));
 	}
 	if (cgit_repo->snapshots) {
 		htmlf("<tr><th>download</th><td colspan='2' class='sha1'><a href='");
 		filename = fmt("%s-%s.zip", cgit_query_repo, hex);
-		html_attr(cgit_pageurl(cgit_query_repo, "snapshot", 
+		html_attr(cgit_pageurl(cgit_query_repo, "snapshot",
 				       fmt("id=%s&name=%s", hex, filename)));
 		htmlf("'>%s</a></td></tr>", filename);
 	}
-	
 	html("</table>\n");
 	html("<div class='commit-subject'>");
 	html_txt(info->subject);
@@ -186,7 +150,7 @@
 	html("</div>");
 	html("<table class='diffstat'>");
 	html("<tr><th colspan='3'>Affected files</tr>\n");
-	cgit_diffstat(commit);
+	cgit_diff_commit(commit, print_filepair);
 	htmlf("<tr><td colspan='3' class='summary'>"
 	      "%d file%s changed</td></tr>\n", files, files > 1 ? "s" : "");
 	html("</table>");
