logo

oasis

Own branch of Oasis Linux (upstream: <https://git.sr.ht/~mcf/oasis/>) git clone https://anongit.hacktivis.me/git/oasis.git
commit: 8faead3f090c83a7ee92918509f2bd5bac2ef675
parent 02659ab48c4d069498e7a364fa4e70176745dfd4
Author: Michael Forney <mforney@mforney.org>
Date:   Tue, 28 Apr 2020 23:37:43 -0700

vis: Update to latest git

Diffstat:

Dpkg/vis/patch/0001-Avoid-use-of-VLAs.patch256-------------------------------------------------------------------------------
Rpkg/vis/patch/0002-HACK-Avoid-wide-string-literals-for-now.patch -> pkg/vis/patch/0001-HACK-Avoid-wide-string-literals-for-now.patch0
Mpkg/vis/ver2+-
3 files changed, 1 insertion(+), 257 deletions(-)

diff --git a/pkg/vis/patch/0001-Avoid-use-of-VLAs.patch b/pkg/vis/patch/0001-Avoid-use-of-VLAs.patch @@ -1,256 +0,0 @@ -From f436524892def7a6d07c5bfeec22422f35496054 Mon Sep 17 00:00:00 2001 -From: Michael Forney <mforney@mforney.org> -Date: Fri, 31 Jan 2020 23:33:28 -0800 -Subject: [PATCH] Avoid use of VLAs - ---- - sam.c | 6 +++--- - text-regex-tre.c | 2 +- - text-regex.c | 4 ++-- - text-regex.h | 2 ++ - ui-terminal.c | 32 +++++++++++++++++--------------- - view.c | 13 +++++++++++-- - vis-digraph.c | 8 ++++++-- - 7 files changed, 42 insertions(+), 25 deletions(-) - -diff --git a/sam.c b/sam.c -index 11d245b..4d3c49b 100644 ---- a/sam.c -+++ b/sam.c -@@ -1380,9 +1380,9 @@ static int extract(Vis *vis, Win *win, Command *cmd, const char *argv[], Selecti - bool trailing_match = false; - size_t start = range->start, end = range->end, last_start = EPOS; - size_t nsub = 1 + text_regex_nsub(cmd->regex); -- if (nsub > 10) -- nsub = 10; -- RegexMatch match[nsub]; -+ if (nsub > MAX_REGEX_SUB) -+ nsub = MAX_REGEX_SUB; -+ RegexMatch match[MAX_REGEX_SUB]; - while (start < end || trailing_match) { - trailing_match = false; - char c; -diff --git a/text-regex-tre.c b/text-regex-tre.c -index da377b4..eccbafb 100644 ---- a/text-regex-tre.c -+++ b/text-regex-tre.c -@@ -136,7 +136,7 @@ int text_search_range_forward(Text *txt, size_t pos, size_t len, Regex *r, size_ - r->it = text_iterator_get(txt, pos); - r->end = pos+len; - -- regmatch_t match[nmatch]; -+ regmatch_t match[MAX_REGEX_SUB]; - int ret = tre_reguexec(&r->regex, &r->str_source, nmatch, match, eflags); - if (!ret) { - for (size_t i = 0; i < nmatch; i++) { -diff --git a/text-regex.c b/text-regex.c -index 56ecafc..7c6812e 100644 ---- a/text-regex.c -+++ b/text-regex.c -@@ -45,7 +45,7 @@ int text_search_range_forward(Text *txt, size_t pos, size_t len, Regex *r, size_ - return REG_NOMATCH; - char *cur = buf, *end = buf + len; - int ret = REG_NOMATCH; -- regmatch_t match[nmatch]; -+ regmatch_t match[MAX_REGEX_SUB]; - for (size_t junk = len; len > 0; len -= junk, pos += junk) { - ret = regexec(&r->regex, cur, nmatch, match, eflags); - if (!ret) { -@@ -73,7 +73,7 @@ int text_search_range_backward(Text *txt, size_t pos, size_t len, Regex *r, size - return REG_NOMATCH; - char *cur = buf, *end = buf + len; - int ret = REG_NOMATCH; -- regmatch_t match[nmatch]; -+ regmatch_t match[MAX_REGEX_SUB]; - for (size_t junk = len; len > 0; len -= junk, pos += junk) { - char *next; - if (!regexec(&r->regex, cur, nmatch, match, eflags)) { -diff --git a/text-regex.h b/text-regex.h -index 45054c8..dd87c1c 100644 ---- a/text-regex.h -+++ b/text-regex.h -@@ -9,6 +9,8 @@ - #endif - #include "text.h" - -+#define MAX_REGEX_SUB 10 -+ - typedef struct Regex Regex; - typedef Filerange RegexMatch; - -diff --git a/ui-terminal.c b/ui-terminal.c -index bcf4f48..b939947 100644 ---- a/ui-terminal.c -+++ b/ui-terminal.c -@@ -198,11 +198,11 @@ static void ui_draw_line(UiTerm *tui, int x, int y, char c, enum UiStyle style_i - if (x < 0 || x >= tui->width || y < 0 || y >= tui->height) - return; - CellStyle style = tui->styles[style_id]; -- Cell (*cells)[tui->width] = (void*)tui->cells; -+ Cell *cells = tui->cells + y * tui->width; - while (x < tui->width) { -- cells[y][x].data[0] = c; -- cells[y][x].data[1] = '\0'; -- cells[y][x].style = style; -+ cells[x].data[0] = c; -+ cells[x].data[1] = '\0'; -+ cells[x].style = style; - x++; - } - } -@@ -213,17 +213,17 @@ static void ui_draw_string(UiTerm *tui, int x, int y, const char *str, UiTermWin - return; - CellStyle style = tui->styles[(win ? win->id : 0)*UI_STYLE_MAX + style_id]; - // FIXME: does not handle double width characters etc, share code with view.c? -- Cell (*cells)[tui->width] = (void*)tui->cells; -- const size_t cell_size = sizeof(cells[0][0].data)-1; -+ Cell *cells = tui->cells + y * tui->width; -+ const size_t cell_size = sizeof(cells[0].data)-1; - for (const char *next = str; *str && x < tui->width; str = next) { - do next++; while (!ISUTF8(*next)); - size_t len = next - str; - if (!len) - break; - len = MIN(len, cell_size); -- strncpy(cells[y][x].data, str, len); -- cells[y][x].data[len] = '\0'; -- cells[y][x].style = style; -+ strncpy(cells[x].data, str, len); -+ cells[x].data[len] = '\0'; -+ cells[x].style = style; - x++; - } - } -@@ -232,7 +232,6 @@ static void ui_window_draw(UiWin *w) { - UiTermWin *win = (UiTermWin*)w; - UiTerm *ui = win->ui; - View *view = win->win->view; -- Cell (*cells)[ui->width] = (void*)ui->cells; - int width = win->width, height = win->height; - const Line *line = view_lines_first(view); - bool status = win->options & UI_OPTION_STATUSBAR; -@@ -250,9 +249,10 @@ static void ui_window_draw(UiWin *w) { - Selection *sel = view_selections_primary_get(view); - const Line *cursor_line = view_cursors_line_get(sel); - size_t cursor_lineno = cursor_line->lineno; -- char buf[sidebar_width+1]; -+ char buf[(sizeof(size_t) * CHAR_BIT + 2) / 3 + 1]; - int x = win->x, y = win->y; - int view_width = view_width_get(view); -+ Cell *cells = ui->cells + y * ui->width; - if (x + sidebar_width + view_width > ui->width) - view_width = ui->width - x - sidebar_width; - for (const Line *l = line; l; l = l->next) { -@@ -276,7 +276,8 @@ static void ui_window_draw(UiWin *w) { - prev_lineno = l->lineno; - } - debug("draw-window: [%d][%d] ... cells[%d][%d]\n", y, x+sidebar_width, y, view_width); -- memcpy(&cells[y++][x+sidebar_width], l->cells, sizeof(Cell) * view_width); -+ memcpy(&cells[x+sidebar_width], l->cells, sizeof(Cell) * view_width); -+ cells += ui->width; - } - } - -@@ -299,7 +300,6 @@ static void ui_arrange(Ui *ui, enum UiLayout layout) { - debug("ui-arrange\n"); - UiTerm *tui = (UiTerm*)ui; - tui->layout = layout; -- Cell (*cells)[tui->width] = (void*)tui->cells; - int n = 0, m = !!tui->info[0], x = 0, y = 0; - for (UiTermWin *win = tui->windows; win; win = win->next) { - if (win->options & UI_OPTION_ONELINE) -@@ -325,9 +325,11 @@ static void ui_arrange(Ui *ui, enum UiLayout layout) { - ui_window_move(win, x, y); - x += w; - if (n) { -+ Cell *cells = tui->cells; - for (int i = 0; i < max_height; i++) { -- strcpy(cells[i][x].data,"│"); -- cells[i][x].style = tui->styles[UI_STYLE_SEPARATOR]; -+ strcpy(cells[x].data,"│"); -+ cells[x].style = tui->styles[UI_STYLE_SEPARATOR]; -+ cells += tui->width; - } - x++; - } -diff --git a/view.c b/view.c -index 1bffb4f..d69f488 100644 ---- a/view.c -+++ b/view.c -@@ -55,6 +55,7 @@ struct Selection { - - struct View { - Text *text; /* underlying text management */ -+ char *textbuf; /* scratch buffer used for drawing */ - UiWin *ui; /* corresponding ui window */ - Cell cell_blank; /* used for empty/blank cells */ - int width, height; /* size of display area */ -@@ -328,7 +329,7 @@ void view_draw(View *view) { - /* read a screenful of text considering each character as 4-byte UTF character*/ - const size_t size = view->width * view->height * 4; - /* current buffer to work with */ -- char text[size+1]; -+ char *text = view->textbuf; - /* remaining bytes to process in buffer */ - size_t rem = text_bytes_get(view->text, view->start, size, text); - /* NUL terminate text section */ -@@ -454,14 +455,21 @@ bool view_resize(View *view, int width, int height) { - view->need_update = true; - return true; - } -+ char *textbuf = malloc(width * height * 4 + 1); -+ if (!textbuf) -+ return false; - size_t lines_size = height*(sizeof(Line) + width*sizeof(Cell)); - if (lines_size > view->lines_size) { - Line *lines = realloc(view->lines, lines_size); -- if (!lines) -+ if (!lines) { -+ free(textbuf); - return false; -+ } - view->lines = lines; - view->lines_size = lines_size; - } -+ free(view->textbuf); -+ view->textbuf = textbuf; - view->width = width; - view->height = height; - memset(view->lines, 0, view->lines_size); -@@ -482,6 +490,7 @@ void view_free(View *view) { - return; - while (view->selections) - selection_free(view->selections); -+ free(view->textbuf); - free(view->lines); - free(view); - } -diff --git a/vis-digraph.c b/vis-digraph.c -index 452ede3..35a5a17 100644 ---- a/vis-digraph.c -+++ b/vis-digraph.c -@@ -2,6 +2,7 @@ - #include <termios.h> - #include <locale.h> - #include <stdio.h> -+#include <stdlib.h> - #include <string.h> - #include <unistd.h> - #include <wchar.h> -@@ -1993,8 +1994,11 @@ int main(int argc, char *argv[]) { - return 1; - } - -- wchar_t runes[argc-1]; -- memset(runes, 0, sizeof(runes)); -+ wchar_t *runes = calloc(argc-1, sizeof(runes[0])); -+ if (!runes) { -+ perror(NULL); -+ return 1; -+ } - - for (int i = 1; i < argc; i++) { - int l = lookup(argv[i], &runes[i-1]); --- -2.25.0 - diff --git a/pkg/vis/patch/0002-HACK-Avoid-wide-string-literals-for-now.patch b/pkg/vis/patch/0001-HACK-Avoid-wide-string-literals-for-now.patch diff --git a/pkg/vis/ver b/pkg/vis/ver @@ -1 +1 @@ -0.5-120-g24630d2 r1 +0.5-191-g7648280 r0