diff options
-rw-r--r-- | buf.c | 2 | ||||
-rw-r--r-- | buf.h | 2 | ||||
-rw-r--r-- | doc.c | 5 | ||||
-rw-r--r-- | doc.h | 3 |
4 files changed, 10 insertions, 2 deletions
@@ -25,7 +25,7 @@ void buf_grow(buf_t *b, size_t n) { } } -void buf_cat(buf_t *b, char *src, size_t n) { +void buf_cat(buf_t *b, const char *src, size_t n) { buf_grow(b, n); memcpy(&b->buf[b->sz], src, n); b->sz += n; @@ -12,7 +12,7 @@ void buf_init(buf_t *, size_t); void buf_grow(buf_t *, size_t); void buf_free(buf_t *); -void buf_cat(buf_t *b, char *src, size_t n); +void buf_cat(buf_t *b, const char *src, size_t n); void buf_catc(buf_t *b, char c); #endif @@ -54,6 +54,11 @@ void doc_add_textn(struct doc *d, const char *s, size_t n) { dl->len += n; } +unsigned short doc_add_link(struct doc *d, const char *url) { + buf_cat(&d->lnk, url, strlen(url) + 1); + return d->linkc++; +} + /* line navigation */ struct doc_line *doc_line_at(struct doc *d, size_t ofs) { @@ -20,6 +20,7 @@ enum doc_type { struct doc { buf_t txt, lnk; size_t latest; + unsigned short linkc; }; void doc_init(struct doc *); @@ -34,4 +35,6 @@ struct doc_line *doc_line_at(struct doc *d, size_t ofs); int doc_line_prev(struct doc *d, size_t *ofs); int doc_line_next(struct doc *d, size_t *ofs); +unsigned short doc_add_link(struct doc *d, const char *url); + #endif |