diff options
| -rw-r--r-- | Makefile | 4 | ||||
| -rw-r--r-- | html.c | 60 | ||||
| -rw-r--r-- | httpd.c | 3 | ||||
| -rw-r--r-- | snac.c | 1 |
4 files changed, 64 insertions, 4 deletions
| @@ -17,11 +17,11 @@ dep: | |||
| 17 | activitypub.o: activitypub.c xs.h xs_encdec.h xs_json.h xs_curl.h \ | 17 | activitypub.o: activitypub.c xs.h xs_encdec.h xs_json.h xs_curl.h \ |
| 18 | xs_mime.h xs_openssl.h snac.h | 18 | xs_mime.h xs_openssl.h snac.h |
| 19 | data.o: data.c xs.h xs_io.h xs_json.h xs_openssl.h snac.h | 19 | data.o: data.c xs.h xs_io.h xs_json.h xs_openssl.h snac.h |
| 20 | html.o: html.c xs.h xs_io.h xs_json.h snac.h | 20 | html.o: html.c xs.h xs_io.h xs_json.h xs_regex.h snac.h |
| 21 | http.o: http.c xs.h xs_io.h xs_encdec.h xs_openssl.h xs_curl.h snac.h | 21 | http.o: http.c xs.h xs_io.h xs_encdec.h xs_openssl.h xs_curl.h snac.h |
| 22 | httpd.o: httpd.c xs.h xs_io.h xs_encdec.h xs_json.h xs_socket.h \ | 22 | httpd.o: httpd.c xs.h xs_io.h xs_encdec.h xs_json.h xs_socket.h \ |
| 23 | xs_httpd.h snac.h | 23 | xs_httpd.h snac.h |
| 24 | main.o: main.c xs.h xs_io.h xs_encdec.h xs_json.h snac.h | 24 | main.o: main.c xs.h xs_io.h xs_encdec.h xs_json.h snac.h |
| 25 | snac.o: snac.c xs.h xs_io.h xs_encdec.h xs_json.h xs_curl.h xs_openssl.h \ | 25 | snac.o: snac.c xs.h xs_io.h xs_encdec.h xs_json.h xs_curl.h xs_openssl.h \ |
| 26 | xs_socket.h xs_httpd.h xs_mime.h snac.h | 26 | xs_socket.h xs_httpd.h xs_mime.h xs_regex.h snac.h |
| 27 | webfinger.o: webfinger.c xs.h xs_encdec.h xs_json.h xs_curl.h snac.h | 27 | webfinger.o: webfinger.c xs.h xs_encdec.h xs_json.h xs_curl.h snac.h |
| @@ -4,6 +4,7 @@ | |||
| 4 | #include "xs.h" | 4 | #include "xs.h" |
| 5 | #include "xs_io.h" | 5 | #include "xs_io.h" |
| 6 | #include "xs_json.h" | 6 | #include "xs_json.h" |
| 7 | #include "xs_regex.h" | ||
| 7 | 8 | ||
| 8 | #include "snac.h" | 9 | #include "snac.h" |
| 9 | 10 | ||
| @@ -15,10 +16,65 @@ d_char *not_really_markdown(char *content, d_char **f_content) | |||
| 15 | int in_blq = 0; | 16 | int in_blq = 0; |
| 16 | xs *list; | 17 | xs *list; |
| 17 | char *p, *v; | 18 | char *p, *v; |
| 19 | xs *wrk = xs_dup(content); | ||
| 18 | 20 | ||
| 19 | s = xs_str_new(NULL); | 21 | /* global changes */ |
| 22 | { | ||
| 23 | /* backticks */ | ||
| 24 | xs *ml = xs_regex_matchall(wrk, "`[^`]+`"); | ||
| 25 | p = ml; | ||
| 26 | |||
| 27 | while (xs_list_iter(&p, &v)) { | ||
| 28 | xs *s1 = xs_crop(xs_dup(v), 1, -1); | ||
| 29 | xs *s2 = xs_fmt("<code>%s</code>", s1); | ||
| 30 | |||
| 31 | wrk = xs_replace_i(wrk, v, s2); | ||
| 32 | } | ||
| 33 | } | ||
| 34 | |||
| 35 | { | ||
| 36 | /* double asterisks */ | ||
| 37 | xs *ml = xs_regex_matchall(wrk, "\\*\\*[^\\*]+\\*\\*"); | ||
| 38 | p = ml; | ||
| 39 | |||
| 40 | while (xs_list_iter(&p, &v)) { | ||
| 41 | xs *s1 = xs_crop(xs_dup(v), 2, -2); | ||
| 42 | xs *s2 = xs_fmt("<b>%s</b>", s1); | ||
| 43 | |||
| 44 | wrk = xs_replace_i(wrk, v, s2); | ||
| 45 | } | ||
| 46 | } | ||
| 47 | |||
| 48 | { | ||
| 49 | /* single asterisks */ | ||
| 50 | xs *ml = xs_regex_matchall(wrk, "\\*[^\\*]+\\*"); | ||
| 51 | p = ml; | ||
| 52 | |||
| 53 | while (xs_list_iter(&p, &v)) { | ||
| 54 | xs *s1 = xs_crop(xs_dup(v), 1, -1); | ||
| 55 | xs *s2 = xs_fmt("<i>%s</i>", s1); | ||
| 20 | 56 | ||
| 21 | p = list = xs_split(content, "\n"); | 57 | wrk = xs_replace_i(wrk, v, s2); |
| 58 | } | ||
| 59 | } | ||
| 60 | |||
| 61 | { | ||
| 62 | /* urls */ | ||
| 63 | xs *ml = xs_regex_matchall(wrk, "https?:/" "/[^ ]+"); | ||
| 64 | p = ml; | ||
| 65 | |||
| 66 | while (xs_list_iter(&p, &v)) { | ||
| 67 | xs *s2 = xs_fmt("<a href=\"%s\">%s</a>", v, v); | ||
| 68 | |||
| 69 | wrk = xs_replace_i(wrk, v, s2); | ||
| 70 | } | ||
| 71 | } | ||
| 72 | |||
| 73 | /* now work on lines */ | ||
| 74 | |||
| 75 | p = list = xs_split(wrk, "\n"); | ||
| 76 | |||
| 77 | s = xs_str_new(NULL); | ||
| 22 | 78 | ||
| 23 | while (xs_list_iter(&p, &v)) { | 79 | while (xs_list_iter(&p, &v)) { |
| 24 | xs *ss = xs_strip(xs_dup(v)); | 80 | xs *ss = xs_strip(xs_dup(v)); |
| @@ -79,6 +79,9 @@ int server_get_handler(d_char *req, char *q_path, | |||
| 79 | *ctype = "image/png"; | 79 | *ctype = "image/png"; |
| 80 | } | 80 | } |
| 81 | 81 | ||
| 82 | if (status != 0) | ||
| 83 | srv_debug(1, xs_fmt("server_get_handler '%s' %d", q_path, status)); | ||
| 84 | |||
| 82 | return status; | 85 | return status; |
| 83 | } | 86 | } |
| 84 | 87 | ||
| @@ -12,6 +12,7 @@ | |||
| 12 | #include "xs_socket.h" | 12 | #include "xs_socket.h" |
| 13 | #include "xs_httpd.h" | 13 | #include "xs_httpd.h" |
| 14 | #include "xs_mime.h" | 14 | #include "xs_mime.h" |
| 15 | #include "xs_regex.h" | ||
| 15 | 16 | ||
| 16 | #include "snac.h" | 17 | #include "snac.h" |
| 17 | 18 | ||