Commit Diff


commit - c1d27b0e114e6a65f7979971940df212f00bb2ae
commit + fd1c80ce62030c6e75bb05db1aee43425d70fc97
blob - 4c0614a1bd8fd277ba066453c872da3d66032d9f
blob + 0a13259a4b223644c7aacff979f4156a200fc534
--- fs.c
+++ fs.c
@@ -141,12 +141,12 @@ is_dir(FILE *fp)
 	return S_ISDIR(sb.st_mode);
 }
 
-static struct parser *
+static const struct parser *
 file_type(const char *path)
 {
 	const struct mapping {
-		const char	*ext;
-		struct parser	*parser;
+		const char		*ext;
+		const struct parser	*parser;
 	} ms[] = {
 		{"diff",	&textpatch_parser},
 		{"gemini",	&gemtext_parser},
@@ -173,12 +173,12 @@ file_type(const char *path)
 void
 fs_load_url(struct tab *tab, const char *url)
 {
-	const char	*bpath = "bookmarks.gmi", *fallback = "# Not found\n";
-	struct parser	*parser = &gemtext_parser;
-	char		 path[PATH_MAX];
-	FILE		*fp = NULL;
-	size_t		 i;
-	char		 buf[BUFSIZ];
+	const char		*bpath = "bookmarks.gmi", *fallback = "# Not found\n";
+	const struct parser	*parser = &gemtext_parser;
+	char			 path[PATH_MAX];
+	FILE			*fp = NULL;
+	size_t			 i;
+	char			 buf[BUFSIZ];
 	struct page {
 		const char	*name;
 		const char	*path;
blob - b5766b6d317771d45938c3ce5e19da15a27d85e8
blob + 05a7ed2161e1997ede111bce400c5526f155b9e9
--- identity.c
+++ identity.c
@@ -80,7 +80,7 @@ size_t		 about_new_len;
 const uint8_t	*bookmarks;
 size_t		 bookmarks_len;
 
-struct parser gemtext_parser, textplain_parser, textpatch_parser;
+const struct parser gemtext_parser, textplain_parser, textpatch_parser;
 
 void	 load_page_from_str(struct tab *tab, const char *page) { return; }
 void	 erase_buffer(struct buffer *buffer) { return; }
blob - b2a57a944ecc6774de923e03763976a4318f740a
blob + 0e92a2adae57aa68d26f5f577c6b4cad5694191d
--- mcache.c
+++ mcache.c
@@ -38,12 +38,12 @@ static size_t		npages;
 static size_t		tot;
 
 struct mcache_entry {
-	time_t		 ts;
-	struct parser	*parser;
-	int		 trust;
-	char		*buf;
-	size_t		 buflen;
-	char		 url[];
+	time_t			 ts;
+	const struct parser	*parser;
+	int			 trust;
+	char			*buf;
+	size_t			 buflen;
+	char			 url[];
 };
 
 static void
blob - 39bb0be8f2462d3078a206abc9626949573f966c
blob + 7d0eeaee1b0b0497e8328b8d0e6eb513f075d067
--- mime.c
+++ mime.c
@@ -27,8 +27,8 @@
 static int	check_for_utf8(char*);
 
 static const struct parser_table {
-	const char	*mediatype;
-	struct parser	*parser;
+	const char		*mediatype;
+	const struct parser	*parser;
 } ptable[] = {
 	{ "text/gemini",	&gemtext_parser },
 	{ "text/x-patch",	&textpatch_parser },
blob - 1bd28ce6270695d16e124b303c635ab3451f683a
blob + 8378bc5ceea7d3569551817640f475a78fe5933a
--- parser.c
+++ parser.c
@@ -26,7 +26,7 @@
 static int parser_foreach_line(struct buffer *, const char *, size_t);
 
 void
-parser_init(struct buffer *buffer, struct parser *p)
+parser_init(struct buffer *buffer, const struct parser *p)
 {
 	erase_buffer(buffer);
 
@@ -39,7 +39,7 @@ parser_init(struct buffer *buffer, struct parser *p)
 int
 parser_parse(struct buffer *buffer, const char *chunk, size_t len)
 {
-	struct parser *p = buffer->parser;
+	const struct parser *p = buffer->parser;
 
 	if (p->parse)
 		return p->parse(buffer, chunk, len);
@@ -69,7 +69,7 @@ int
 parser_free(struct tab *tab)
 {
 	struct buffer		*buffer = &tab->buffer;
-	struct parser		*p = buffer->parser;
+	const struct parser	*p = buffer->parser;
 	int			 r = 1;
 	char			*tilde, *slash;
 
@@ -109,10 +109,10 @@ parser_free(struct tab *tab)
 int
 parser_serialize(struct buffer *b, FILE *fp)
 {
-	struct parser	*p = b->parser;
-	struct line	*line;
-	const char	*text;
-	int		 r;
+	const struct parser	*p = b->parser;
+	struct line		*line;
+	const char		*text;
+	int			 r;
 
 	if (p->serialize != NULL)
 		return p->serialize(b, fp);
@@ -176,10 +176,10 @@ parser_set_buf(struct buffer *b, const char *buf, size
 static int
 parser_foreach_line(struct buffer *b, const char *buf, size_t size)
 {
-	struct parser	*p = b->parser;
-	char		*beg, *end;
-	unsigned int	 ch;
-	size_t		 i, l, len;
+	const struct parser	*p = b->parser;
+	char			*beg, *end;
+	unsigned int		 ch;
+	size_t			 i, l, len;
 
 	if (!parser_append(b, buf, size))
 		return 0;
blob - 0eac68fabed364415954fc82b90e8e820833e5bc
blob + 77525b13bd1de27bc09084234997439a13737a07
--- parser.h
+++ parser.h
@@ -30,7 +30,7 @@ struct parser {
 	int		(*serialize)(struct buffer *, FILE *);
 };
 
-void	 parser_init(struct buffer *, struct parser *);
+void	 parser_init(struct buffer *, const struct parser *);
 int	 parser_parse(struct buffer *, const char *, size_t);
 int	 parser_parsef(struct buffer *, const char *, ...);
 int	 parser_free(struct tab *);
@@ -39,9 +39,9 @@ int	 parser_serialize(struct buffer *, FILE *);
 int	 parser_append(struct buffer *, const char *, size_t);
 int	 parser_set_buf(struct buffer *, const char *, size_t);
 
-extern struct parser	 gemtext_parser;
-extern struct parser	 gophermap_parser;
-extern struct parser	 textpatch_parser;
-extern struct parser	 textplain_parser;
+extern const struct parser	 gemtext_parser;
+extern const struct parser	 gophermap_parser;
+extern const struct parser	 textpatch_parser;
+extern const struct parser	 textplain_parser;
 
 #endif
blob - ccab1ade5afda346a97b60e0408826b0cfd29088
blob + d4b1532f36d28b1ffe6edab81972ea9a3fbfff2e
--- parser_gemtext.c
+++ parser_gemtext.c
@@ -41,7 +41,7 @@ static int	parse_link(struct buffer *, const char*, si
 static int	parse_title(struct buffer *, const char*, size_t);
 static void	search_title(struct buffer *, enum line_type);
 
-struct parser gemtext_parser = {
+const struct parser gemtext_parser = {
 	.name = "text/gemini",
 	.parseline = &gemtext_parse_line,
 	.free = &gemtext_free,
blob - 8c9d0ec372c899409d2ce5a72c7d19c84e3deda0
blob + bff31442688fddc4f4b74b0f4385ff6b72ae4139
--- parser_gophermap.c
+++ parser_gophermap.c
@@ -42,7 +42,7 @@ static void	gm_parse_selector(char *, struct gm_select
 static int	gm_parse_line(struct buffer *, const char *, size_t);
 static int	gm_serialize(struct buffer *, FILE *);
 
-struct parser gophermap_parser = {
+const struct parser gophermap_parser = {
 	.name = "gophermap",
 	.parseline = &gm_parse_line,
 	.serialize = &gm_serialize,
blob - 677a8d446f05d855f392f515d096d910a10a3d9e
blob + 1cedf3c9f52b03bbb663825a44462ef556f833d8
--- parser_textpatch.c
+++ parser_textpatch.c
@@ -30,7 +30,7 @@
 static int	tpatch_emit_line(struct buffer *, const char *, size_t);
 static int	tpatch_parse_line(struct buffer *, const char *, size_t);
 
-struct parser textpatch_parser = {
+const struct parser textpatch_parser = {
 	.name = "text/x-patch",
 	.parseline = &tpatch_parse_line,
 	.initflags = PARSER_IN_PATCH_HDR,
blob - c516f4a24a997ad28535976e391732f755b652e1
blob + 33645f01424e35748d8eb886bcfc083a71760df4
--- parser_textplain.c
+++ parser_textplain.c
@@ -28,7 +28,7 @@
 
 static int	textplain_parse_line(struct buffer *, const char *, size_t);
 
-struct parser textplain_parser = {
+const struct parser textplain_parser = {
 	.name = "text/plain",
 	.parseline = &textplain_parse_line,
 };
blob - d6f56be2990aa0037fc88e9091cdec9895b751aa
blob + 3520b8ccfe4a9e44bc7f12180e6c0e5c85bddfdc
--- telescope.h
+++ telescope.h
@@ -114,7 +114,7 @@ struct buffer {
 #define PARSER_IN_PRE	2
 #define PARSER_IN_PATCH_HDR 4
 	int			 parser_flags;
-	struct parser		*parser;
+	const struct parser	*parser;
 
 	size_t			 last_line_off;
 	int			 force_redraw;