libidav/utils.c

changeset 673
8e7e56cfc103
parent 641
b138d1241e68
child 696
ec1509240080
equal deleted inserted replaced
672:4bfe452a2665 673:8e7e56cfc103
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)) {

mercurial