commit - c1d27b0e114e6a65f7979971940df212f00bb2ae
commit + fd1c80ce62030c6e75bb05db1aee43425d70fc97
blob - 4c0614a1bd8fd277ba066453c872da3d66032d9f
blob + 0a13259a4b223644c7aacff979f4156a200fc534
--- fs.c
+++ fs.c
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},
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
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
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
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
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);
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);
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;
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);
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
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 *);
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
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
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
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
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
#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;