commit c38ad28
grunfink
·
2026-09-01 12:25:12 +0000 UTC
parent 5e74f45
New function text_browser_friendly() (still unused).
M
html.c
+37,
-0
1@@ -4651,6 +4651,40 @@ void set_user_lang(snac *user)
2 }
3
4
5+int text_browser_friendly(const snac *user, const char *user_agent)
6+/* returns true if the web UI must be adapted to text browsers */
7+/* basically, this means to avoid details/summary as much as possible */
8+{
9+ if (user != NULL && xs_is_string(user_agent)) {
10+ snac_debug(user, 1, xs_fmt("user-agent: %s", user_agent));
11+
12+ const char *text_browser_uas = xs_dict_get(user->config, "text_browser_uas");
13+
14+ if (xs_is_string(text_browser_uas)) {
15+ xs *l = xs_split(text_browser_uas, "\n");
16+ const char *v;
17+
18+ xs_list_foreach(l, v) {
19+ if (*v == '\0')
20+ continue;
21+
22+ xs *v2 = xs_strip_i(xs_dup(v));
23+
24+ /* a * means "all browsers", then yes */
25+ if (strcmp(v2, "*") == 0)
26+ return 1;
27+
28+ /* if this string is inside user_agent, then yes */
29+ if (xs_str_in(user_agent, v2) != -1)
30+ return 1;
31+ }
32+ }
33+ }
34+
35+ return 0;
36+}
37+
38+
39 int html_get_handler(const xs_dict *req, const char *q_path,
40 char **body, int *b_size, char **ctype,
41 xs_str **etag, xs_str **last_modified)
42@@ -4665,6 +4699,7 @@ int html_get_handler(const xs_dict *req, const char *q_path,
43 int save = 1;
44 int proxy = 0;
45 int terse = 0;
46+ int tb_friendly = 0;
47 const char *v;
48
49 const xs_dict *q_vars = xs_dict_get(req, "q_vars");
50@@ -4734,6 +4769,8 @@ int html_get_handler(const xs_dict *req, const char *q_path,
51 if (xs_is_true(xs_dict_get(srv_config, "proxy_media")))
52 proxy = 1;
53
54+ tb_friendly = text_browser_friendly(user, xs_dict_get(req, "user-agent"));
55+
56 /* return the RSS if requested by Accept header */
57 if (accept != NULL) {
58 if (xs_str_in(accept, "text/xml") != -1 ||
M
snac.c
+1,
-1
1@@ -127,7 +127,7 @@ void srv_log(xs_str *str)
2 }
3
4
5-void snac_log(snac *snac, xs_str *str)
6+void snac_log(const snac *snac, xs_str *str)
7 /* prints a user debugging information */
8 {
9 xs *o_str = str;
M
snac.h
+1,
-1
1@@ -97,7 +97,7 @@ enum {
2 SCOPE_FOLLOWERS = 3,
3 };
4
5-void snac_log(snac *user, xs_str *str);
6+void snac_log(const snac *user, xs_str *str);
7 #define snac_debug(user, level, str) do { if (dbglevel >= (level)) \
8 { snac_log((user), (str)); } } while (0)
9