]> gitweb.ps.run Git - ps-cgit/blobdiff - ui-snapshot.c
Add struct cgit_page to cgit_context
[ps-cgit] / ui-snapshot.c
index bd34a28a41713cccffff7a52742e4a61038e0544..444980369df9318701ec1f6e5e6dd7930b17900d 100644 (file)
@@ -7,6 +7,7 @@
  */
 
 #include "cgit.h"
+#include "html.h"
 
 static int write_compressed_tar_archive(struct archiver_args *args,const char *filter)
 {
@@ -99,7 +100,10 @@ void cgit_print_snapshot(struct cacheitem *item, const char *head,
                memset(&args,0,sizeof(args));
                args.base = fmt("%s/", prefix);
                args.tree = commit->tree;
-               cgit_print_snapshot_start(sat->mimetype, filename, item);
+               args.time = commit->date;
+               ctx.page.mimetype = xstrdup(sat->mimetype);
+               ctx.page.filename = xstrdup(filename);
+               cgit_print_http_headers(&ctx);
                (*sat->write_func)(&args);
                return;
        }
@@ -129,7 +133,7 @@ int cgit_parse_snapshots_mask(const char *str)
 {
        const struct snapshot_archive_t* sat;
        static const char *delim = " \t,:/|;";
-       int f, tl, rv = 0;
+       int f, tl, sl, rv = 0;
 
        /* favor legacy setting */
        if(atoi(str))
@@ -141,8 +145,9 @@ int cgit_parse_snapshots_mask(const char *str)
                        break;
                for(f=0; f<snapshot_archives_len; f++) {
                        sat = &snapshot_archives[f];
-                       if(!(strncmp(sat->suffix, str, tl) &&
-                            strncmp(sat->suffix+1, str, tl-1))) {
+                       sl = strlen(sat->suffix);
+                       if((tl == sl && !strncmp(sat->suffix, str, tl)) ||
+                          (tl == sl-1 && !strncmp(sat->suffix+1, str, tl-1))) {
                                rv |= sat->bit;
                                break;
                        }