summaryrefslogtreecommitdiffabout
path: root/shared.c
Unidiff
Diffstat (limited to 'shared.c') (more/less context) (ignore whitespace changes)
-rw-r--r--shared.c24
1 files changed, 23 insertions, 1 deletions
diff --git a/shared.c b/shared.c
index ab00bc9..45db735 100644
--- a/shared.c
+++ b/shared.c
@@ -225,13 +225,13 @@ void cgit_querystring_cb(const char *name, const char *value)
225 } else if (!strcmp(name, "id2")) { 225 } else if (!strcmp(name, "id2")) {
226 cgit_query_sha2 = xstrdup(value); 226 cgit_query_sha2 = xstrdup(value);
227 cgit_query_has_sha1 = 1; 227 cgit_query_has_sha1 = 1;
228 } else if (!strcmp(name, "ofs")) { 228 } else if (!strcmp(name, "ofs")) {
229 cgit_query_ofs = atoi(value); 229 cgit_query_ofs = atoi(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")) {
233 cgit_query_name = xstrdup(value); 233 cgit_query_name = xstrdup(value);
234 } 234 }
235} 235}
236 236
237void *cgit_free_commitinfo(struct commitinfo *info) 237void *cgit_free_commitinfo(struct commitinfo *info)
@@ -254,12 +254,34 @@ int hextoint(char c)
254 else if (c >= '0' && c <= '9') 254 else if (c >= '0' && c <= '9')
255 return c - '0'; 255 return c - '0';
256 else 256 else
257 return -1; 257 return -1;
258} 258}
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,
261 struct diff_options *options, void *data) 283 struct diff_options *options, void *data)
262{ 284{
263 int i; 285 int i;
264 286
265 for (i = 0; i < q->nr; i++) { 287 for (i = 0; i < q->nr; i++) {