]> gitweb.ps.run Git - ps-cgit/blobdiff - ui-shared.c
ui-tree: move set_title_from_path to ui-shared
[ps-cgit] / ui-shared.c
index 3fa36d6742138ec33e278e7ebb8be857bcfd7684..2547e43d8edd69c12bb04c9962d9ba66f4281ad0 100644 (file)
@@ -1039,7 +1039,7 @@ void cgit_print_pageheader(void)
                free(currenturl);
        }
        html("</td></tr></table>\n");
-       if (ctx.env.authenticated && ctx.qry.vpath) {
+       if (ctx.env.authenticated && ctx.repo && ctx.qry.vpath) {
                html("<div class='path'>");
                html("path: ");
                cgit_print_path_crumbs(ctx.qry.vpath);
@@ -1074,18 +1074,18 @@ void cgit_print_filemode(unsigned short mode)
 void cgit_compose_snapshot_prefix(struct strbuf *filename, const char *base,
                                  const char *ref)
 {
-       unsigned char sha1[20];
+       struct object_id oid;
 
        /*
         * Prettify snapshot names by stripping leading "v" or "V" if the tag
         * name starts with {v,V}[0-9] and the prettify mapping is injective,
         * i.e. each stripped tag can be inverted without ambiguities.
         */
-       if (get_sha1(fmt("refs/tags/%s", ref), sha1) == 0 &&
+       if (get_oid(fmt("refs/tags/%s", ref), &oid) == 0 &&
            (ref[0] == 'v' || ref[0] == 'V') && isdigit(ref[1]) &&
-           ((get_sha1(fmt("refs/tags/%s", ref + 1), sha1) == 0) +
-            (get_sha1(fmt("refs/tags/v%s", ref + 1), sha1) == 0) +
-            (get_sha1(fmt("refs/tags/V%s", ref + 1), sha1) == 0) == 1))
+           ((get_oid(fmt("refs/tags/%s", ref + 1), &oid) == 0) +
+            (get_oid(fmt("refs/tags/v%s", ref + 1), &oid) == 0) +
+            (get_oid(fmt("refs/tags/V%s", ref + 1), &oid) == 0) == 1))
                ref++;
 
        strbuf_addf(filename, "%s-%s", base, ref);
@@ -1111,3 +1111,34 @@ void cgit_print_snapshot_links(const char *repo, const char *head,
        }
        strbuf_release(&filename);
 }
+
+void cgit_set_title_from_path(const char *path)
+{
+       size_t path_len, path_index, path_last_end;
+       char *new_title;
+
+       if (!path)
+               return;
+
+       path_len = strlen(path);
+       new_title = xmalloc(path_len + 3 + strlen(ctx.page.title) + 1);
+       new_title[0] = '\0';
+
+       for (path_index = path_len, path_last_end = path_len; path_index-- > 0;) {
+               if (path[path_index] == '/') {
+                       if (path_index == path_len - 1) {
+                               path_last_end = path_index - 1;
+                               continue;
+                       }
+                       strncat(new_title, &path[path_index + 1], path_last_end - path_index - 1);
+                       strcat(new_title, "\\");
+                       path_last_end = path_index;
+               }
+       }
+       if (path_last_end)
+               strncat(new_title, path, path_last_end);
+
+       strcat(new_title, " - ");
+       strcat(new_title, ctx.page.title);
+       ctx.page.title = new_title;
+}