commit 8cf7559
default
·
2024-05-23 08:01:37 +0000 UTC
parent 63e0ca5
Added more const.
20 files changed,
+171,
-150
+20,
-19
1@@ -163,7 +163,7 @@ const char *get_atto(const xs_dict *msg)
2 if (xs_type(actor) == XSTYPE_LIST) {
3 const xs_list *p = actor;
4 int c = 0;
5- xs_dict *v;
6+ const xs_dict *v;
7 actor = NULL;
8
9 while (actor == NULL && xs_list_next(p, &v, &c)) {
10@@ -192,7 +192,7 @@ xs_list *get_attachments(const xs_dict *msg)
11 /* try first the attachments list */
12 if (!xs_is_null(p = xs_dict_get(msg, "attachment"))) {
13 xs *attach = NULL;
14- xs_val *v;
15+ const xs_val *v;
16
17 /* ensure it's a list */
18 if (xs_type(p) == XSTYPE_DICT) {
19@@ -257,7 +257,7 @@ xs_list *get_attachments(const xs_dict *msg)
20 const char *href = NULL;
21 const char *type = NULL;
22 int c = 0;
23- xs_val *v;
24+ const xs_val *v;
25
26 while (href == NULL && xs_list_next(p, &v, &c)) {
27 if (xs_type(v) == XSTYPE_DICT) {
28@@ -271,7 +271,7 @@ xs_list *get_attachments(const xs_dict *msg)
29 strcmp(mtype, "application/x-mpegURL") == 0 &&
30 xs_type(tag) == XSTYPE_LIST) {
31 /* now iterate the tag list, looking for a video URL */
32- xs_dict *d;
33+ const xs_dict *d;
34 int c = 0;
35
36 while (href == NULL && xs_list_next(tag, &d, &c)) {
37@@ -482,7 +482,7 @@ xs_list *recipient_list(snac *snac, const xs_dict *msg, int expand_public)
38 const xs_list *lists[] = { to, cc, NULL };
39 for (n = 0; lists[n]; n++) {
40 xs_list *l = (xs_list *)lists[n];
41- char *v;
42+ const char *v;
43 xs *tl = NULL;
44
45 /* if it's a string, create a list with only one element */
46@@ -497,7 +497,7 @@ xs_list *recipient_list(snac *snac, const xs_dict *msg, int expand_public)
47 if (expand_public && strcmp(v, public_address) == 0) {
48 /* iterate the followers and add them */
49 xs *fwers = follower_list(snac);
50- char *actor;
51+ const char *actor;
52
53 char *p = fwers;
54 while (xs_list_iter(&p, &actor))
55@@ -628,7 +628,7 @@ int is_msg_for_me(snac *snac, const xs_dict *c_msg)
56 const xs_dict *msg = xs_dict_get(c_msg, "object");
57 xs *rcpts = recipient_list(snac, msg, 0);
58 xs_list *p = rcpts;
59- xs_str *v;
60+ const xs_str *v;
61
62 xs *actor_followers = NULL;
63
64@@ -693,7 +693,7 @@ xs_str *process_tags(snac *snac, const char *content, xs_list **tag)
65 xs_list *tl = *tag;
66 xs *split;
67 xs_list *p;
68- xs_val *v;
69+ const xs_val *v;
70 int n = 0;
71
72 /* create a default server for incomplete mentions */
73@@ -1205,8 +1205,8 @@ xs_dict *msg_actor(snac *snac)
74 const xs_dict *metadata = xs_dict_get(snac->config, "metadata");
75 if (xs_type(metadata) == XSTYPE_DICT) {
76 xs *attach = xs_list_new();
77- xs_str *k;
78- xs_str *v;
79+ const xs_str *k;
80+ const xs_str *v;
81
82 int c = 0;
83 while (xs_dict_next(metadata, &k, &v, &c)) {
84@@ -1351,7 +1351,7 @@ xs_dict *msg_note(snac *snac, const xs_str *content, const xs_val *rcpts,
85 xs *atls = xs_list_new();
86 xs_dict *msg = msg_base(snac, "Note", id, NULL, "@now", NULL);
87 xs_list *p;
88- xs_val *v;
89+ const xs_val *v;
90
91 if (rcpts == NULL)
92 to = xs_list_new();
93@@ -1528,7 +1528,7 @@ xs_dict *msg_question(snac *user, const char *content, xs_list *attach,
94
95 xs *o = xs_list_new();
96 xs_list *p = (xs_list *)opts;
97- xs_str *v;
98+ const xs_str *v;
99 xs *replies = xs_json_loads("{\"type\":\"Collection\",\"totalItems\":0}");
100
101 xs_set_init(&seen);
102@@ -1576,7 +1576,7 @@ int update_question(snac *user, const char *id)
103 xs *lopts = xs_list_new();
104 const xs_list *opts;
105 xs_list *p;
106- xs_val *v;
107+ const xs_val *v;
108
109 /* get the object */
110 if (!valid_status(object_get(id, &msg)))
111@@ -2190,7 +2190,7 @@ void process_user_queue_item(snac *snac, xs_dict *q_item)
112 xs *rcpts = recipient_list(snac, msg, 1);
113 xs_set inboxes;
114 xs_list *p;
115- xs_str *actor;
116+ const xs_str *actor;
117
118 xs_set_init(&inboxes);
119
120@@ -2212,7 +2212,7 @@ void process_user_queue_item(snac *snac, xs_dict *q_item)
121 if (is_msg_public(msg)) {
122 if (xs_type(xs_dict_get(srv_config, "disable_inbox_collection")) != XSTYPE_TRUE) {
123 xs *shibx = inbox_list();
124- xs_str *inbox;
125+ const xs_str *inbox;
126
127 p = shibx;
128 while (xs_list_iter(&p, &inbox)) {
129@@ -2304,7 +2304,7 @@ int process_user_queue(snac *snac)
130 xs *list = user_queue(snac);
131
132 xs_list *p = list;
133- xs_str *fn;
134+ const xs_str *fn;
135
136 while (xs_list_iter(&p, &fn)) {
137 xs *q_item = dequeue(fn);
138@@ -2511,7 +2511,7 @@ void process_queue_item(xs_dict *q_item)
139
140 xs *users = user_list();
141 xs_list *p = users;
142- char *v;
143+ const char *v;
144 int cnt = 0;
145
146 while (xs_list_iter(&p, &v)) {
147@@ -2554,7 +2554,7 @@ int process_queue(void)
148 xs *list = queue();
149
150 xs_list *p = list;
151- xs_str *fn;
152+ const xs_str *fn;
153
154 while (xs_list_iter(&p, &fn)) {
155 xs *q_item = dequeue(fn);
156@@ -2616,7 +2616,8 @@ int activitypub_get_handler(const xs_dict *req, const char *q_path,
157 xs *elems = timeline_simple_list(&snac, "public", 0, 20);
158 xs *list = xs_list_new();
159 msg = msg_collection(&snac, id);
160- char *p, *v;
161+ char *p;
162+ const char *v;
163
164 p = elems;
165 while (xs_list_iter(&p, &v)) {
M
data.c
+31,
-27
1@@ -193,7 +193,7 @@ int user_open(snac *user, const char *uid)
2 xs *lcuid = xs_tolower_i(xs_dup(uid));
3 xs *ulist = user_list();
4 xs_list *p = ulist;
5- xs_str *v;
6+ const xs_str *v;
7
8 while (xs_list_iter(&p, &v)) {
9 xs *v2 = xs_tolower_i(xs_dup(v));
10@@ -289,7 +289,7 @@ int user_open_by_md5(snac *snac, const char *md5)
11 {
12 xs *ulist = user_list();
13 xs_list *p = ulist;
14- xs_str *v;
15+ const xs_str *v;
16
17 while (xs_list_iter(&p, &v)) {
18 user_open(snac, v);
19@@ -772,7 +772,8 @@ int object_del_by_md5(const char *md5)
20 xs *spec = xs_dup(fn);
21 spec = xs_replace_i(spec, ".json", "*.idx");
22 xs *files = xs_glob(spec, 0, 0);
23- char *p, *v;
24+ char *p;
25+ const char *v;
26
27 p = files;
28 while (xs_list_iter(&p, &v)) {
29@@ -1033,7 +1034,8 @@ xs_list *follower_list(snac *snac)
30 {
31 xs *list = object_user_cache_list(snac, "followers", XS_ALL, 0);
32 xs_list *fwers = xs_list_new();
33- char *p, *v;
34+ char *p;
35+ const char *v;
36
37 /* resolve the list of md5 to be a list of actors */
38 p = list;
39@@ -1196,7 +1198,7 @@ xs_list *timeline_top_level(snac *snac, const xs_list *list)
40 /* returns the top level md5 entries from this index */
41 {
42 xs_set seen;
43- xs_str *v;
44+ const xs_str *v;
45
46 xs_set_init(&seen);
47
48@@ -1367,7 +1369,7 @@ xs_list *following_list(snac *snac)
49 xs *spec = xs_fmt("%s/following/" "*.json", snac->basedir);
50 xs *glist = xs_glob(spec, 0, 0);
51 xs_list *p;
52- xs_str *v;
53+ const xs_str *v;
54 xs_list *list = xs_list_new();
55
56 /* iterate the list of files */
57@@ -1537,7 +1539,8 @@ void hide(snac *snac, const char *id)
58
59 /* hide all the children */
60 xs *chld = object_children(id);
61- char *p, *v;
62+ char *p;
63+ const char *v;
64
65 p = chld;
66 while (xs_list_iter(&p, &v)) {
67@@ -1694,7 +1697,7 @@ void tag_index(const char *id, const xs_dict *obj)
68
69 mkdirx(g_tag_dir);
70
71- xs_dict *v;
72+ const xs_dict *v;
73 int ct = 0;
74 while (xs_list_next(tags, &v, &ct)) {
75 const char *type = xs_dict_get(v, "type");
76@@ -1758,7 +1761,7 @@ xs_val *list_maint(snac *user, const char *list, int op)
77 xs *spec = xs_fmt("%s/list/" "*.id", user->basedir);
78 xs *ls = xs_glob(spec, 0, 0);
79 int c = 0;
80- char *v;
81+ const char *v;
82
83 l = xs_list_new();
84
85@@ -1784,7 +1787,7 @@ xs_val *list_maint(snac *user, const char *list, int op)
86 {
87 xs *lol = list_maint(user, NULL, 0);
88 int c = 0;
89- xs_list *v;
90+ const xs_list *v;
91 int add = 1;
92
93 /* check if this list name already exists */
94@@ -1925,7 +1928,7 @@ void list_distribute(snac *user, const char *who, const xs_dict *post)
95 xs *spec = xs_fmt("%s/list/" "*.lst", user->basedir);
96 xs *ls = xs_glob(spec, 0, 0);
97 int c = 0;
98- char *v;
99+ const char *v;
100
101 while (xs_list_next(ls, &v, &c)) {
102 /* is the actor in this list? */
103@@ -2183,7 +2186,7 @@ xs_list *inbox_list(void)
104 xs *spec = xs_fmt("%s/inbox/" "*", srv_basedir);
105 xs *files = xs_glob(spec, 0, 0);
106 xs_list *p = files;
107- xs_val *v;
108+ const xs_val *v;
109
110 while (xs_list_iter(&p, &v)) {
111 FILE *f;
112@@ -2329,8 +2332,8 @@ xs_list *content_search(snac *user, const char *regex,
113
114 /* iterate all timelines simultaneously */
115 xs_list *tls[3] = {0};
116- char *md5s[3] = {0};
117- int c[3] = {0};
118+ const char *md5s[3] = {0};
119+ int c[3] = {0};
120
121 tls[0] = timeline_simple_list(user, "public", 0, XS_ALL); /* public */
122 tls[1] = timeline_instance_list(0, XS_ALL); /* instance */
123@@ -2368,7 +2371,7 @@ xs_list *content_search(snac *user, const char *regex,
124 if (newest == -1)
125 break;
126
127- char *md5 = md5s[newest];
128+ const char *md5 = md5s[newest];
129
130 /* advance the chosen timeline */
131 if (!xs_list_next(tls[newest], &md5s[newest], &c[newest]))
132@@ -2534,7 +2537,7 @@ xs_list *notify_list(snac *snac, int skip, int show)
133 xs *spec = xs_fmt("%s/notify/" "*.json", snac->basedir);
134 xs *lst = xs_glob(spec, 1, 0);
135 xs_list *p = lst;
136- char *v;
137+ const char *v;
138
139 while (xs_list_iter(&p, &v)) {
140 char *p = strrchr(v, '.');
141@@ -2562,7 +2565,7 @@ int notify_new_num(snac *snac)
142 int cnt = 0;
143
144 xs_list *p = lst;
145- xs_str *v;
146+ const xs_str *v;
147
148 while (xs_list_iter(&p, &v)) {
149 xs *id = xs_strip_i(xs_dup(v));
150@@ -2584,7 +2587,7 @@ void notify_clear(snac *snac)
151 xs *spec = xs_fmt("%s/notify/" "*", snac->basedir);
152 xs *lst = xs_glob(spec, 0, 0);
153 xs_list *p = lst;
154- xs_str *v;
155+ const xs_str *v;
156
157 while (xs_list_iter(&p, &v))
158 unlink(v);
159@@ -2842,7 +2845,7 @@ int was_question_voted(snac *user, const char *id)
160 xs *children = object_children(id);
161 int voted = 0;
162 xs_list *p;
163- xs_str *md5;
164+ const xs_str *md5;
165
166 p = children;
167 while (xs_list_iter(&p, &md5)) {
168@@ -2869,7 +2872,7 @@ xs_list *user_queue(snac *snac)
169 xs_list *list = xs_list_new();
170 time_t t = time(NULL);
171 xs_list *p;
172- xs_val *v;
173+ const xs_val *v;
174
175 xs *fns = xs_glob(spec, 0, 0);
176
177@@ -2898,7 +2901,7 @@ xs_list *queue(void)
178 xs_list *list = xs_list_new();
179 time_t t = time(NULL);
180 xs_list *p;
181- xs_val *v;
182+ const xs_val *v;
183
184 xs *fns = xs_glob(spec, 0, 0);
185
186@@ -2974,7 +2977,7 @@ static void _purge_dir(const char *dir, int days)
187 xs *spec = xs_fmt("%s/" "*", dir);
188 xs *list = xs_glob(spec, 0, 0);
189 xs_list *p;
190- xs_str *v;
191+ const xs_str *v;
192
193 p = list;
194 while (xs_list_iter(&p, &v))
195@@ -3000,7 +3003,7 @@ void purge_server(void)
196 xs *spec = xs_fmt("%s/object/??", srv_basedir);
197 xs *dirs = xs_glob(spec, 0, 0);
198 xs_list *p;
199- xs_str *v;
200+ const xs_str *v;
201 int cnt = 0;
202 int icnt = 0;
203
204@@ -3009,7 +3012,7 @@ void purge_server(void)
205 p = dirs;
206 while (xs_list_iter(&p, &v)) {
207 xs_list *p2;
208- xs_str *v2;
209+ const xs_str *v2;
210
211 {
212 xs *spec2 = xs_fmt("%s/" "*.json", v);
213@@ -3088,7 +3091,7 @@ void purge_server(void)
214 xs *spec2 = xs_fmt("%s/" "*.idx", v);
215 xs *files = xs_glob(spec2, 0, 0);
216 xs_list *p2;
217- xs_str *v2;
218+ const xs_str *v2;
219
220 p2 = files;
221 while (xs_list_iter(&p2, &v2)) {
222@@ -3152,7 +3155,7 @@ void purge_user(snac *snac)
223 xs *spec = xs_fmt("%s/list/" "*.idx", snac->basedir);
224 xs *lol = xs_glob(spec, 0, 0);
225 int c = 0;
226- char *v;
227+ const char *v;
228
229 while (xs_list_next(lol, &v, &c)) {
230 int gc = index_gc(v);
231@@ -3170,7 +3173,8 @@ void purge_all(void)
232 {
233 snac snac;
234 xs *list = user_list();
235- char *p, *uid;
236+ char *p;
237+ const char *uid;
238
239 p = list;
240 while (xs_list_iter(&p, &uid)) {
M
format.c
+7,
-4
1@@ -82,7 +82,8 @@ static xs_str *format_line(const char *line, xs_list **attach)
2 /* formats a line */
3 {
4 xs_str *s = xs_str_new(NULL);
5- char *p, *v;
6+ char *p;
7+ const char *v;
8
9 /* split by markup */
10 xs *sm = xs_regex_split(line,
11@@ -155,7 +156,8 @@ xs_str *not_really_markdown(const char *content, xs_list **attach, xs_list **tag
12 int in_pre = 0;
13 int in_blq = 0;
14 xs *list;
15- char *p, *v;
16+ char *p;
17+ const char *v;
18
19 /* work by lines */
20 list = xs_split(content, "\n");
21@@ -234,7 +236,7 @@ xs_str *not_really_markdown(const char *content, xs_list **attach, xs_list **tag
22 /* traditional emoticons */
23 xs *d = emojis();
24 int c = 0;
25- char *k, *v;
26+ const char *k, *v;
27
28 while (xs_dict_next(d, &k, &v, &c)) {
29 const char *t = NULL;
30@@ -280,7 +282,8 @@ xs_str *sanitize(const char *content)
31 xs_str *s = xs_str_new(NULL);
32 xs *sl;
33 int n = 0;
34- char *p, *v;
35+ char *p;
36+ const char *v;
37
38 sl = xs_regex_split(content, "</?[^>]+>");
39
M
html.c
+18,
-18
1@@ -57,7 +57,7 @@ xs_str *replace_shortnames(xs_str *s, const xs_list *tag, int ems)
2
3 xs *style = xs_fmt("height: %dem; width: %dem; vertical-align: middle;", ems, ems);
4
5- char *v;
6+ const char *v;
7 int c = 0;
8
9 while (xs_list_next(tag_list, &v, &c)) {
10@@ -461,7 +461,7 @@ static xs_html *html_base_head(void)
11 xs *f;
12 f = xs_fmt("%s/favicon.ico", srv_baseurl);
13 const xs_list *p = xs_dict_get(srv_config, "cssurls");
14- char *v;
15+ const char *v;
16 int c = 0;
17
18 while (xs_list_next(p, &v, &c)) {
19@@ -801,8 +801,8 @@ static xs_html *html_user_body(snac *user, int read_only)
20
21 const xs_dict *metadata = xs_dict_get(user->config, "metadata");
22 if (xs_type(metadata) == XSTYPE_DICT) {
23- xs_str *k;
24- xs_str *v;
25+ const xs_str *k;
26+ const xs_str *v;
27
28 xs_dict *val_links = user->links;
29 if (xs_is_null(val_links))
30@@ -974,8 +974,8 @@ xs_html *html_top_controls(snac *snac)
31
32 xs *metadata = xs_str_new(NULL);
33 const xs_dict *md = xs_dict_get(snac->config, "metadata");
34- xs_str *k;
35- xs_str *v;
36+ const xs_str *k;
37+ const xs_str *v;
38
39 int c = 0;
40 while (xs_dict_next(md, &k, &v, &c)) {
41@@ -1161,7 +1161,7 @@ xs_str *build_mentions(snac *snac, const xs_dict *msg)
42 {
43 xs_str *s = xs_str_new(NULL);
44 const char *list = xs_dict_get(msg, "tag");
45- char *v;
46+ const char *v;
47 int c = 0;
48
49 while (xs_list_next(list, &v, &c)) {
50@@ -1372,7 +1372,7 @@ xs_html *html_entry_controls(snac *snac, const char *actor,
51
52
53 xs_html *html_entry(snac *user, xs_dict *msg, int read_only,
54- int level, char *md5, int hide_children)
55+ int level, const char *md5, int hide_children)
56 {
57 const char *id = xs_dict_get(msg, "id");
58 const char *type = xs_dict_get(msg, "type");
59@@ -1670,7 +1670,7 @@ xs_html *html_entry(snac *user, xs_dict *msg, int read_only,
60 const xs_list *oo = xs_dict_get(msg, "oneOf");
61 const xs_list *ao = xs_dict_get(msg, "anyOf");
62 const xs_list *p;
63- xs_dict *v;
64+ const xs_dict *v;
65 int closed = 0;
66 const char *f_closed = NULL;
67
68@@ -1827,7 +1827,7 @@ xs_html *html_entry(snac *user, xs_dict *msg, int read_only,
69 content_attachments);
70
71 int c = 0;
72- xs_dict *a;
73+ const xs_dict *a;
74 while (xs_list_next(attach, &a, &c)) {
75 const char *type = xs_dict_get(a, "type");
76 const char *href = xs_dict_get(a, "href");
77@@ -1945,7 +1945,7 @@ xs_html *html_entry(snac *user, xs_dict *msg, int read_only,
78 }
79
80 xs_list *p = children;
81- char *cmd5;
82+ const char *cmd5;
83 int cnt = 0;
84 int o_cnt = 0;
85
86@@ -2021,7 +2021,7 @@ xs_str *html_timeline(snac *user, const xs_list *list, int read_only,
87 /* returns the HTML for the timeline */
88 {
89 xs_list *p = (xs_list *)list;
90- char *v;
91+ const char *v;
92 double t = ftime();
93
94 xs *desc = NULL;
95@@ -2130,7 +2130,7 @@ xs_str *html_timeline(snac *user, const xs_list *list, int read_only,
96
97 xs *list = history_list(user);
98 xs_list *p = list;
99- char *v;
100+ const char *v;
101
102 while (xs_list_iter(&p, &v)) {
103 xs *fn = xs_replace(v, ".html", "");
104@@ -2203,7 +2203,7 @@ xs_html *html_people_list(snac *snac, xs_list *list, char *header, char *t)
105 xs_html_text("..."))));
106
107 xs_list *p = list;
108- char *actor_id;
109+ const char *actor_id;
110
111 while (xs_list_iter(&p, &actor_id)) {
112 xs *md5 = xs_md5_hex(actor_id, strlen(actor_id));
113@@ -2363,7 +2363,7 @@ xs_str *html_notifications(snac *user, int skip, int show)
114 xs_html *noti_seen = NULL;
115
116 xs_list *p = n_list;
117- xs_str *v;
118+ const xs_str *v;
119 while (xs_list_iter(&p, &v)) {
120 xs *noti = notify_get(user, v);
121
122@@ -3232,7 +3232,7 @@ int html_post_handler(const xs_dict *req, const char *q_path,
123 xs_dict *md = xs_dict_new();
124 xs *l = xs_split(v, "\n");
125 xs_list *p = l;
126- xs_str *kp;
127+ const xs_str *kp;
128
129 while (xs_list_iter(&p, &kp)) {
130 xs *kpl = xs_split_n(kp, "=", 1);
131@@ -3333,7 +3333,7 @@ int html_post_handler(const xs_dict *req, const char *q_path,
132 }
133
134 xs_list *p = ls;
135- xs_str *v;
136+ const xs_str *v;
137
138 while (xs_list_iter(&p, &v)) {
139 xs *msg = msg_note(&snac, "", actor, irt, NULL, 1);
140@@ -3405,7 +3405,7 @@ xs_str *timeline_to_rss(snac *user, const xs_list *timeline, char *title, char *
141 xs_html_add(rss, channel);
142
143 int c = 0;
144- char *v;
145+ const char *v;
146
147 while (xs_list_next(timeline, &v, &c)) {
148 xs *msg = NULL;
M
http.c
+3,
-3
1@@ -26,7 +26,7 @@ xs_dict *http_signed_request_raw(const char *keyid, const char *seckey,
2 xs *hdrs = NULL;
3 const char *host;
4 const char *target;
5- char *k, *v;
6+ const char *k, *v;
7 xs_dict *response;
8
9 date = xs_str_utctime(0, "%a, %d %b %Y %H:%M:%S GMT");
10@@ -144,7 +144,7 @@ int check_signature(const xs_dict *req, xs_str **err)
11 /* extract the values */
12 xs *l = xs_split(sig_hdr, ",");
13 int c = 0;
14- xs_val *v;
15+ const xs_val *v;
16
17 while (xs_list_next(l, &v, &c)) {
18 xs *kv = xs_split_n(v, "=", 1);
19@@ -205,7 +205,7 @@ int check_signature(const xs_dict *req, xs_str **err)
20 {
21 xs *l = xs_split(headers, " ");
22 xs_list *p;
23- xs_val *v;
24+ const xs_val *v;
25
26 p = l;
27 while (xs_list_iter(&p, &v)) {
M
httpd.c
+5,
-4
1@@ -75,7 +75,7 @@ xs_str *nodeinfo_2_0(void)
2 int n_posts = 0;
3 xs *users = user_list();
4 xs_list *p = users;
5- char *v;
6+ const char *v;
7 double now = (double)time(NULL);
8
9 while (xs_list_iter(&p, &v)) {
10@@ -128,7 +128,7 @@ static xs_str *greeting_html(void)
11 const char *host = xs_dict_get(srv_config, "host");
12 xs *list = user_list();
13 xs_list *p = list;
14- xs_str *uid;
15+ const xs_str *uid;
16
17 xs_html *ul = xs_html_tag("ul",
18 xs_html_attr("class", "snac-user-list"));
19@@ -413,7 +413,7 @@ void httpd_connection(FILE *f)
20 /* if there are any additional headers, add them */
21 const xs_dict *more_headers = xs_dict_get(srv_config, "http_headers");
22 if (xs_type(more_headers) == XSTYPE_DICT) {
23- char *k, *v;
24+ const char *k, *v;
25 int c = 0;
26 while (xs_dict_next(more_headers, &k, &v, &c))
27 headers = xs_dict_set(headers, k, v);
28@@ -590,7 +590,8 @@ static void *background_thread(void *arg)
29
30 {
31 xs *list = user_list();
32- char *p, *uid;
33+ char *p;
34+ const char *uid;
35
36 /* process queues for all users */
37 p = list;
M
main.c
+1,
-1
1@@ -382,7 +382,7 @@ int main(int argc, char *argv[])
2 xs *r = content_search(&snac, url, 1, 0, XS_ALL, 10, &to);
3
4 int c = 0;
5- char *v;
6+ const char *v;
7
8 /* print results as standalone links */
9 while (xs_list_next(r, &v, &c)) {
+25,
-25
1@@ -599,7 +599,7 @@ xs_dict *mastoapi_account(const xs_dict *actor)
2 const xs_list *p;
3 if (!xs_is_null(p = xs_dict_get(actor, "tag"))) {
4 xs *eml = xs_list_new();
5- xs_dict *v;
6+ const xs_dict *v;
7 int c = 0;
8
9 while (xs_list_next(p, &v, &c)) {
10@@ -637,7 +637,7 @@ xs_dict *mastoapi_account(const xs_dict *actor)
11
12 xs *fields = xs_list_new();
13 p = xs_dict_get(actor, "attachment");
14- xs_dict *v;
15+ const xs_dict *v;
16
17 /* dict of validated links */
18 xs_dict *val_links = NULL;
19@@ -713,7 +713,7 @@ xs_dict *mastoapi_poll(snac *snac, const xs_dict *msg)
20 xs_dict *poll = xs_dict_new();
21 xs *mid = mastoapi_id(msg);
22 const xs_list *opts = NULL;
23- xs_val *v;
24+ const xs_val *v;
25 int num_votes = 0;
26 xs *options = xs_list_new();
27
28@@ -849,7 +849,7 @@ xs_dict *mastoapi_status(snac *snac, const xs_dict *msg)
29
30 {
31 xs_list *p = attach;
32- xs_dict *v;
33+ const xs_dict *v;
34
35 xs *matt = xs_list_new();
36
37@@ -898,7 +898,7 @@ xs_dict *mastoapi_status(snac *snac, const xs_dict *msg)
38 tag_list = xs_list_new();
39
40 tag = tag_list;
41- xs_dict *v;
42+ const xs_dict *v;
43
44 int c = 0;
45 while (xs_list_next(tag, &v, &c)) {
46@@ -1210,8 +1210,8 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path,
47 const xs_dict *metadata = xs_dict_get(snac1.config, "metadata");
48 if (xs_type(metadata) == XSTYPE_DICT) {
49 xs *fields = xs_list_new();
50- xs_str *k;
51- xs_str *v;
52+ const xs_str *k;
53+ const xs_str *v;
54
55 xs_dict *val_links = snac1.links;
56 if (xs_is_null(val_links))
57@@ -1334,7 +1334,7 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path,
58 xs *wers = follower_list(&snac1);
59 xs *ulst = user_list();
60 xs_list *p;
61- xs_str *v;
62+ const xs_str *v;
63 xs_set seen;
64
65 xs_set_init(&seen);
66@@ -1410,7 +1410,7 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path,
67 /* the public list of posts of a user */
68 xs *timeline = timeline_simple_list(&snac2, "public", 0, 256);
69 xs_list *p = timeline;
70- xs_str *v;
71+ const xs_str *v;
72
73 out = xs_list_new();
74
75@@ -1475,7 +1475,7 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path,
76
77 xs *out = xs_list_new();
78 xs_list *p = timeline;
79- xs_str *v;
80+ const xs_str *v;
81
82 while (xs_list_iter(&p, &v) && cnt < limit) {
83 xs *msg = NULL;
84@@ -1579,7 +1579,7 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path,
85 xs *timeline = timeline_instance_list(0, limit);
86 xs *out = xs_list_new();
87 xs_list *p = timeline;
88- xs_str *md5;
89+ const xs_str *md5;
90
91 snac *user = NULL;
92 if (logged_in)
93@@ -1633,7 +1633,7 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path,
94 xs *timeline = tag_search(tag, 0, limit);
95 xs *out = xs_list_new();
96 xs_list *p = timeline;
97- xs_str *md5;
98+ const xs_str *md5;
99
100 while (xs_list_iter(&p, &md5) && cnt < limit) {
101 xs *msg = NULL;
102@@ -1673,7 +1673,7 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path,
103 xs *timeline = list_timeline(&snac1, list, 0, 2048);
104 xs *out = xs_list_new();
105 int c = 0;
106- char *md5;
107+ const char *md5;
108
109 while (xs_list_next(timeline, &md5, &c)) {
110 xs *msg = NULL;
111@@ -1747,7 +1747,7 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path,
112 xs *l = notify_list(&snac1, 0, 64);
113 xs *out = xs_list_new();
114 xs_list *p = l;
115- xs_dict *v;
116+ const xs_dict *v;
117 const xs_list *excl = xs_dict_get(args, "exclude_types[]");
118
119 while (xs_list_iter(&p, &v)) {
120@@ -1858,7 +1858,7 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path,
121 xs *lol = list_maint(&snac1, NULL, 0);
122 xs *l = xs_list_new();
123 int c = 0;
124- xs_list *li;
125+ const xs_list *li;
126
127 while (xs_list_next(lol, &li, &c)) {
128 xs *d = xs_dict_new();
129@@ -1890,7 +1890,7 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path,
130 xs *actors = list_content(&snac1, p, NULL, 0);
131 xs *out = xs_list_new();
132 int c = 0;
133- char *v;
134+ const char *v;
135
136 while (xs_list_next(actors, &v, &c)) {
137 xs *actor = NULL;
138@@ -1911,7 +1911,7 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path,
139 xs *out = xs_list_new();
140 xs *lol = list_maint(&snac1, NULL, 0);
141 int c = 0;
142- xs_list *v;
143+ const xs_list *v;
144
145 while (xs_list_next(lol, &v, &c)) {
146 const char *id = xs_list_get(v, 0);
147@@ -2105,7 +2105,7 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path,
148 xs *anc = xs_list_new();
149 xs *des = xs_list_new();
150 xs_list *p;
151- xs_str *v;
152+ const xs_str *v;
153 char pid[64];
154
155 /* build the [grand]parent list, moving up */
156@@ -2159,7 +2159,7 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path,
157 l = object_likes(xs_dict_get(msg, "id"));
158
159 xs_list *p = l;
160- xs_str *v;
161+ const xs_str *v;
162
163 while (xs_list_iter(&p, &v)) {
164 xs *actor2 = NULL;
165@@ -2267,7 +2267,7 @@ int mastoapi_get_handler(const xs_dict *req, const char *q_path,
166 int cnt = 40;
167 xs *tl = content_search(&snac1, q, 1, 0, cnt, 0, &to);
168 int c = 0;
169- char *v;
170+ const char *v;
171
172 while (xs_list_next(tl, &v, &c) && --cnt) {
173 xs *post = NULL;
174@@ -2433,7 +2433,7 @@ int mastoapi_post_handler(const xs_dict *req, const char *q_path,
175 }
176
177 xs_list *p = mi;
178- xs_str *v;
179+ const xs_str *v;
180
181 while (xs_list_iter(&p, &v)) {
182 xs *l = xs_list_new();
183@@ -2783,7 +2783,7 @@ int mastoapi_post_handler(const xs_dict *req, const char *q_path,
184 choices = xs_dict_get(args, "choices");
185
186 if (xs_type(choices) == XSTYPE_LIST) {
187- xs_str *v;
188+ const xs_str *v;
189
190 int c = 0;
191 while (xs_list_next(choices, &v, &c)) {
192@@ -2855,7 +2855,7 @@ int mastoapi_post_handler(const xs_dict *req, const char *q_path,
193 if (strcmp(op, "accounts") == 0) {
194 const xs_list *accts = xs_dict_get(args, "account_ids[]");
195 int c = 0;
196- char *v;
197+ const char *v;
198
199 while (xs_list_next(accts, &v, &c)) {
200 list_content(&snac, id, v, 1);
201@@ -2934,7 +2934,7 @@ int mastoapi_delete_handler(const xs_dict *req, const char *q_path,
202 p = xs_list_get(l, -2);
203 const xs_list *accts = xs_dict_get(args, "account_ids[]");
204 int c = 0;
205- char *v;
206+ const char *v;
207
208 while (xs_list_next(accts, &v, &c)) {
209 list_content(&snac, p, v, 2);
210@@ -3083,7 +3083,7 @@ void mastoapi_purge(void)
211 xs *spec = xs_fmt("%s/app/" "*.json", srv_basedir);
212 xs *files = xs_glob(spec, 1, 0);
213 xs_list *p = files;
214- xs_str *v;
215+ const xs_str *v;
216
217 time_t mt = time(NULL) - 3600;
218
+24,
-13
1@@ -43,7 +43,8 @@ int snac_upgrade(xs_str **error)
2 else
3 if (f < 2.2) {
4 xs *users = user_list();
5- char *p, *v;
6+ char *p;
7+ const char *v;
8
9 p = users;
10 while (xs_list_iter(&p, &v)) {
11@@ -52,7 +53,8 @@ int snac_upgrade(xs_str **error)
12 if (user_open(&snac, v)) {
13 xs *spec = xs_fmt("%s/actors/" "*.json", snac.basedir);
14 xs *list = xs_glob(spec, 0, 0);
15- char *g, *fn;
16+ char *g;
17+ const char *fn;
18
19 g = list;
20 while (xs_list_iter(&g, &fn)) {
21@@ -77,14 +79,16 @@ int snac_upgrade(xs_str **error)
22 else
23 if (f < 2.3) {
24 xs *users = user_list();
25- char *p, *v;
26+ char *p;
27+ const char *v;
28
29 p = users;
30 while (xs_list_iter(&p, &v)) {
31 snac snac;
32
33 if (user_open(&snac, v)) {
34- char *p, *v;
35+ char *p;
36+ const char *v;
37 xs *dir = xs_fmt("%s/hidden", snac.basedir);
38
39 /* create the hidden directory */
40@@ -109,7 +113,8 @@ int snac_upgrade(xs_str **error)
41 else
42 if (f < 2.4) {
43 xs *users = user_list();
44- char *p, *v;
45+ char *p;
46+ const char *v;
47
48 p = users;
49 while (xs_list_iter(&p, &v)) {
50@@ -132,7 +137,8 @@ int snac_upgrade(xs_str **error)
51 if (f < 2.5) {
52 /* upgrade followers */
53 xs *users = user_list();
54- char *p, *v;
55+ char *p;
56+ const char *v;
57
58 p = users;
59 while (xs_list_iter(&p, &v)) {
60@@ -141,7 +147,8 @@ int snac_upgrade(xs_str **error)
61 if (user_open(&snac, v)) {
62 xs *spec = xs_fmt("%s/followers/" "*.json", snac.basedir);
63 xs *dir = xs_glob(spec, 0, 0);
64- char *p, *v;
65+ char *p;
66+ const char *v;
67
68 p = dir;
69 while (xs_list_iter(&p, &v)) {
70@@ -175,7 +182,8 @@ int snac_upgrade(xs_str **error)
71 if (f < 2.6) {
72 /* upgrade local/ to public/ */
73 xs *users = user_list();
74- char *p, *v;
75+ char *p;
76+ const char *v;
77
78 p = users;
79 while (xs_list_iter(&p, &v)) {
80@@ -184,7 +192,8 @@ int snac_upgrade(xs_str **error)
81 if (user_open(&snac, v)) {
82 xs *spec = xs_fmt("%s/local/" "*.json", snac.basedir);
83 xs *dir = xs_glob(spec, 0, 0);
84- char *p, *v;
85+ char *p;
86+ const char *v;
87
88 p = dir;
89 while (xs_list_iter(&p, &v)) {
90@@ -206,7 +215,7 @@ int snac_upgrade(xs_str **error)
91 /* if it's from us, add to public */
92 if (xs_startswith(id, snac.actor)) {
93 const xs_list *p;
94- char *v;
95+ const char *v;
96 int c;
97
98 object_user_cache_add(&snac, id, "public");
99@@ -241,7 +250,8 @@ int snac_upgrade(xs_str **error)
100 if (f < 2.7) {
101 /* upgrade timeline/ to private/ */
102 xs *users = user_list();
103- char *p, *v;
104+ char *p;
105+ const char *v;
106
107 p = users;
108 while (xs_list_iter(&p, &v)) {
109@@ -250,7 +260,8 @@ int snac_upgrade(xs_str **error)
110 if (user_open(&snac, v)) {
111 xs *spec = xs_fmt("%s/timeline/" "*.json", snac.basedir);
112 xs *dir = xs_glob(spec, 0, 0);
113- char *p, *v;
114+ char *p;
115+ const char *v;
116
117 p = dir;
118 while (xs_list_iter(&p, &v)) {
119@@ -271,7 +282,7 @@ int snac_upgrade(xs_str **error)
120
121 {
122 const xs_list *p;
123- char *v;
124+ const char *v;
125 int c = 0;
126
127 object_user_cache_add(&snac, id, "private");
M
utils.c
+5,
-5
1@@ -358,7 +358,7 @@ void rm_rf(const char *dir)
2 xs *d = xs_str_cat(xs_dup(dir), "/" "*");
3 xs *l = xs_glob(d, 0, 0);
4 xs_list *p = l;
5- xs_str *v;
6+ const xs_str *v;
7
8 if (dbglevel >= 1)
9 printf("Deleting directory %s\n", dir);
10@@ -393,7 +393,7 @@ int deluser(snac *user)
11 int ret = 0;
12 xs *fwers = following_list(user);
13 xs_list *p = fwers;
14- xs_str *v;
15+ const xs_str *v;
16
17 while (xs_list_iter(&p, &v)) {
18 xs *object = NULL;
19@@ -419,7 +419,7 @@ void verify_links(snac *user)
20 /* verifies a user's links */
21 {
22 const xs_dict *p = xs_dict_get(user->config, "metadata");
23- char *k, *v;
24+ const char *k, *v;
25 int changed = 0;
26
27 xs *headers = xs_dict_new();
28@@ -449,7 +449,7 @@ void verify_links(snac *user)
29 xs *ls = xs_regex_select(payload, "< *(a|link) +[^>]+>");
30
31 xs_list *lp = ls;
32- char *ll;
33+ const char *ll;
34 int vfied = 0;
35
36 while (!vfied && xs_list_iter(&lp, &ll)) {
37@@ -463,7 +463,7 @@ void verify_links(snac *user)
38 xs *href = NULL;
39 int is_rel_me = 0;
40 xs_list *pr = r;
41- char *ar;
42+ const char *ar;
43
44 while (xs_list_iter(&pr, &ar)) {
45 xs *nq = xs_dup(ar);
+1,
-1
1@@ -96,7 +96,7 @@ int webfinger_request_signed(snac *snac, const char *qs, char **actor, char **us
2 if (actor != NULL) {
3 const xs_list *list = xs_dict_get(obj, "links");
4 int c = 0;
5- char *v;
6+ const char *v;
7
8 while (xs_list_next(list, &v, &c)) {
9 if (xs_type(v) == XSTYPE_DICT) {
M
xs.h
+17,
-17
1@@ -94,8 +94,8 @@ xs_list *xs_list_new(void);
2 xs_list *xs_list_append_m(xs_list *list, const char *mem, int dsz);
3 xs_list *_xs_list_append(xs_list *list, const xs_val *vals[]);
4 #define xs_list_append(list, ...) _xs_list_append(list, (const xs_val *[]){ __VA_ARGS__, NULL })
5-int xs_list_iter(xs_list **list, xs_val **value);
6-int xs_list_next(const xs_list *list, xs_val **value, int *ctxt);
7+int xs_list_iter(xs_list **list, const xs_val **value);
8+int xs_list_next(const xs_list *list, const xs_val **value, int *ctxt);
9 int xs_list_len(const xs_list *list);
10 const xs_val *xs_list_get(const xs_list *list, int num);
11 xs_list *xs_list_del(xs_list *list, int num);
12@@ -118,7 +118,7 @@ xs_keyval *xs_keyval_make(xs_keyval *keyval, const xs_str *key, const xs_val *va
13 xs_dict *xs_dict_new(void);
14 xs_dict *xs_dict_append(xs_dict *dict, const xs_str *key, const xs_val *value);
15 xs_dict *xs_dict_prepend(xs_dict *dict, const xs_str *key, const xs_val *value);
16-int xs_dict_next(const xs_dict *dict, xs_str **key, xs_val **value, int *ctxt);
17+int xs_dict_next(const xs_dict *dict, const xs_str **key, const xs_val **value, int *ctxt);
18 const xs_val *xs_dict_get_def(const xs_dict *dict, const xs_str *key, const xs_val *def);
19 #define xs_dict_get(dict, key) xs_dict_get_def(dict, key, NULL)
20 xs_dict *xs_dict_del(xs_dict *dict, const xs_str *key);
21@@ -726,7 +726,7 @@ xs_list *_xs_list_append(xs_list *list, const xs_val *vals[])
22 }
23
24
25-int xs_list_iter(xs_list **list, xs_val **value)
26+int xs_list_iter(xs_list **list, const xs_val **value)
27 /* iterates a list value */
28 {
29 int goon = 1;
30@@ -757,7 +757,7 @@ int xs_list_iter(xs_list **list, xs_val **value)
31 }
32
33
34-int xs_list_next(const xs_list *list, xs_val **value, int *ctxt)
35+int xs_list_next(const xs_list *list, const xs_val **value, int *ctxt)
36 /* iterates a list, with context */
37 {
38 if (xs_type(list) != XSTYPE_LIST)
39@@ -765,7 +765,7 @@ int xs_list_next(const xs_list *list, xs_val **value, int *ctxt)
40
41 int goon = 1;
42
43- char *p = (char *)list;
44+ const char *p = list;
45
46 /* skip the start of the list */
47 if (*ctxt == 0)
48@@ -800,7 +800,7 @@ int xs_list_len(const xs_list *list)
49
50 int c = 0;
51 xs_list *p = (xs_list *)list;
52- xs_val *v;
53+ const xs_val *v;
54
55 while (xs_list_iter(&p, &v))
56 c++;
57@@ -819,7 +819,7 @@ const xs_val *xs_list_get(const xs_list *list, int num)
58
59 int c = 0;
60 xs_list *p = (xs_list *)list;
61- xs_val *v;
62+ const xs_val *v;
63
64 while (xs_list_iter(&p, &v)) {
65 if (c == num)
66@@ -881,7 +881,7 @@ xs_list *xs_list_dequeue(xs_list *list, xs_val **data, int last)
67 XS_ASSERT_TYPE(list, XSTYPE_LIST);
68
69 xs_list *p = list;
70- xs_val *v = NULL;
71+ const xs_val *v = NULL;
72
73 if (!last) {
74 /* get the first */
75@@ -910,7 +910,7 @@ int xs_list_in(const xs_list *list, const xs_val *val)
76
77 int n = 0;
78 xs_list *p = (xs_list *)list;
79- xs_val *v;
80+ const xs_val *v;
81 int sz = xs_size(val);
82
83 while (xs_list_iter(&p, &v)) {
84@@ -931,7 +931,7 @@ xs_str *xs_join(const xs_list *list, const char *sep)
85
86 xs_str *s = NULL;
87 xs_list *p = (xs_list *)list;
88- xs_val *v;
89+ const xs_val *v;
90 int c = 0;
91 int offset = 0;
92 int ssz = strlen(sep);
93@@ -1087,7 +1087,7 @@ xs_dict *xs_dict_prepend(xs_dict *dict, const xs_str *key, const xs_val *value)
94 }
95
96
97-int xs_dict_next(const xs_dict *dict, xs_str **key, xs_val **value, int *ctxt)
98+int xs_dict_next(const xs_dict *dict, const xs_str **key, const xs_val **value, int *ctxt)
99 /* iterates a dict, with context */
100 {
101 if (xs_type(dict) != XSTYPE_DICT)
102@@ -1131,8 +1131,8 @@ const xs_val *xs_dict_get_def(const xs_dict *dict, const xs_str *key, const xs_v
103 XS_ASSERT_TYPE(dict, XSTYPE_DICT);
104 XS_ASSERT_TYPE(key, XSTYPE_STRING);
105
106- xs_str *k;
107- xs_val *v;
108+ const xs_str *k;
109+ const xs_val *v;
110 int c = 0;
111
112 while (xs_dict_next(dict, &k, &v, &c)) {
113@@ -1150,14 +1150,14 @@ xs_dict *xs_dict_del(xs_dict *dict, const xs_str *key)
114 XS_ASSERT_TYPE(dict, XSTYPE_DICT);
115 XS_ASSERT_TYPE(key, XSTYPE_STRING);
116
117- xs_str *k;
118- xs_val *v;
119+ const xs_str *k;
120+ const xs_val *v;
121 int c = 0;
122
123 while (xs_dict_next(dict, &k, &v, &c)) {
124 if (strcmp(k, key) == 0) {
125 /* the address of the item is just behind the key */
126- char *i = k - 1;
127+ char *i = (char *)k - 1;
128
129 dict = xs_collapse(dict, i - dict, xs_size(i));
130 break;
+2,
-2
1@@ -93,8 +93,8 @@ xs_dict *xs_http_request(const char *method, const char *url,
2 xs_dict *response;
3 CURL *curl;
4 struct curl_slist *list = NULL;
5- xs_str *k;
6- xs_val *v;
7+ const xs_str *k;
8+ const xs_val *v;
9 long lstatus = 0;
10 struct _payload_data pd;
11
+2,
-2
1@@ -293,8 +293,8 @@ void xs_fcgi_response(FILE *f, int status, xs_dict *headers, xs_str *body, int b
2 struct fcgi_record_header hdr = {0};
3 struct fcgi_end_request ereq = {0};
4 xs *out = xs_str_new(NULL);
5- xs_str *k;
6- xs_str *v;
7+ const xs_str *k;
8+ const xs_str *v;
9
10 /* no previous id? it's an error */
11 if (fcgi_id == -1)
+2,
-2
1@@ -99,8 +99,8 @@ void xs_httpd_response(FILE *f, int status, xs_dict *headers, xs_str *body, int
2 /* sends an httpd response */
3 {
4 xs *proto;
5- xs_str *k;
6- xs_val *v;
7+ const xs_str *k;
8+ const xs_val *v;
9
10 proto = xs_fmt("HTTP/1.1 %d %s", status, status / 100 == 2 ? "OK" : "ERROR");
11 fprintf(f, "%s\r\n", proto);
+2,
-2
1@@ -76,7 +76,7 @@ static void _xs_json_dump(const xs_val *data, int level, int indent, FILE *f)
2 {
3 int c = 0;
4 int ct = 0;
5- xs_val *v;
6+ const xs_val *v;
7
8 switch (xs_type(data)) {
9 case XSTYPE_NULL:
10@@ -116,7 +116,7 @@ static void _xs_json_dump(const xs_val *data, int level, int indent, FILE *f)
11 case XSTYPE_DICT:
12 fputc('{', f);
13
14- xs_str *k;
15+ const xs_str *k;
16
17 while (xs_dict_next(data, &k, &v, &ct)) {
18 if (c != 0)
+2,
-2
1@@ -64,7 +64,7 @@ xs_list *xs_regex_select_n(const char *str, const char *rx, int count)
2 {
3 xs_list *list = xs_list_new();
4 xs *split = NULL;
5- xs_val *v;
6+ const xs_val *v;
7 int n = 0;
8 int c = 0;
9
10@@ -89,7 +89,7 @@ xs_list *xs_regex_replace_in(xs_str *str, const char *rx, const char *rep, int c
11 {
12 xs_str *s = xs_str_new(NULL);
13 xs *split = xs_regex_split_n(str, rx, count);
14- xs_val *v;
15+ const xs_val *v;
16 int n = 0;
17 int c = 0;
18 int pholder = !!strchr(rep, '&');
M
xs_set.h
+2,
-1
1@@ -85,7 +85,8 @@ int xs_set_add(xs_set *s, const xs_val *data)
2 {
3 /* is it 'full'? */
4 if (s->used >= s->elems / 2) {
5- char *p, *v;
6+ char *p;
7+ const xs_val *v;
8
9 /* expand! */
10 s->elems *= 2;
M
xs_url.h
+1,
-1
1@@ -52,7 +52,7 @@ xs_dict *xs_url_vars(const char *str)
2 xs *args = xs_split(str, "&");
3
4 xs_list *l;
5- xs_val *v;
6+ const xs_val *v;
7
8 l = args;
9 while (xs_list_iter(&l, &v)) {
+1,
-1
1@@ -1 +1 @@
2-/* 34850dcdec50b669a2c0bbe9f16f6d9c4b16eafd 2024-05-21T14:06:02+02:00 */
3+/* 65265483c102909393287bfb173d1a7ae9c3be00 2024-05-23T09:57:20+02:00 */