ret->url = trim_end(url, '/');
ret->name = ret->url;
ret->path = NULL;
- ret->desc = NULL;
+ ret->desc = "[no description]";
ret->owner = NULL;
ret->group = cgit_repo_group;
ret->defbranch = "master";
cgit_logo_link = xstrdup(value);
else if (!strcmp(name, "module-link"))
cgit_module_link = xstrdup(value);
- else if (!strcmp(name, "virtual-root"))
+ else if (!strcmp(name, "virtual-root")) {
cgit_virtual_root = trim_end(value, '/');
- else if (!strcmp(name, "nocache"))
+ if (!cgit_virtual_root && (!strcmp(value, "/")))
+ cgit_virtual_root = "";
+ } else if (!strcmp(name, "nocache"))
cgit_nocache = atoi(value);
else if (!strcmp(name, "snapshots"))
cgit_snapshots = cgit_parse_snapshots_mask(value);
return s;
}
+char *strlpart(char *txt, int maxlen)
+{
+ char *result;
+
+ if (!txt)
+ return txt;
+
+ if (strlen(txt) <= maxlen)
+ return txt;
+ result = xmalloc(maxlen + 1);
+ memcpy(result, txt, maxlen - 3);
+ result[maxlen-1] = result[maxlen-2] = result[maxlen-3] = '.';
+ result[maxlen] = '\0';
+ return result;
+}
+
+char *strrpart(char *txt, int maxlen)
+{
+ char *result;
+
+ if (!txt)
+ return txt;
+
+ if (strlen(txt) <= maxlen)
+ return txt;
+ result = xmalloc(maxlen + 1);
+ memcpy(result + 3, txt + strlen(txt) - maxlen + 4, maxlen - 3);
+ result[0] = result[1] = result[2] = '.';
+ return result;
+}
+
void cgit_add_ref(struct reflist *list, struct refinfo *ref)
{
size_t size;