diff options
author | wrmr | 2024-11-08 23:30:42 -0500 |
---|---|---|
committer | wrmr | 2024-11-08 23:30:42 -0500 |
commit | cd3626642755359eecf64d05e3f9db3d8b00ed24 (patch) | |
tree | e7270b2c779c7aeb0c1b88ed2dee67d4c264854a /parse.c | |
parent | 012ed5bd6455ce291741ad540a5e356e4810133b (diff) |
use strv_t even more
Diffstat (limited to 'parse.c')
-rw-r--r-- | parse.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/parse.c b/parse.c index b62ea8a..df416ac 100644 --- a/parse.c +++ b/parse.c @@ -10,16 +10,16 @@ int isurlch(char c) { } void parse_plain_url(struct doc *d, struct doc_line *l, size_t i) { - char url[l->len + 1]; size_t start = i - 1; while (start > 0 && isalpha(l->txt[start])) start--; if (!isalpha(l->txt[start])) start++; size_t end = i + 3; while (end < l->len && isurlch(l->txt[end])) end++; if (end == i + 3) return; - size_t urln = end - start; - memcpy(url, &l->txt[start], urln); - url[urln] = 0; + strv_t url = { + &l->txt[start], + end - start + }; l->link = doc_add_link(d, url); } @@ -75,8 +75,7 @@ int parse_gophermap_line(struct doc *d, strv_t ln) { if (urln < sizeof url) url[urln++] = '/'; if (urln < sizeof url) url[urln++] = bits.item_type; urln = scatss(url, urln, sizeof url, bits.sel); - url[urln] = 0; - doc_set_link(d, doc_add_link(d, url)); + doc_set_link(d, doc_add_link(d, (strv_t) { url, urln })); case 'i': doc_add_text(d, bits.dstr); doc_new_line(d); |