| 265 } |
265 } |
| 266 *d = '\0'; |
266 *d = '\0'; |
| 267 return od; |
267 return od; |
| 268 } |
268 } |
| 269 |
269 |
| |
270 NSAPI_PUBLIC size_t util_uri_escape_s(char *buf, size_t len, const char *s) { |
| |
271 char *d = buf; |
| |
272 ssize_t dlen = len; |
| |
273 if(dlen <= 0) { |
| |
274 return 0; |
| |
275 } |
| |
276 |
| |
277 while (*s) { |
| |
278 if (strchr("% ?#:+&*\"'<>\r\n", *s)) { |
| |
279 snprintf(d, dlen, "%%%02x", (unsigned char)*s); |
| |
280 ++s; |
| |
281 d += 3; |
| |
282 dlen -= 3; |
| |
283 } else if (0x80 & *s) { |
| |
284 snprintf(d, dlen, "%%%02x", (unsigned char)*s); |
| |
285 ++s; |
| |
286 d += 3; |
| |
287 dlen -= 3; |
| |
288 } else { |
| |
289 *d++ = *s++; |
| |
290 dlen--; |
| |
291 } |
| |
292 |
| |
293 if(dlen <= 0) { |
| |
294 return 0; |
| |
295 } |
| |
296 } |
| |
297 *d = '\0'; |
| |
298 return d - buf; |
| |
299 } |
| |
300 |
| 270 |
301 |
| 271 /* --------------------------- util_url_escape ---------------------------- */ |
302 /* --------------------------- util_url_escape ---------------------------- */ |
| 272 |
303 |
| 273 NSAPI_PUBLIC char *util_url_escape(char *od, const char *s) |
304 NSAPI_PUBLIC char *util_url_escape(char *od, const char *s) |
| 274 { |
305 { |