Browse Source

Fixed processing of URLs with two @ inside.

default 4 months ago
parent
commit
a5942432bf
1 changed files with 8 additions and 3 deletions
  1. 8 3
      format.c

+ 8 - 3
format.c

@@ -135,7 +135,9 @@ static xs_str *format_line(const char *line, xs_list **attach)
             else
             if (*v == '[') {
                 /* markdown-like links [label](url) */
-                xs *w = xs_strip_chars_i(xs_replace(v, "#", "#"), "[)");
+                xs *w = xs_strip_chars_i(
+                    xs_replace_i(xs_replace(v, "#", "#"), "@", "@"),
+                "![)");
                 xs *l = xs_split_n(w, "](", 1);
 
                 if (xs_list_len(l) == 2) {
@@ -150,7 +152,9 @@ static xs_str *format_line(const char *line, xs_list **attach)
             else
             if (*v == '!') {
                 /* markdown-like images ![alt text](url to image) */
-                xs *w = xs_strip_chars_i(xs_replace(v, "#", "#"), "![)");
+                xs *w = xs_strip_chars_i(
+                    xs_replace_i(xs_replace(v, "#", "#"), "@", "@"),
+                "![)");
                 xs *l = xs_split_n(w, "](", 1);
 
                 if (xs_list_len(l) == 2) {
@@ -179,7 +183,8 @@ static xs_str *format_line(const char *line, xs_list **attach)
             }
             else
             if (xs_str_in(v, ":/" "/") != -1) {
-                xs *u  = xs_replace(v, "#", "#");
+                xs *u  = xs_replace_i(xs_replace(v, "#", "#"), "@", "@");
+
                 xs *v2 = xs_strip_chars_i(xs_dup(u), ".,)");
 
                 const char *mime = xs_mime_by_ext(v2);