logo

oasis

Own branch of Oasis Linux (upstream: <https://git.sr.ht/~mcf/oasis/>) git clone https://anongit.hacktivis.me/git/oasis.git
commit: b5ab88f9048f369722d373e2f383e3096d26bc27
parent 10f937dde8cca1a6446acf1bb9a68dfaf2388a39
Author: Michael Forney <mforney@mforney.org>
Date:   Sun, 13 Mar 2022 15:06:45 -0700

catgirl: Update to 2.1

Diffstat:

Mpkg/catgirl/gen.lua2++
Mpkg/catgirl/patch/0001-Revert-Use-gnu-case-range-and-gnu-conditional-omitte.patch115++++++++++++++++++++++++++++++++++++++++++++++---------------------------------
Mpkg/catgirl/patch/0002-Break-out-of-input-loop-when-UI-is-hidden.patch24++++++++++++------------
Mpkg/catgirl/patch/0003-Resize-status-window-explicitly-during-resize.patch18+++++++++---------
Mpkg/catgirl/patch/0004-HACK-Disable-colorized-output-in-M-l-window-list.patch24++++++++++++------------
Apkg/catgirl/patch/0005-Don-t-rely-on-internal-struct-tags-of-curses-impleme.patch37+++++++++++++++++++++++++++++++++++++
Mpkg/catgirl/ver2+-
7 files changed, 140 insertions(+), 82 deletions(-)

diff --git a/pkg/catgirl/gen.lua b/pkg/catgirl/gen.lua @@ -20,10 +20,12 @@ exe('catgirl', [[ edit.c filter.c handle.c + input.c irc.c log.c ui.c url.c + window.c xdg.c $builddir/pkg/libtls-bearssl/libtls.a.d $builddir/pkg/netbsd-curses/libcurses.a.d diff --git a/pkg/catgirl/patch/0001-Revert-Use-gnu-case-range-and-gnu-conditional-omitte.patch b/pkg/catgirl/patch/0001-Revert-Use-gnu-case-range-and-gnu-conditional-omitte.patch @@ -1,4 +1,4 @@ -From 48ce2b38033ae93717fd330c3cb6c0476e2979e5 Mon Sep 17 00:00:00 2001 +From beac90889183cb71ca3dfc8c9ada9175879b9c34 Mon Sep 17 00:00:00 2001 From: Michael Forney <mforney@mforney.org> Date: Thu, 7 May 2020 00:36:14 -0700 Subject: [PATCH] Revert "Use gnu-case-range and @@ -6,30 +6,32 @@ Subject: [PATCH] Revert "Use gnu-case-range and This reverts commit 75a6aa9258270169f43f56e063f1bfb57eebe56b. --- - Makefile | 3 +-- + Makefile | 2 -- command.c | 33 +++++++++++++++++++-------------- complete.c | 4 ++-- + edit.c | 2 +- handle.c | 45 +++++++++++++++++++++++++++------------------ - ui.c | 9 +++++++-- + input.c | 7 ++++++- url.c | 2 +- - 6 files changed, 57 insertions(+), 39 deletions(-) + window.c | 2 +- + 8 files changed, 57 insertions(+), 40 deletions(-) diff --git a/Makefile b/Makefile -index 48fc350..ac452d2 100644 +index 3abba03..9518cda 100644 --- a/Makefile +++ b/Makefile -@@ -2,8 +2,7 @@ PREFIX ?= /usr/local +@@ -2,9 +2,7 @@ PREFIX ?= /usr/local BINDIR ?= ${PREFIX}/bin MANDIR ?= ${PREFIX}/man -CEXTS = gnu-case-range gnu-conditional-omitted-operand --CFLAGS += -std=c11 -Wall -Wextra -Wpedantic ${CEXTS:%=-Wno-%} -+CFLAGS += -std=c11 -Wall -Wextra -Wpedantic + CFLAGS += -std=c11 -Wall -Wextra -Wpedantic -Wmissing-prototypes +-CFLAGS += ${CEXTS:%=-Wno-%} LDADD.libtls = -ltls LDADD.ncursesw = -lncursesw diff --git a/command.c b/command.c -index 335c396..d87e162 100644 +index a127af3..f5be51b 100644 --- a/command.c +++ b/command.c @@ -68,8 +68,8 @@ static int splitChunk(const char *cmd, uint id) { @@ -161,11 +163,24 @@ index 9e59db5..9ea1192 100644 return node; } +diff --git a/edit.c b/edit.c +index bb92edf..07705dd 100644 +--- a/edit.c ++++ b/edit.c +@@ -69,7 +69,7 @@ int editReserve(struct Edit *e, size_t index, size_t count) { + return -1; + } + if (e->len + count > e->cap) { +- size_t cap = (e->cap ?: 256); ++ size_t cap = (e->cap ? e->cap : 256); + while (cap < e->len + count) cap *= 2; + wchar_t *buf = realloc(e->buf, sizeof(*buf) * cap); + if (!buf) return -1; diff --git a/handle.c b/handle.c -index e460c7c..0cdda74 100644 +index 9f051c7..a4f1015 100644 --- a/handle.c +++ b/handle.c -@@ -299,9 +299,9 @@ static void handleReplyISupport(struct Message *msg) { +@@ -301,9 +301,9 @@ static void handleReplyISupport(struct Message *msg) { set(&network.setParamModes, setParam); set(&network.channelModes, channel); } else if (!strcmp(key, "EXCEPTS")) { @@ -177,7 +192,7 @@ index e460c7c..0cdda74 100644 } } } -@@ -354,7 +354,7 @@ static void handleJoin(struct Message *msg) { +@@ -356,7 +356,7 @@ static void handleJoin(struct Message *msg) { "\3%02d%s\3\t%s%s%sarrives in \3%02d%s\3", hash(msg->user), msg->nick, (msg->params[2] ? "(" : ""), @@ -186,7 +201,7 @@ index e460c7c..0cdda74 100644 (msg->params[2] ? "\17) " : ""), hash(msg->params[0]), msg->params[0] ); -@@ -386,12 +386,14 @@ static void handlePart(struct Message *msg) { +@@ -388,12 +388,14 @@ static void handlePart(struct Message *msg) { id, heat, tagTime(msg), "\3%02d%s\3\tleaves \3%02d%s\3%s%s", hash(msg->user), msg->nick, hash(msg->params[0]), msg->params[0], @@ -203,7 +218,7 @@ index e460c7c..0cdda74 100644 ); } -@@ -408,12 +410,14 @@ static void handleKick(struct Message *msg) { +@@ -410,12 +412,14 @@ static void handleKick(struct Message *msg) { hash(msg->user), msg->nick, completeColor(id, msg->params[1]), msg->params[1], hash(msg->params[0]), msg->params[0], @@ -220,7 +235,7 @@ index e460c7c..0cdda74 100644 ); completeRemove(id, msg->params[1]); if (kicked) completeClear(id); -@@ -464,13 +468,15 @@ static void handleQuit(struct Message *msg) { +@@ -466,13 +470,15 @@ static void handleQuit(struct Message *msg) { id, heat, tagTime(msg), "\3%02d%s\3\tleaves%s%s", hash(msg->user), msg->nick, @@ -238,7 +253,7 @@ index e460c7c..0cdda74 100644 ); } completeRemove(None, msg->nick); -@@ -732,7 +738,7 @@ static void handleReplyUserModeIs(struct Message *msg) { +@@ -734,7 +740,7 @@ static void handleReplyUserModeIs(struct Message *msg) { if (*ch == '+') continue; const char *name = UserModes[(byte)*ch]; ptr = seprintf( @@ -247,7 +262,7 @@ index e460c7c..0cdda74 100644 ); } uiFormat( -@@ -772,13 +778,13 @@ static void handleReplyChannelModeIs(struct Message *msg) { +@@ -774,13 +780,13 @@ static void handleReplyChannelModeIs(struct Message *msg) { assert(param < ParamCap); ptr = seprintf( ptr, end, ", +%c%s%s %s", @@ -263,7 +278,7 @@ index e460c7c..0cdda74 100644 ); } } -@@ -805,7 +811,7 @@ static void handleMode(struct Message *msg) { +@@ -807,7 +813,7 @@ static void handleMode(struct Message *msg) { hash(msg->user), msg->nick, (set ? "" : "un"), self.color, msg->params[0], @@ -272,7 +287,7 @@ index e460c7c..0cdda74 100644 ); } return; -@@ -962,7 +968,7 @@ static void handleErrorBanListFull(struct Message *msg) { +@@ -964,7 +970,7 @@ static void handleErrorBanListFull(struct Message *msg) { require(msg, false, 4); uiFormat( idFor(msg->params[1]), Warm, tagTime(msg), @@ -281,7 +296,7 @@ index e460c7c..0cdda74 100644 ); } -@@ -1067,14 +1073,15 @@ static void handleReplyWhoisIdle(struct Message *msg) { +@@ -1069,14 +1075,15 @@ static void handleReplyWhoisIdle(struct Message *msg) { } } char signon[sizeof("0000-00-00 00:00:00")]; @@ -299,7 +314,7 @@ index e460c7c..0cdda74 100644 ); } -@@ -1109,7 +1116,9 @@ static void handleReplyWhoisGeneric(struct Message *msg) { +@@ -1111,7 +1118,9 @@ static void handleReplyWhoisGeneric(struct Message *msg) { Network, Warm, tagTime(msg), "\3%02d%s\3\t%s%s%s", completeColor(Network, msg->params[1]), msg->params[1], @@ -310,7 +325,7 @@ index e460c7c..0cdda74 100644 ); } -@@ -1184,7 +1193,7 @@ static bool isMention(const struct Message *msg) { +@@ -1186,7 +1195,7 @@ static bool isMention(const struct Message *msg) { const char *match = msg->params[1]; while (NULL != (match = strstr(match, self.nick))) { char a = (match > msg->params[1] ? match[-1] : ' '); @@ -319,40 +334,31 @@ index e460c7c..0cdda74 100644 if ((isspace(a) || ispunct(a)) && (isspace(b) || ispunct(b))) { return true; } -diff --git a/ui.c b/ui.c -index 2789bd7..4b87a1f 100644 ---- a/ui.c -+++ b/ui.c -@@ -497,7 +497,7 @@ static size_t windowTop(const struct Window *window) { - } - - static size_t windowBottom(const struct Window *window) { -- size_t bottom = BufferCap - (window->scroll ?: 1); -+ size_t bottom = BufferCap - (window->scroll ? window->scroll : 1); - if (window->scroll) bottom -= SplitLines + MarkerLines; - return bottom; - } -@@ -976,7 +976,6 @@ static void keyCode(int code) { - break; case KeyMetaGt: scrollTo(window, 0); - break; case KeyMetaLt: scrollTop(window); +diff --git a/input.c b/input.c +index f3813c4..820bf3c 100644 +--- a/input.c ++++ b/input.c +@@ -417,7 +417,6 @@ static void keyCode(int code) { + break; case KeyMetaGt: windowScroll(ScrollAll, -1); + break; case KeyMetaLt: windowScroll(ScrollAll, +1); -- break; case KeyMeta0 ... KeyMeta9: uiShowNum(code - KeyMeta0); - break; case KeyMetaA: showAuto(); - break; case KeyMetaB: edit(id, EditPrevWord, 0); - break; case KeyMetaD: edit(id, EditDeleteNextWord, 0); -@@ -1006,6 +1005,12 @@ static void keyCode(int code) { - break; case KEY_SEND: scrollTo(window, 0); - break; case KEY_SHOME: scrollTo(window, BufferCap); - break; case KEY_UP: windowScroll(window, +1); +- break; case KeyMeta0 ... KeyMeta9: windowShow(code - KeyMeta0); + break; case KeyMetaA: windowAuto(); + break; case KeyMetaB: error = editFn(edit, EditPrevWord); + break; case KeyMetaD: error = editFn(edit, EditDeleteNextWord); +@@ -448,6 +447,12 @@ static void keyCode(int code) { + break; case KEY_SEND: windowScroll(ScrollAll, -1); + break; case KEY_SHOME: windowScroll(ScrollAll, +1); + break; case KEY_UP: windowScroll(ScrollOne, +1); + + break; default: { + if (code >= KeyMeta0 && code <= KeyMeta9) { -+ uiShowNum(code - KeyMeta0); ++ windowShow(code - KeyMeta0); + } + } } + if (error) err(EX_OSERR, "editFn"); } - diff --git a/url.c b/url.c index 219a83c..9c721e0 100644 --- a/url.c @@ -366,6 +372,19 @@ index 219a83c..9c721e0 100644 || writeString(file, url->url); if (error) return error; } +diff --git a/window.c b/window.c +index ee0911f..d7bc472 100644 +--- a/window.c ++++ b/window.c +@@ -220,7 +220,7 @@ static size_t windowTop(const struct Window *window) { + } + + static size_t windowBottom(const struct Window *window) { +- size_t bottom = BufferCap - (window->scroll ?: 1); ++ size_t bottom = BufferCap - (window->scroll ? window->scroll : 1); + if (window->scroll) bottom -= SplitLines + MarkerLines; + return bottom; + } -- 2.34.1 diff --git a/pkg/catgirl/patch/0002-Break-out-of-input-loop-when-UI-is-hidden.patch b/pkg/catgirl/patch/0002-Break-out-of-input-loop-when-UI-is-hidden.patch @@ -1,4 +1,4 @@ -From 923a6d5c2d391af83c8b108c3cf59d5e709e25b0 Mon Sep 17 00:00:00 2001 +From 535cd53babbd4d827c7330e223c5e17b1f5128c3 Mon Sep 17 00:00:00 2001 From: Michael Forney <mforney@mforney.org> Date: Mon, 31 May 2021 16:37:09 -0700 Subject: [PATCH] Break out of input loop when UI is hidden @@ -6,22 +6,22 @@ Subject: [PATCH] Break out of input loop when UI is hidden Otherwise, wget_wch() is called immediately after hiding the UI with M-l, which restores curses mode when using NetBSD's libcurses. --- - ui.c | 2 +- + input.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -diff --git a/ui.c b/ui.c -index 4b87a1f..c92c0df 100644 ---- a/ui.c -+++ b/ui.c -@@ -1089,7 +1089,7 @@ void uiRead(void) { +diff --git a/input.c b/input.c +index 820bf3c..f396fbd 100644 +--- a/input.c ++++ b/input.c +@@ -543,7 +543,7 @@ void inputRead(void) { wint_t ch; static bool paste, style, literal; -- for (int ret; ERR != (ret = wget_wch(input, &ch));) { -+ for (int ret; !hidden && ERR != (ret = wget_wch(input, &ch));) { - if (ret == KEY_CODE_YES && ch == KeyPasteOn) { - paste = true; - } else if (ret == KEY_CODE_YES && ch == KeyPasteOff) { +- for (int ret; ERR != (ret = wget_wch(uiInput, &ch));) { ++ for (int ret; !waiting && ERR != (ret = wget_wch(uiInput, &ch));) { + bool tabbing = false; + size_t pos = edits[tab.id].pos; + bool spr = uiSpoilerReveal; -- 2.34.1 diff --git a/pkg/catgirl/patch/0003-Resize-status-window-explicitly-during-resize.patch b/pkg/catgirl/patch/0003-Resize-status-window-explicitly-during-resize.patch @@ -1,4 +1,4 @@ -From 56114f444867f3c13c7de1abbab87818007bba21 Mon Sep 17 00:00:00 2001 +From dd47da4db71e820aed9a0cd29d7855903216de65 Mon Sep 17 00:00:00 2001 From: Michael Forney <mforney@mforney.org> Date: Mon, 31 May 2021 16:40:28 -0700 Subject: [PATCH] Resize status window explicitly during resize() @@ -11,17 +11,17 @@ status window explicitly. 1 file changed, 1 insertion(+) diff --git a/ui.c b/ui.c -index c92c0df..1e9e03f 100644 +index 64bd6ce..4d0012c 100644 --- a/ui.c +++ b/ui.c -@@ -657,6 +657,7 @@ static void windowReflow(struct Window *window) { +@@ -274,6 +274,7 @@ void uiFormat( - static void resize(void) { - wclear(main); -+ wresize(status, 1, COLS); - wresize(main, MAIN_LINES, COLS); - for (uint num = 0; num < windows.len; ++num) { - windowReflow(windows.ptrs[num]); + void uiResize(void) { + wclear(uiMain); ++ wresize(uiStatus, 1, COLS); + wresize(uiMain, MAIN_LINES, COLS); + windowResize(); + } -- 2.34.1 diff --git a/pkg/catgirl/patch/0004-HACK-Disable-colorized-output-in-M-l-window-list.patch b/pkg/catgirl/patch/0004-HACK-Disable-colorized-output-in-M-l-window-list.patch @@ -1,4 +1,4 @@ -From 9c8a70c58b3b95dcccf3e91f570781938d517dcd Mon Sep 17 00:00:00 2001 +From 2c3519fb68301db5a2aef8715b3cd6ea29fa45ae Mon Sep 17 00:00:00 2001 From: Michael Forney <mforney@mforney.org> Date: Thu, 3 Jun 2021 00:54:30 -0700 Subject: [PATCH] [HACK] Disable colorized output in M-l window list @@ -6,26 +6,26 @@ Subject: [PATCH] [HACK] Disable colorized output in M-l window list vid_attr is not supported by NetBSD's libcurses, and this is not crucial feature. --- - ui.c | 2 -- + window.c | 2 -- 1 file changed, 2 deletions(-) -diff --git a/ui.c b/ui.c -index 1e9e03f..dcdf6ae 100644 ---- a/ui.c -+++ b/ui.c -@@ -684,7 +684,6 @@ static void windowList(const struct Window *window) { - +diff --git a/window.c b/window.c +index d7bc472..b322c55 100644 +--- a/window.c ++++ b/window.c +@@ -294,7 +294,6 @@ void windowBare(void) { char buf[TimeCap]; - strftime(buf, sizeof(buf), uiTime.format, localtime(&line->time)); -- vid_attr(colorAttr(Colors[Gray]), colorPair(Colors[Gray], -1), NULL); + struct Style style = { .fg = Gray, .bg = Default }; + strftime(buf, sizeof(buf), windowTime.format, localtime(&line->time)); +- vid_attr(uiAttr(style), uiPair(style), NULL); printf("%s ", buf); bool align = false; -@@ -700,7 +699,6 @@ static void windowList(const struct Window *window) { +@@ -310,7 +309,6 @@ void windowBare(void) { size_t tab = strcspn(str, "\t"); if (tab < len) len = tab; -- vid_attr(styleAttr(style), stylePair(style), NULL); +- vid_attr(uiAttr(style), uiPair(style), NULL); printf("%.*s", (int)len, str); str += len; } diff --git a/pkg/catgirl/patch/0005-Don-t-rely-on-internal-struct-tags-of-curses-impleme.patch b/pkg/catgirl/patch/0005-Don-t-rely-on-internal-struct-tags-of-curses-impleme.patch @@ -0,0 +1,37 @@ +From 28e65915e9bb137266d8af78233f9e04c9c30130 Mon Sep 17 00:00:00 2001 +From: Michael Forney <mforney@mforney.org> +Date: Sun, 13 Mar 2022 15:17:58 -0700 +Subject: [PATCH] Don't rely on internal struct tags of curses implementation + +--- + chat.h | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +diff --git a/chat.h b/chat.h +index 1c46f00..f65f2f0 100644 +--- a/chat.h ++++ b/chat.h +@@ -27,6 +27,7 @@ + + #include <assert.h> + #include <ctype.h> ++#include <curses.h> + #include <err.h> + #include <getopt.h> + #include <stdarg.h> +@@ -309,9 +310,9 @@ enum { + InputCols = 1024, + }; + extern char uiTitle[TitleCap]; +-extern struct _win_st *uiStatus; +-extern struct _win_st *uiMain; +-extern struct _win_st *uiInput; ++extern WINDOW *uiStatus; ++extern WINDOW *uiMain; ++extern WINDOW *uiInput; + extern bool uiSpoilerReveal; + extern struct Util uiNotifyUtil; + void uiInit(void); +-- +2.34.1 + diff --git a/pkg/catgirl/ver b/pkg/catgirl/ver @@ -1 +1 @@ -2.0a r0 +2.1 r0