]> gitweb.ps.run Git - ps-cgit/blobdiff - ui-diff.c
ui-plain.c: Use a context structure in walk_tree()
[ps-cgit] / ui-diff.c
index d97a8012cfffc4d10986c27d3f3a6f7bfa4019fd..49e5b468f4385605efed4cec567e3e016f501379 100644 (file)
--- a/ui-diff.c
+++ b/ui-diff.c
@@ -184,7 +184,7 @@ void cgit_print_diffstat(const unsigned char *old_sha1,
        max_changes = 0;
        cgit_diff_tree(old_sha1, new_sha1, inspect_filepair, prefix,
                       ctx.qry.ignorews);
        max_changes = 0;
        cgit_diff_tree(old_sha1, new_sha1, inspect_filepair, prefix,
                       ctx.qry.ignorews);
-       for(i = 0; i<files; i++)
+       for (i = 0; i<files; i++)
                print_fileinfo(&items[i]);
        html("</table>");
        html("<div class='diffstat-summary'>");
                print_fileinfo(&items[i]);
        html("</table>");
        html("<div class='diffstat-summary'>");
@@ -229,11 +229,6 @@ static void header(unsigned char *sha1, char *path1, int mode1,
        html(" b/");
        html_txt(path2);
 
        html(" b/");
        html_txt(path2);
 
-       if (is_null_sha1(sha1))
-               path1 = "dev/null";
-       if (is_null_sha1(sha2))
-               path2 = "dev/null";
-
        if (mode1 == 0)
                htmlf("<br/>new file mode %.6o", mode2);
 
        if (mode1 == 0)
                htmlf("<br/>new file mode %.6o", mode2);
 
@@ -251,13 +246,21 @@ static void header(unsigned char *sha1, char *path1, int mode1,
                        if (mode2 != mode1)
                                htmlf("..%.6o", mode2);
                }
                        if (mode2 != mode1)
                                htmlf("..%.6o", mode2);
                }
-               html("<br/>--- a/");
+               if (is_null_sha1(sha1)) {
+                       path1 = "dev/null";
+                       html("<br/>--- /");
+               } else
+                       html("<br/>--- a/");
                if (mode1 != 0)
                        cgit_tree_link(path1, NULL, NULL, ctx.qry.head,
                                       sha1_to_hex(old_rev_sha1), path1);
                else
                        html_txt(path1);
                if (mode1 != 0)
                        cgit_tree_link(path1, NULL, NULL, ctx.qry.head,
                                       sha1_to_hex(old_rev_sha1), path1);
                else
                        html_txt(path1);
-               html("<br/>+++ b/");
+               if (is_null_sha1(sha2)) {
+                       path2 = "dev/null";
+                       html("<br/>+++ /");
+               } else
+                       html("<br/>+++ b/");
                if (mode2 != 0)
                        cgit_tree_link(path2, NULL, NULL, ctx.qry.head,
                                       sha1_to_hex(new_rev_sha1), path2);
                if (mode2 != 0)
                        cgit_tree_link(path2, NULL, NULL, ctx.qry.head,
                                       sha1_to_hex(new_rev_sha1), path2);
@@ -341,9 +344,7 @@ void cgit_print_diff_ctrls()
        html("<td class='label'>mode:</td>");
        html("<td class='ctrl'>");
        html("<select name='ss' onchange='this.form.submit();'>");
        html("<td class='label'>mode:</td>");
        html("<td class='ctrl'>");
        html("<select name='ss' onchange='this.form.submit();'>");
-       curr = ctx.qry.ssdiff;
-       if (!curr && ctx.cfg.ssdiff)
-               curr = 1;
+       curr = ctx.qry.has_ssdiff ? ctx.qry.ssdiff : ctx.cfg.ssdiff;
        html_intoption(0, "unified", curr);
        html_intoption(1, "ssdiff", curr);
        html("</select></td></tr>");
        html_intoption(0, "unified", curr);
        html_intoption(1, "ssdiff", curr);
        html("</select></td></tr>");
@@ -395,8 +396,7 @@ void cgit_print_diff(const char *new_rev, const char *old_rev,
                }
        }
 
                }
        }
 
-       if ((ctx.qry.ssdiff && !ctx.cfg.ssdiff) || (!ctx.qry.ssdiff && ctx.cfg.ssdiff))
-               use_ssdiff = 1;
+       use_ssdiff = ctx.qry.has_ssdiff ? ctx.qry.ssdiff : ctx.cfg.ssdiff;
 
        if (show_ctrls)
                cgit_print_diff_ctrls();
 
        if (show_ctrls)
                cgit_print_diff_ctrls();