ctucx.git: stagit

ctucx' stagit fork

commit fe5855546a20df48fd60e8c78674ff91fbcfc710
parent 18e6c1beda47949082d0630fb3a697438b2e80d9
Author: Hiltjo Posthuma <hiltjo@codemadness.org>
Date: Mon, 7 Dec 2015 20:46:51 +0100

detect binary diff, comment index + delta header for now (broken)
1 file changed, 25 insertions(+), 11 deletions(-)
M
urmoms.c
|
36
+++++++++++++++++++++++++-----------
diff --git a/urmoms.c b/urmoms.c
@@ -257,19 +257,33 @@ printshowfile(git_commit *commit)
 			relpath, delta->old_file.path, delta->old_file.path,
 			relpath, delta->new_file.path, delta->new_file.path);
 
-		/* TODO: add --- and +++ lines */
+		/* TODO: "new file mode <mode>". */
+		/* TODO: add indexfrom...indexto + flags */
 
 #if 0
-		switch (delta->flags) {
-		case GIT_DIFF_FLAG_BINARY:
-			/* "Binary files /dev/null and b/favicon.png differ" or so */
-			continue; /* TODO: binary data */
-		case GIT_DIFF_FLAG_NOT_BINARY:   break;
-		case GIT_DIFF_FLAG_VALID_ID:     break; /* TODO: check */
-		case GIT_DIFF_FLAG_EXISTS:       break; /* TODO: check */
-		}
+		fputs("<b>--- ", fp);
+		if (delta->status & GIT_DELTA_ADDED)
+			fputs("/dev/null", fp);
+		else
+			fprintf(fp, "a/<a href=\"%sfile/%s\">%s</a>",
+				relpath, delta->old_file.path, delta->old_file.path);
+
+		fputs("\n+++ ", fp);
+		if (delta->status & GIT_DELTA_DELETED)
+			fputs("/dev/null", fp);
+		else
+			fprintf(fp, "b/<a href=\"%sfile/%s\">%s</a>",
+				relpath, delta->new_file.path, delta->new_file.path);
+		fputs("</b>\n", fp);
 #endif
 
+		/* check binary data */
+		if (delta->flags & GIT_DIFF_FLAG_BINARY) {
+			fputs("Binary files differ\n", fp);
+			git_patch_free(patch);
+			continue;
+		}
+
 		nhunks = git_patch_num_hunks(patch);
 		for (j = 0; j < nhunks; j++) {
 			if (git_patch_get_hunk(&hunk, &nhunklines, patch, j))

@@ -333,8 +347,8 @@ writelog(FILE *fp)
 	      "<td align=\"right\">Files</td><td align=\"right\">+</td><td align=\"right\">-</td></tr>\n</thead><tbody>\n", fp);
 	while (!git_revwalk_next(&id, w)) {
 		/* DEBUG */
-		if (i++ > 100)
-			break;
+/*		if (i++ > 100)
+			break;*/
 
 		relpath = "";