aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgrunfink <grunfink@noreply.codeberg.org>2025-05-22 11:15:07 +0200
committergrunfink <grunfink@noreply.codeberg.org>2025-05-22 11:15:07 +0200
commit096bb217105202ce6ec5bad046fd70cc3e3508cd (patch)
treee739fef7755347dc2f80f31b782467461ae3bacd
parent8c60545e657bf7a95aeaee2fa474cf021588de8b (diff)
parent450e679f5197cfe3101d2b3f032f3fabeadfc848 (diff)
Merge pull request 'use utf-8 lowercase function for tags #396' (#400) from postscriptum/snac2:utf8-lower-tags into master
Reviewed-on: https://codeberg.org/grunfink/snac2/pulls/400
-rw-r--r--activitypub.c2
-rw-r--r--data.c6
-rw-r--r--format.c3
-rw-r--r--mastoapi.c13
4 files changed, 13 insertions, 11 deletions
diff --git a/activitypub.c b/activitypub.c
index 120b4a1..c06d8df 100644
--- a/activitypub.c
+++ b/activitypub.c
@@ -903,7 +903,7 @@ xs_str *process_tags(snac *snac, const char *content, xs_list **tag)
if (*v == '#') {
/* hashtag */
xs *d = xs_dict_new();
- xs *n = xs_tolower_i(xs_dup(v));
+ xs *n = xs_utf8_to_lower(xs_dup(v));
xs *h = xs_fmt("%s?t=%s", srv_baseurl, n + 1);
xs *l = xs_fmt("<a href=\"%s\" class=\"mention hashtag\" rel=\"tag\">%s</a>", h, v);
diff --git a/data.c b/data.c
index f9d27f9..631a68b 100644
--- a/data.c
+++ b/data.c
@@ -2217,7 +2217,7 @@ void tag_index(const char *id, const xs_dict *obj)
if (*name == '\0')
continue;
- name = xs_tolower_i((xs_str *)name);
+ name = xs_utf8_to_lower((xs_str *)name);
xs *md5_tag = xs_md5_hex(name, strlen(name));
xs *tag_dir = xs_fmt("%s/%c%c", g_tag_dir, md5_tag[0], md5_tag[1]);
@@ -2247,7 +2247,7 @@ xs_str *tag_fn(const char *tag)
if (*tag == '#')
tag++;
- xs *lw_tag = xs_tolower_i(xs_dup(tag));
+ xs *lw_tag = xs_utf8_to_lower(xs_dup(tag));
xs *md5 = xs_md5_hex(lw_tag, strlen(lw_tag));
return xs_fmt("%s/tag/%c%c/%s.idx", srv_basedir, md5[0], md5[1], md5);
@@ -2834,7 +2834,7 @@ int content_match(const char *file, const xs_dict *msg)
/* massage content (strip HTML tags, etc.) */
xs *c = xs_regex_replace(v, "<[^>]+>", " ");
c = xs_regex_replace_i(c, " {2,}", " ");
- c = xs_tolower_i(c);
+ c = xs_utf8_to_lower(c);
while (!r && !feof(f)) {
xs *rx = xs_strip_i(xs_readline(f));
diff --git a/format.c b/format.c
index 2f30a0d..0f844cd 100644
--- a/format.c
+++ b/format.c
@@ -8,6 +8,7 @@
#include "xs_json.h"
#include "xs_time.h"
#include "xs_match.h"
+#include "xs_unicode.h"
#include "snac.h"
@@ -443,7 +444,7 @@ xs_str *sanitize(const char *content)
if (n & 0x1) {
xs *s1 = xs_strip_i(xs_crop_i(xs_dup(v), v[1] == '/' ? 2 : 1, -1));
xs *l1 = xs_split_n(s1, " ", 1);
- xs *tag = xs_tolower_i(xs_dup(xs_list_get(l1, 0)));
+ xs *tag = xs_utf8_to_lower(xs_dup(xs_list_get(l1, 0)));
xs *s2 = NULL;
int i;
diff --git a/mastoapi.c b/mastoapi.c
index a7d9c34..c46a971 100644
--- a/mastoapi.c
+++ b/mastoapi.c
@@ -15,6 +15,7 @@
#include "xs_url.h"
#include "xs_mime.h"
#include "xs_match.h"
+#include "xs_unicode.h"
#include "snac.h"
@@ -381,7 +382,7 @@ int oauth_post_handler(const xs_dict *req, const char *q_path,
}
}
- /* no code?
+ /* no code?
I'm not sure of the impacts of this right now, but Subway Tooter does not
provide a code so one must be generated */
if (xs_is_null(code)){
@@ -1637,7 +1638,7 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path,
const char *aq = xs_dict_get(args, "q");
if (!xs_is_null(aq)) {
- xs *q = xs_tolower_i(xs_dup(aq));
+ xs *q = xs_utf8_to_lower(xs_dup(aq));
out = xs_list_new();
xs *wing = following_list(&snac1);
xs *wers = follower_list(&snac1);
@@ -1780,7 +1781,7 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path,
}
else
if (strcmp(opt, "statuses") == 0) {
- /* we don't serve statuses of others; return the empty list */
+ /* we don't serve statuses of others; return the empty list */
out = xs_list_new();
}
else
@@ -1999,7 +2000,7 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path,
}
else
if (strcmp(cmd, "/v2/filters") == 0) { /** **/
- /* snac will never have filters
+ /* snac will never have filters
* but still, without a v2 endpoint a short delay is introduced
* in some apps */
*body = xs_dup("[]");
@@ -2459,7 +2460,7 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path,
if (logged_in) {
const xs_list *timeline = xs_dict_get(args, "timeline[]");
xs_str *json = NULL;
- if (!xs_is_null(timeline))
+ if (!xs_is_null(timeline))
json = xs_json_dumps(markers_get(&snac1, timeline), 4);
if (!xs_is_null(json))
@@ -3227,7 +3228,7 @@ int mastoapi_post_handler(const xs_dict *req, const char *q_path,
if (!xs_is_null(home))
home_marker = xs_dict_get(home, "last_read_id");
}
-
+
const xs_str *notify_marker = xs_dict_get(args, "notifications[last_read_id]");
if (xs_is_null(notify_marker)) {
const xs_dict *notify = xs_dict_get(args, "notifications");