]> gitweb.ps.run Git - ps-cgit/blobdiff - shared.c
Add ui-tag.c
[ps-cgit] / shared.c
index ab00bc93c36fec302ef9de8f00ac976dcd14298d..06693b0cdc2f5fd9c1455dee56e660be0c8062e3 100644 (file)
--- a/shared.c
+++ b/shared.c
@@ -12,6 +12,8 @@ struct repolist cgit_repolist;
 struct repoinfo *cgit_repo;
 int cgit_cmd;
 
+const char *cgit_version = CGIT_VERSION;
+
 char *cgit_root_title   = "Git repository browser";
 char *cgit_css          = "/cgit.css";
 char *cgit_logo         = "/git-logo.png";
@@ -61,7 +63,7 @@ int htmlfd = 0;
 int cgit_get_cmd_index(const char *cmd)
 {
        static char *cmds[] = {"log", "commit", "diff", "tree", "blob",
-                              "snapshot", NULL};
+                              "snapshot", "tag", NULL};
        int i;
 
        for(i = 0; cmds[i]; i++)
@@ -228,7 +230,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 +259,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)
 {