about summary refs log tree commit diff stats
path: root/encode.c
diff options
context:
space:
mode:
authorAli Fardan <raiz@stellarbound.space>2020-11-05 22:08:19 +0300
committerAli Fardan <raiz@stellarbound.space>2020-11-05 22:08:19 +0300
commit85d4a44f2d310ce42976a47091f6355fd6066d5e (patch)
tree7dd0f045585a9e4239983b6728e325333e1010db /encode.c
parent0f184b77e00e7b85e04be78d6a22231c62523e91 (diff)
downloadlibgemtext-85d4a44f2d310ce42976a47091f6355fd6066d5e.tar.gz
introduce gemtext_list_encode_to_html class of functions
- add gemtext_list_encode_html, gemtext_list_encode_to_html_fd and gemtext_list_encode_to_html_file
- add gemtext_link_has_label
- update gemtext_list_encode class of functions to use size_t instead of int for text size calculation
- update manpages
Diffstat (limited to 'encode.c')
-rw-r--r--encode.c34
1 files changed, 18 insertions, 16 deletions
diff --git a/encode.c b/encode.c
index dc13d23..75afb18 100644
--- a/encode.c
+++ b/encode.c
@@ -23,7 +23,7 @@ _case_link(struct gemtext *t)
 {
 	struct gemtext_link *link;
 	char *ret;
-	int retlen;
+	size_t retlen;
 
 	retlen = 0;
 	link = (struct gemtext_link *)t;
@@ -55,7 +55,7 @@ _case_pre(struct gemtext *t)
 {
 	struct gemtext_pre *pre;
 	char *ret;
-	int retlen;
+	size_t retlen;
 
 	retlen = 0;
 	pre = (struct gemtext_pre *)t;
@@ -81,7 +81,7 @@ _case_h1(struct gemtext *t)
 {
 	struct gemtext_h1 *h1;
 	char *ret;
-	int retlen;
+	size_t retlen;
 
 	retlen = 0;
 	h1 = (struct gemtext_h1 *)t;
@@ -105,7 +105,7 @@ _case_h2(struct gemtext *t)
 {
 	struct gemtext_h2 *h2;
 	char *ret;
-	int retlen;
+	size_t retlen;
 
 	retlen = 0;
 	h2 = (struct gemtext_h2 *)t;
@@ -129,7 +129,7 @@ _case_h3(struct gemtext *t)
 {
 	struct gemtext_h3 *h3;
 	char *ret;
-	int retlen;
+	size_t retlen;
 
 	retlen = 0;
 	h3 = (struct gemtext_h3 *)t;
@@ -154,7 +154,7 @@ _case_ul(struct gemtext *t)
 {
 	struct gemtext_ul *ul;
 	char *ret;
-	int retlen;
+	size_t retlen;
 
 	retlen = 0;
 	ul = (struct gemtext_ul *)t;
@@ -178,7 +178,7 @@ _case_qt(struct gemtext *t)
 {
 	struct gemtext_qt *qt;
 	char *ret;
-	int retlen;
+	size_t retlen;
 
 	retlen = 0;
 	qt = (struct gemtext_qt *)t;
@@ -198,9 +198,9 @@ _case_qt(struct gemtext *t)
 }
 
 static char *
-_line_append(char *dst, const char *src, int *len)
+_line_append(char *dst, const char *src, size_t *len)
 {
-	int rlen;
+	size_t rlen;
 	char *ret;
 
 	rlen = *len;
@@ -223,7 +223,7 @@ _line_append(char *dst, const char *src, int *len)
 }
 
 int
-gemtext_encode(struct gemtext *line, char **text, int *len)
+gemtext_encode(struct gemtext *line, char **text, size_t *len)
 {
 	switch (line->type) {
 	case GEMTEXT_TEXT:
@@ -292,7 +292,7 @@ int
 gemtext_encode_fd(struct gemtext *line, int fd)
 {
 	char *text;
-	int len;
+	size_t len;
 	int ecode;
 
 	if (gemtext_encode(line, &text, &len) == -1)
@@ -325,11 +325,11 @@ gemtext_encode_file(struct gemtext *line, const char *path)
 }
 
 int
-gemtext_list_encode(struct gemtext **list, char **text, int *len)
+gemtext_list_encode(struct gemtext **list, char **text, size_t *len)
 {
 	int i;
-	int encbuflen;
-	int retbuflen;
+	size_t encbuflen;
+	size_t retbuflen;
 	char *encbuf;
 	char *appbuf;
 	char *retbuf;
@@ -362,7 +362,7 @@ int
 gemtext_list_encode_fd(struct gemtext **list, int fd)
 {
 	char *text;
-	int len;
+	size_t len;
 	int ecode;
 
 	if (gemtext_list_encode(list, &text, &len) == -1)
@@ -382,9 +382,11 @@ gemtext_list_encode_file(struct gemtext **list, const char *path)
 	int fd;
 	int ecode;
 
-	fd = open(path, O_WRONLY);
+	fd = open(path, O_WRONLY|O_TRUNC|O_CREAT);
 	if (fd == -1)
 		return -1;
+	/* file does not have to be owned by user, so errors are expected */
+	fchmod(fd, 0644);
 
 	ecode = gemtext_list_encode_fd(list, fd);
 	close(fd);