commit bb0d8f2

default  ·  2023-01-12 08:28:02 +0000 UTC
parent 16be679
Backport from xs.
11 files changed,  +45, -45
M data.c
M html.c
M http.c
M xs.h
M data.c
+1, -1
1@@ -31,7 +31,7 @@ int srv_open(char *basedir, int auto_upgrade)
2     srv_basedir = xs_str_new(basedir);
3 
4     if (xs_endswith(srv_basedir, "/"))
5-        srv_basedir = xs_crop(srv_basedir, 0, -1);
6+        srv_basedir = xs_crop_i(srv_basedir, 0, -1);
7 
8     cfg_file = xs_fmt("%s/server.json", basedir);
9 
+7, -7
 1@@ -53,19 +53,19 @@ static d_char *format_line(const char *line)
 2         if ((n & 0x1)) {
 3             /* markup */
 4             if (xs_startswith(v, "`")) {
 5-                xs *s1 = xs_crop(xs_dup(v), 1, -1);
 6+                xs *s1 = xs_crop_i(xs_dup(v), 1, -1);
 7                 xs *s2 = xs_fmt("<code>%s</code>", s1);
 8                 s = xs_str_cat(s, s2);
 9             }
10             else
11             if (xs_startswith(v, "**")) {
12-                xs *s1 = xs_crop(xs_dup(v), 2, -2);
13+                xs *s1 = xs_crop_i(xs_dup(v), 2, -2);
14                 xs *s2 = xs_fmt("<b>%s</b>", s1);
15                 s = xs_str_cat(s, s2);
16             }
17             else
18             if (xs_startswith(v, "*")) {
19-                xs *s1 = xs_crop(xs_dup(v), 1, -1);
20+                xs *s1 = xs_crop_i(xs_dup(v), 1, -1);
21                 xs *s2 = xs_fmt("<i>%s</i>", s1);
22                 s = xs_str_cat(s, s2);
23             }
24@@ -117,11 +117,11 @@ d_char *not_really_markdown(const char *content)
25         if (in_pre)
26             ss = xs_dup(v);
27         else
28-            ss = xs_strip(format_line(v));
29+            ss = xs_strip_i(format_line(v));
30 
31         if (xs_startswith(ss, ">")) {
32             /* delete the > and subsequent spaces */
33-            ss = xs_strip(xs_crop(ss, 1, 0));
34+            ss = xs_strip_i(xs_crop_i(ss, 1, 0));
35 
36             if (!in_blq) {
37                 s = xs_str_cat(s, "<blockquote>");
38@@ -184,9 +184,9 @@ d_char *sanitize(const char *content)
39 
40     while (xs_list_iter(&p, &v)) {
41         if (n & 0x1) {
42-            xs *s1  = xs_strip(xs_crop(xs_dup(v), v[1] == '/' ? 2 : 1, -1));
43+            xs *s1  = xs_strip_i(xs_crop_i(xs_dup(v), v[1] == '/' ? 2 : 1, -1));
44             xs *l1  = xs_split_n(s1, " ", 1);
45-            xs *tag = xs_tolower(xs_dup(xs_list_get(l1, 0)));
46+            xs *tag = xs_tolower_i(xs_dup(xs_list_get(l1, 0)));
47             xs *s2  = NULL;
48             int i;
49 
M html.c
+5, -5
 1@@ -21,7 +21,7 @@ int login(snac *snac, char *headers)
 2 
 3     if (auth && xs_startswith(auth, "Basic ")) {
 4         int sz;
 5-        xs *s1 = xs_crop(xs_dup(auth), 6, 0);
 6+        xs *s1 = xs_crop_i(xs_dup(auth), 6, 0);
 7         xs *s2 = xs_base64_dec(s1, &sz);
 8 
 9         xs *l1 = xs_split_n(s2, ":", 1);
10@@ -108,11 +108,11 @@ d_char *html_actor_icon(snac *snac, d_char *os, char *actor,
11         s = xs_str_cat(s, "<br>\n&nbsp;\n");
12     }
13     else {
14-        xs *date_label = xs_crop(xs_dup(date), 0, 10);
15+        xs *date_label = xs_crop_i(xs_dup(date), 0, 10);
16         xs *date_title = xs_dup(date);
17 
18         if (!xs_is_null(udate)) {
19-            xs *sd = xs_crop(xs_dup(udate), 0, 10);
20+            xs *sd = xs_crop_i(xs_dup(udate), 0, 10);
21 
22             date_label = xs_str_cat(date_label, " / ");
23             date_label = xs_str_cat(date_label, sd);
24@@ -682,7 +682,7 @@ d_char *html_entry(snac *snac, d_char *os, char *msg, int local, int level, cons
25         c = xs_replace_i(c, "\r", "");
26 
27         while (xs_endswith(c, "<br><br>"))
28-            c = xs_crop(c, 0, -4);
29+            c = xs_crop_i(c, 0, -4);
30 
31         c = xs_replace_i(c, "<br><br>", "<p>");
32 
33@@ -1045,7 +1045,7 @@ int html_get_handler(d_char *req, char *q_path, char **body, int *b_size, char *
34 
35     /* rss extension? */
36     if (xs_endswith(uid, ".rss")) {
37-        uid = xs_crop(uid, 0, -4);
38+        uid = xs_crop_i(uid, 0, -4);
39         p_path = ".rss";
40     }
41     else
M http.c
+5, -5
 1@@ -123,19 +123,19 @@ static int _check_signature(snac *snac, char *req, char **err)
 2         p = l;
 3         while (xs_list_iter(&p, &v)) {
 4             if (xs_startswith(v, "keyId"))
 5-                keyId = xs_crop(xs_dup(v), 7, -1);
 6+                keyId = xs_crop_i(xs_dup(v), 7, -1);
 7             else
 8             if (xs_startswith(v, "headers"))
 9-                headers = xs_crop(xs_dup(v), 9, -1);
10+                headers = xs_crop_i(xs_dup(v), 9, -1);
11             else
12             if (xs_startswith(v, "signature"))
13-                signature = xs_crop(xs_dup(v), 11, -1);
14+                signature = xs_crop_i(xs_dup(v), 11, -1);
15             else
16             if (xs_startswith(v, "created"))
17-                created = xs_crop(xs_dup(v), 9, -1);
18+                created = xs_crop_i(xs_dup(v), 9, -1);
19             else
20             if (xs_startswith(v, "expires"))
21-                expires = xs_crop(xs_dup(v), 9, -1);
22+                expires = xs_crop_i(xs_dup(v), 9, -1);
23         }
24     }
25 
+2, -2
 1@@ -160,11 +160,11 @@ void httpd_connection(FILE *f)
 2 
 3     /* crop the q_path from leading / and the prefix */
 4     if (xs_endswith(q_path, "/"))
 5-        q_path = xs_crop(q_path, 0, -1);
 6+        q_path = xs_crop_i(q_path, 0, -1);
 7 
 8     p = xs_dict_get(srv_config, "prefix");
 9     if (xs_startswith(q_path, p))
10-        q_path = xs_crop(q_path, strlen(p), 0);
11+        q_path = xs_crop_i(q_path, strlen(p), 0);
12 
13     if (strcmp(method, "GET") == 0 || strcmp(method, "HEAD") == 0) {
14         /* cascade through */
+8, -8
 1@@ -85,7 +85,7 @@ int initdb(const char *basedir)
 2 
 3     if (basedir == NULL) {
 4         printf("Base directory:\n");
 5-        srv_basedir = xs_strip(xs_readline(stdin));
 6+        srv_basedir = xs_strip_i(xs_readline(stdin));
 7     }
 8     else
 9         srv_basedir = xs_str_new(basedir);
10@@ -94,7 +94,7 @@ int initdb(const char *basedir)
11         return 1;
12 
13     if (xs_endswith(srv_basedir, "/"))
14-        srv_basedir = xs_crop(srv_basedir, 0, -1);
15+        srv_basedir = xs_crop_i(srv_basedir, 0, -1);
16 
17     if (mtime(srv_basedir) != 0.0) {
18         printf("ERROR: directory '%s' must not exist\n", srv_basedir);
19@@ -108,14 +108,14 @@ int initdb(const char *basedir)
20 
21     printf("Network address [%s]:\n", xs_dict_get(srv_config, "address"));
22     {
23-        xs *i = xs_strip(xs_readline(stdin));
24+        xs *i = xs_strip_i(xs_readline(stdin));
25         if (*i)
26             srv_config = xs_dict_set(srv_config, "address", i);
27     }
28 
29     printf("Network port [%d]:\n", (int)xs_number_get(xs_dict_get(srv_config, "port")));
30     {
31-        xs *i = xs_strip(xs_readline(stdin));
32+        xs *i = xs_strip_i(xs_readline(stdin));
33         if (*i) {
34             xs *n = xs_number_new(atoi(i));
35             srv_config = xs_dict_set(srv_config, "port", n);
36@@ -124,7 +124,7 @@ int initdb(const char *basedir)
37 
38     printf("Host name:\n");
39     {
40-        xs *i = xs_strip(xs_readline(stdin));
41+        xs *i = xs_strip_i(xs_readline(stdin));
42         if (*i == '\0')
43             return 1;
44 
45@@ -133,11 +133,11 @@ int initdb(const char *basedir)
46 
47     printf("URL prefix:\n");
48     {
49-        xs *i = xs_strip(xs_readline(stdin));
50+        xs *i = xs_strip_i(xs_readline(stdin));
51 
52         if (*i) {
53             if (xs_endswith(i, "/"))
54-                i = xs_crop(i, 0, -1);
55+                i = xs_crop_i(i, 0, -1);
56 
57             srv_config = xs_dict_set(srv_config, "prefix", i);
58         }
59@@ -215,7 +215,7 @@ int adduser(const char *uid)
60 
61     if (uid == NULL) {
62         printf("User id:\n");
63-        uid = xs_strip(xs_readline(stdin));
64+        uid = xs_strip_i(xs_readline(stdin));
65     }
66 
67     if (!validate_uid(uid)) {
+2, -2
 1@@ -33,7 +33,7 @@ int webfinger_request(char *qs, char **actor, char **user)
 2         xs *s = xs_dup(qs);
 3 
 4         if (xs_startswith(s, "@"))
 5-            s = xs_crop(s, 1, 0);
 6+            s = xs_crop_i(s, 1, 0);
 7 
 8         l = xs_split_n(s, "@", 1);
 9 
10@@ -141,7 +141,7 @@ int webfinger_get_handler(d_char *req, char *q_path,
11 
12         /* strip a possible leading @ */
13         if (xs_startswith(an, "@"))
14-            an = xs_crop(an, 1, 0);
15+            an = xs_crop_i(an, 1, 0);
16 
17         l = xs_split_n(an, "@", 1);
18 
M xs.h
+9, -9
 1@@ -60,11 +60,11 @@ d_char *xs_fmt(const char *fmt, ...);
 2 int xs_str_in(const char *haystack, const char *needle);
 3 int xs_startswith(const char *str, const char *prefix);
 4 int xs_endswith(const char *str, const char *postfix);
 5-d_char *xs_crop(d_char *str, int start, int end);
 6-d_char *xs_strip_chars(d_char *str, const char *chars);
 7-#define xs_strip(str) xs_strip_chars(str, " \r\n\t\v\f")
 8-d_char *xs_tolower(d_char *str);
 9-d_char *xs_str_prepend(d_char *str, const char *prefix);
10+d_char *xs_crop_i(d_char *str, int start, int end);
11+d_char *xs_strip_chars_i(d_char *str, const char *chars);
12+#define xs_strip_i(str) xs_strip_chars_i(str, " \r\n\t\v\f")
13+d_char *xs_tolower_i(d_char *str);
14+d_char *xs_str_prepend_i(d_char *str, const char *prefix);
15 d_char *xs_list_new(void);
16 d_char *xs_list_append_m(d_char *list, const char *mem, int dsz);
17 #define xs_list_append(list, data) xs_list_append_m(list, data, xs_size(data))
18@@ -439,7 +439,7 @@ int xs_endswith(const char *str, const char *postfix)
19 }
20 
21 
22-d_char *xs_crop(d_char *str, int start, int end)
23+d_char *xs_crop_i(d_char *str, int start, int end)
24 /* crops the d_char to be only from start to end */
25 {
26     int sz = strlen(str);
27@@ -457,7 +457,7 @@ d_char *xs_crop(d_char *str, int start, int end)
28 }
29 
30 
31-d_char *xs_strip_chars(d_char *str, const char *chars)
32+d_char *xs_strip_chars_i(d_char *str, const char *chars)
33 /* strips the string of chars from the start and the end */
34 {
35     int n;
36@@ -478,7 +478,7 @@ d_char *xs_strip_chars(d_char *str, const char *chars)
37 }
38 
39 
40-d_char *xs_tolower(d_char *str)
41+d_char *xs_tolower_i(d_char *str)
42 /* convert to lowercase */
43 {
44     int n;
45@@ -490,7 +490,7 @@ d_char *xs_tolower(d_char *str)
46 }
47 
48 
49-d_char *xs_str_prepend(d_char *str, const char *prefix)
50+d_char *xs_str_prepend_i(d_char *str, const char *prefix)
51 /* prepends prefix into string */
52 {
53     int sz = strlen(prefix);
+2, -2
 1@@ -21,13 +21,13 @@ static size_t _header_callback(char *buffer, size_t size,
 2     /* get the line */
 3     l = xs_str_new(NULL);
 4     l = xs_append_m(l, buffer, size * nitems);
 5-    l = xs_strip(l);
 6+    l = xs_strip_i(l);
 7 
 8     /* only the HTTP/x 200 line and the last one doesn't have ': ' */
 9     if (xs_str_in(l, ": ") != -1) {
10         xs *knv = xs_split_n(l, ": ", 1);
11 
12-        xs_tolower(xs_list_get(knv, 0));
13+        xs_tolower_i(xs_list_get(knv, 0));
14 
15         headers = xs_dict_set(headers, xs_list_get(knv, 0), xs_list_get(knv, 1));
16     }
+3, -3
 1@@ -185,7 +185,7 @@ d_char *xs_httpd_request(FILE *f, d_char **payload, int *p_size)
 2     xs_socket_timeout(fileno(f), 2.0, 0.0);
 3 
 4     /* read the first line and split it */
 5-    l1 = xs_strip(xs_readline(f));
 6+    l1 = xs_strip_i(xs_readline(f));
 7     l2 = xs_split(l1, " ");
 8 
 9     if (xs_list_len(l2) != 3) {
10@@ -214,7 +214,7 @@ d_char *xs_httpd_request(FILE *f, d_char **payload, int *p_size)
11     for (;;) {
12         xs *l, *p = NULL;
13 
14-        l = xs_strip(xs_readline(f));
15+        l = xs_strip_i(xs_readline(f));
16 
17         /* done with the header? */
18         if (strcmp(l, "") == 0)
19@@ -224,7 +224,7 @@ d_char *xs_httpd_request(FILE *f, d_char **payload, int *p_size)
20         p = xs_split_n(l, ": ", 1);
21 
22         if (xs_list_len(p) == 2)
23-            req = xs_dict_append(req, xs_tolower(xs_list_get(p, 0)), xs_list_get(p, 1));
24+            req = xs_dict_append(req, xs_tolower_i(xs_list_get(p, 0)), xs_list_get(p, 1));
25     }
26 
27     xs_socket_timeout(fileno(f), 5.0, 0.0);
+1, -1
1@@ -1 +1 @@
2-/* 38b055a19829fb788f1bb6917f76cc4830388e35 */
3+/* 41985e780c622a078118ea7c7143dc304758d958 */