]> gitweb.ps.run Git - ps-cgit/blobdiff - shared.c
ui-{commit,tag}: show dates in originator's timezone
[ps-cgit] / shared.c
index 3bd2a9e3dadd39282712f297218433cdfcdb34d1..a078a27b1bcc2accf5982ae8d1af005f728bac4c 100644 (file)
--- a/shared.c
+++ b/shared.c
@@ -61,6 +61,7 @@ struct cgit_repo *cgit_add_repo(const char *url)
        ret->enable_log_linecount = ctx.cfg.enable_log_linecount;
        ret->enable_remote_branches = ctx.cfg.enable_remote_branches;
        ret->enable_subject_links = ctx.cfg.enable_subject_links;
+       ret->enable_html_serving = ctx.cfg.enable_html_serving;
        ret->max_stats = ctx.cfg.max_stats;
        ret->branch_sort = ctx.cfg.branch_sort;
        ret->commit_sort = ctx.cfg.commit_sort;
@@ -402,8 +403,8 @@ void cgit_diff_commit(struct commit *commit, filepair_fn fn, const char *prefix)
        unsigned char *old_sha1 = NULL;
 
        if (commit->parents)
-               old_sha1 = commit->parents->item->object.sha1;
-       cgit_diff_tree(old_sha1, commit->object.sha1, fn, prefix,
+               old_sha1 = commit->parents->item->object.oid.hash;
+       cgit_diff_tree(old_sha1, commit->object.oid.hash, fn, prefix,
                       ctx.qry.ignorews);
 }
 
@@ -560,3 +561,42 @@ char *expand_macros(const char *txt)
        }
        return result;
 }
+
+char *get_mimetype_for_filename(const char *filename)
+{
+       char *ext, *mimetype, *token, line[1024], *saveptr;
+       FILE *file;
+       struct string_list_item *mime;
+
+       if (!filename)
+               return NULL;
+
+       ext = strrchr(filename, '.');
+       if (!ext)
+               return NULL;
+       ++ext;
+       if (!ext[0])
+               return NULL;
+       mime = string_list_lookup(&ctx.cfg.mimetypes, ext);
+       if (mime)
+               return xstrdup(mime->util);
+
+       if (!ctx.cfg.mimetype_file)
+               return NULL;
+       file = fopen(ctx.cfg.mimetype_file, "r");
+       if (!file)
+               return NULL;
+       while (fgets(line, sizeof(line), file)) {
+               if (!line[0] || line[0] == '#')
+                       continue;
+               mimetype = strtok_r(line, " \t\r\n", &saveptr);
+               while ((token = strtok_r(NULL, " \t\r\n", &saveptr))) {
+                       if (!strcasecmp(ext, token)) {
+                               fclose(file);
+                               return xstrdup(mimetype);
+                       }
+               }
+       }
+       fclose(file);
+       return NULL;
+}