commit - ea8695dc16abaaec6b0f73500d1b8bc0c43b88ad
commit + a5c3e03db696b4501ec5d89a468d05e96e1cae44
blob - b74c5ce7f4397b3d7d60c58c9180459d235feb23
blob + 71dc1c2a3f2bc50932abd94c2f58a3a79d759729
--- gemtext.c
+++ gemtext.c
#include <stdlib.h>
static int gemtext_parse(struct parser*, const char*, size_t);
-static void gemtext_free(struct parser*);
+static int gemtext_free(struct parser*);
static int parse_text(struct parser*, enum line_type, const char*, size_t);
static int parse_link(struct parser*, enum line_type, const char*, size_t);
return set_buf(p, b, len);
}
-static void
+static int
gemtext_free(struct parser *p)
{
+ enum line_type t;
+
+ /* flush the buffer */
+ if (p->len != 0) {
+ t = detect_line_type(p->buf, p->len, p->flags);
+ if (!parsers[t](p, t, p->buf, p->len))
+ return 0;
+ if (p->flags && !emit_line(p, LINE_PRE_END, NULL, NULL))
+ return 0;
+ }
+
free(p->buf);
+ return 1;
}
blob - 6ff71d7a72cabe2d1707e64e327cfba3f77372a2
blob + 1330c88e814230f9bc388e0dd86f31c2384ca4fd
--- telescope.c
+++ telescope.c
static void
handle_imsg_eof(struct imsg *imsg, size_t datalen)
{
- /* printf("===== EOF\n"); */
- /* event_loopbreak(); */
+ struct tab *t;
+
+ t = tab_by_id(imsg->hdr.peerid);
+ if (!t->page.free(&t->page))
+ die();
+
+ ui_on_tab_refresh(t);
}
static void
blob - 785fae6dcf27d3a61d967a2b59313424376458e8
blob + fba4108e1f8e0cf7637d6dce7f7e1c4d31f4f1dc
--- telescope.h
+++ telescope.h
/* typedef void (*initparserfn)(struct parser*); */
typedef int (*parsechunkfn)(struct parser*, const char*, size_t);
-typedef void (*parserfreefn)(struct parser*);
+typedef int (*parserfreefn)(struct parser*);
typedef void (imsg_handlerfn)(struct imsg*, size_t);