truncate rss title at utf8 char boundary
Advance a whole utf8 char at a time while looking for where to truncate the title.
This commit is contained in:
committed by
grunfink
parent
20eba6f519
commit
89053095eb
@@ -2,6 +2,8 @@
|
||||
|
||||
## UNRELEASED
|
||||
|
||||
Truncate RSS titles at UTF-8 character boundaries (contributed by lxo).
|
||||
|
||||
Link contacts to single-user people pages. Also, user's posts are shown (contributed by lxo).
|
||||
|
||||
Added emoji reactions (contributed by violette).
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
#include "xs_openssl.h"
|
||||
#include "xs_json.h"
|
||||
#include "xs_http.h"
|
||||
#include "xs_unicode.h"
|
||||
|
||||
#include "snac.h"
|
||||
|
||||
@@ -74,7 +75,14 @@ xs_str *rss_from_timeline(snac *user, const xs_list *timeline,
|
||||
title = xs_regex_replace_i(title, "&[^;]+;", " ");
|
||||
int i;
|
||||
|
||||
for (i = 0; title[i] && title[i] != '\n' && i < 50; i++);
|
||||
for (i = 0; title[i] && title[i] != '\n' && i < 50; ) {
|
||||
const char *p = &title[i];
|
||||
unsigned int cp = xs_utf8_dec(&p);
|
||||
int n = p - title;
|
||||
if (cp == 0xfffd || n > 50)
|
||||
break;
|
||||
i = n;
|
||||
}
|
||||
|
||||
if (title[i] != '\0') {
|
||||
title[i] = '\0';
|
||||
|
||||
Reference in New Issue
Block a user