about summary refs log tree commit diff homepage
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--merge.c53
1 files changed, 25 insertions, 28 deletions
diff --git a/merge.c b/merge.c
index e5a5f64..3390c59 100644
--- a/merge.c
+++ b/merge.c
@@ -56,62 +56,59 @@ static void drawTile(int offsetY, const struct Tile *tile) {
 int main(int argc, char *argv[]) {
     if (argc != 4) return EX_USAGE;
 
-    int a = open(argv[1], O_RDONLY);
-    if (a < 0) err(EX_IOERR, "%s", argv[1]);
+    int fileA = open(argv[1], O_RDONLY);
+    if (fileA < 0) err(EX_IOERR, "%s", argv[1]);
 
-    int b = open(argv[2], O_RDONLY);
-    if (b < 0) err(EX_IOERR, "%s", argv[2]);
+    int fileB = open(argv[2], O_RDONLY);
+    if (fileB < 0) err(EX_IOERR, "%s", argv[2]);
 
-    int c = open(argv[3], O_WRONLY | O_CREAT, 0644);
-    if (c < 0) err(EX_IOERR, "%s", argv[3]);
+    int fileC = open(argv[3], O_WRONLY | O_CREAT, 0644);
+    if (fileC < 0) err(EX_IOERR, "%s", argv[3]);
 
     initscr();
     cbreak();
     noecho();
     keypad(stdscr, true);
     set_escdelay(100);
+
     start_color();
     for (int bg = COLOR_BLACK; bg < COLOR_BRIGHT; ++bg) {
         for (int fg = COLOR_BLACK; fg < COLOR_BRIGHT; ++fg) {
             init_pair(bg << 4 | fg, fg, bg);
         }
     }
+
     mvhline(CELL_ROWS, 0, 0, CELL_COLS);
+    mvhline(CELL_ROWS * 2 + 1, 0, 0, CELL_COLS);
+    mvvline(0, CELL_COLS, 0, CELL_ROWS * 2 + 1);
+    mvaddch(CELL_ROWS, CELL_COLS, ACS_RTEE);
+    mvaddch(CELL_ROWS * 2 + 1, CELL_COLS, ACS_LRCORNER);
 
     struct Tile tileA, tileB;
     for (;;) {
-        ssize_t lenA = read(a, &tileA, sizeof(tileA));
+        ssize_t lenA = read(fileA, &tileA, sizeof(tileA));
         if (lenA < 0) err(EX_IOERR, "%s", argv[1]);
 
-        ssize_t lenB = read(b, &tileB, sizeof(tileB));
+        ssize_t lenB = read(fileB, &tileB, sizeof(tileB));
         if (lenB < 0) err(EX_IOERR, "%s", argv[2]);
 
         if (!lenA && !lenB) break;
         if (!lenA || !lenB) errx(EX_IOERR, "different size inputs");
 
-        if (tileA.modify == tileB.modify) {
-            ssize_t lenC = writeAll(c, (char *)&tileB, sizeof(tileB));
-            if (lenC < 0) err(EX_IOERR, "%s", argv[3]);
-            continue;
-        }
+        const struct Tile *tileC = (tileA.access > tileB.access) ? &tileA : &tileB;
+
+        if (tileA.modify != tileB.modify) {
+            drawTile(0, &tileA);
+            drawTile(CELL_ROWS + 1, &tileB);
+            move(CELL_ROWS * 2 + 2, 0);
+            refresh();
 
-        drawTile(0, &tileA);
-        drawTile(CELL_ROWS + 1, &tileB);
-        refresh();
-
-        const struct Tile *choice;
-        int ch;
-retry:
-        ch = getch();
-        if (ch == 'a') {
-            choice = &tileA;
-        } else if (ch == 'b') {
-            choice = &tileB;
-        } else {
-            goto retry;
+            int c;
+            do { c = getch(); } while (c != 'a' && c != 'b');
+            tileC = (c == 'a') ? &tileA : &tileB;
         }
 
-        ssize_t lenC = writeAll(c, (char *)choice, sizeof(*choice));
+        ssize_t lenC = writeAll(fileC, (char *)tileC, sizeof(*tileC));
         if (lenC < 0) err(EX_IOERR, "%s", argv[3]);
     }
 
ass='nohover-highlight'> Oops! This whole time I thought OpenBSD xterm for some reason didn't support focus events. It turns out allowMouseOps: false disables them by default. Replace the disallowedMouseOps list with everything but. 2021-09-23Use NI_NUMERICSERVJune McEnroe 2021-09-23Make up build away from FreeBSDJune McEnroe 2021-09-23Add quickJune McEnroe 2021-09-23Add The HobbitJune McEnroe Surprisingly good for something written by a man like a hundred years ago! 2021-09-22Remove PSF fontsJune McEnroe They were fun to make but I never actually used them. 2021-09-22Remove Linux-specific utilitiesJune McEnroe I haven't used these in ages. 2021-09-22Call sandbox in CGI modeJune McEnroe Otherwise upload won't actually work. 2021-09-22Support HTTP PUT in upJune McEnroe For use by Palaver[1]. Unfortunately, at least in the current App Store version of Palaver, this doesn't work correctly with basic auth. [1]: https://palaverapp.com/guides/commands/set.html#ui-image_service 2021-09-22Remove default faviconJune McEnroe I hate these things and also this one sucks. 2021-09-21Use Z_FILTERED strategyJune McEnroe 2021-09-21Recalculate various lengths only as neededJune McEnroe This actually speeds things up quite a bit, saving roughly a second on a big PNG screenshot. Almost all the remaining time is spent in deflate. 2021-09-21Rewrite pngo, add explicit optionsJune McEnroe Interesting to see how my code habits have changed. 2021-09-16Fix /* **/ comment matchingJune McEnroe 2021-09-15Remove typer, add downgrade to READMEJune McEnroe 2021-09-15Set bot mode on downgradeJune McEnroe 2021-09-15Enter capsicum in downgradeJune McEnroe 2021-09-15Factor out common parts of downgrade messagesJune McEnroe Also bump the message cap to 1024 because that is ostensibly useful for replying to older messages. 2021-09-14Add downgrade IRC botJune McEnroe 2021-09-14Sort by title if authors matchJune McEnroe There are probably better things to sort by but title definitely always exists. 2021-09-13Swap-remove tags as they're foundJune McEnroe This makes it even faster. From ~1s on a sqlite3.c amalgamation to ~0.85s. 2021-09-12Replace htagml regex with strncmpJune McEnroe Since ctags only ever produces regular expressions of the form /^re$/ or /^re/ with no other special characters, instead unescape the pattern and simply use strncmp. Running on a sqlite3.c amalgamation, the regex version takes ~37s while the strncmp version takes ~1s, producing identical output. Big win! 2021-09-11Also defer printing comment for lone close-parensJune McEnroe 2021-09-10Publish "git-comment"June McEnroe 2021-09-10Add git comment --pretty optionJune McEnroe 2021-09-08Defer printing comment if line is blank or closing braceJune McEnroe This fixes badly indented comments. 2021-09-08Up default min-repeat to 30 linesJune McEnroe 2021-09-08Handle dirty lines in git-commentJune McEnroe 2021-09-08Document and install git-commentJune McEnroe 2021-09-08Add repeat and all options to git-commentJune McEnroe 2021-09-08Add group threshold to git-commentJune McEnroe