271 *result = 0; |
271 *result = 0; |
272 return 1; |
272 return 1; |
273 } |
273 } |
274 } |
274 } |
275 |
275 |
|
276 char* util_url_base_s(sstr_t url) { |
|
277 size_t i = 0; |
|
278 if(url.length > 0) { |
|
279 int slmax; |
|
280 if(sstrprefix(url, SC("http://"))) { |
|
281 slmax = 3; |
|
282 } else if(sstrprefix(url, SC("https://"))) { |
|
283 slmax = 3; |
|
284 } else { |
|
285 slmax = 1; |
|
286 } |
|
287 int slashcount = 0; |
|
288 for(i=0;i<url.length;i++) { |
|
289 if(url.ptr[i] == '/') { |
|
290 slashcount++; |
|
291 if(slashcount == slmax) { |
|
292 i++; |
|
293 break; |
|
294 } |
|
295 } |
|
296 } |
|
297 } |
|
298 sstr_t server = sstrsubsl(url, 0, i); |
|
299 return sstrdup(server).ptr; |
|
300 } |
|
301 |
276 char* util_url_base(char *url) { |
302 char* util_url_base(char *url) { |
277 sstr_t u = sstr(url); |
303 return util_url_base_s(sstr(url)); |
278 int len = u.length; |
304 } |
279 int slashcount = 0; |
305 |
280 int slmax; |
306 char* util_url_path(char *url) { |
281 if(len > 7 && !strncasecmp(url, "http://", 7)) { |
|
282 slmax = 3; |
|
283 } else if(len > 8 && !strncasecmp(url, "https://", 8)) { |
|
284 slmax = 3; |
|
285 } else { |
|
286 slmax = 1; |
|
287 } |
|
288 char c; |
|
289 int i = 0; |
|
290 for(i=0;i<len;i++) { |
|
291 c = url[i]; |
|
292 if(c == '/') { |
|
293 slashcount++; |
|
294 if(slashcount == slmax) { |
|
295 i++; |
|
296 break; |
|
297 } |
|
298 } |
|
299 } |
|
300 sstr_t server = sstrsubsl(u, 0, i); |
|
301 server = sstrdup(server); |
|
302 return server.ptr; |
|
303 } |
|
304 |
|
305 char* util_url_path(char *url) { |
|
306 char *path = NULL; |
307 char *path = NULL; |
307 size_t len = strlen(url); |
308 size_t len = strlen(url); |
308 int slashcount = 0; |
309 int slashcount = 0; |
309 int slmax; |
310 int slmax; |
310 if(len > 7 && !strncasecmp(url, "http://", 7)) { |
311 if(len > 7 && !strncasecmp(url, "http://", 7)) { |