diff options
Diffstat (limited to '')
| -rw-r--r-- | shared.c | 24 | 
1 files changed, 23 insertions, 1 deletions
| @@ -228,7 +228,7 @@ void cgit_querystring_cb(const char *name, const char *value)  	} else if (!strcmp(name, "ofs")) {  		cgit_query_ofs = atoi(value);  	} else if (!strcmp(name, "path")) { -		cgit_query_path = xstrdup(value); +		cgit_query_path = trim_end(value, '/');  	} else if (!strcmp(name, "name")) {  		cgit_query_name = xstrdup(value);  	} @@ -257,6 +257,28 @@ int hextoint(char c)  		return -1;  } +char *trim_end(const char *str, char c) +{ +	int len; +	char *s, *t; + +	if (str == NULL) +		return NULL; +	t = (char *)str; +	len = strlen(t); +	while(len > 0 && t[len - 1] == c) +		len--; + +	if (len == 0) +		return NULL; + +	c = t[len]; +	t[len] = '\0'; +	s = xstrdup(t); +	t[len] = c; +	return s; +} +  void cgit_diff_tree_cb(struct diff_queue_struct *q,  		       struct diff_options *options, void *data)  { | 
