summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--cgit.h1
-rw-r--r--parsing.c2
-rw-r--r--shared.c24
3 files changed, 25 insertions, 2 deletions
diff --git a/cgit.h b/cgit.h
index 81c819d..ddb2fff 100644
--- a/cgit.h
+++ b/cgit.h
@@ -161,2 +161,3 @@ extern int chk_positive(int result, char *msg);
161extern int hextoint(char c); 161extern int hextoint(char c);
162extern char *trim_end(const char *str, char c);
162 163
diff --git a/parsing.c b/parsing.c
index 74a2484..2c05c09 100644
--- a/parsing.c
+++ b/parsing.c
@@ -170,3 +170,3 @@ void cgit_parse_url(const char *url)
170 if (p[1]) 170 if (p[1])
171 cgit_query_path = xstrdup(p + 1); 171 cgit_query_path = trim_end(p + 1, '/');
172 } 172 }
diff --git a/shared.c b/shared.c
index ab00bc9..45db735 100644
--- a/shared.c
+++ b/shared.c
@@ -230,3 +230,3 @@ void cgit_querystring_cb(const char *name, const char *value)
230 } else if (!strcmp(name, "path")) { 230 } else if (!strcmp(name, "path")) {
231 cgit_query_path = xstrdup(value); 231 cgit_query_path = trim_end(value, '/');
232 } else if (!strcmp(name, "name")) { 232 } else if (!strcmp(name, "name")) {
@@ -259,2 +259,24 @@ int hextoint(char c)
259 259
260char *trim_end(const char *str, char c)
261{
262 int len;
263 char *s, *t;
264
265 if (str == NULL)
266 return NULL;
267 t = (char *)str;
268 len = strlen(t);
269 while(len > 0 && t[len - 1] == c)
270 len--;
271
272 if (len == 0)
273 return NULL;
274
275 c = t[len];
276 t[len] = '\0';
277 s = xstrdup(t);
278 t[len] = c;
279 return s;
280}
281
260void cgit_diff_tree_cb(struct diff_queue_struct *q, 282void cgit_diff_tree_cb(struct diff_queue_struct *q,