]> git.cameronkatri.com Git - cgit.git/commitdiff
Set prefix in snapshots when using dwimmery
authorNatanael Copa <natanael.copa@gmail.com>
Sun, 30 Nov 2008 05:49:07 +0000 (21:49 -0800)
committerLars Hjemli <hjemli@gmail.com>
Sun, 30 Nov 2008 12:39:53 +0000 (13:39 +0100)
This patch sets the directory prefix in archives to be the filename,
excluding the suffix (.tar.gz, .tar.bz2 etc).

The patch also removes the prefix parameter in cgit_print_snapshot()
as the prefix might differ.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
cmd.c
ui-snapshot.c
ui-snapshot.h

diff --git a/cmd.c b/cmd.c
index 5b3c14c557e0b5aa56a95263cdbd559c2460de04..8914fa50132b7e87ffc6caa9bfd58a93eedff02c 100644 (file)
--- a/cmd.c
+++ b/cmd.c
@@ -104,8 +104,7 @@ static void refs_fn(struct cgit_context *ctx)
 
 static void snapshot_fn(struct cgit_context *ctx)
 {
-       cgit_print_snapshot(ctx->qry.head, ctx->qry.sha1,
-                           cgit_repobasename(ctx->repo->url), ctx->qry.path,
+       cgit_print_snapshot(ctx->qry.head, ctx->qry.sha1, ctx->qry.path,
                            ctx->repo->snapshots, ctx->qry.nohead);
 }
 
index 9c4d086eeba591d1069a28e20401b2f2b4631f02..76457d62e7fa3f4a5d48eb2ee597ea9ce790f54c 100644 (file)
@@ -162,10 +162,11 @@ static const char *get_ref_from_filename(const char *url, const char *filename,
        return dwim_refname;
 }
 
-void cgit_print_snapshot(const char *head, const char *hex, const char *prefix,
+void cgit_print_snapshot(const char *head, const char *hex,
                         const char *filename, int snapshots, int dwim)
 {
        const struct cgit_snapshot_format* f;
+       char *prefix = NULL;
 
        f = get_format(filename);
        if (!f) {
@@ -178,11 +179,20 @@ void cgit_print_snapshot(const char *head, const char *hex, const char *prefix,
                return;
        }
 
-       if (!hex && dwim)
+       if (!hex && dwim) {
                hex = get_ref_from_filename(ctx.repo->url, filename, f);
+               if (hex != NULL) {
+                       prefix = xstrdup(filename);
+                       prefix[strlen(filename) - strlen(f->suffix)] = '\0';
+               }
+       }
 
        if (!hex)
                hex = head;
 
+       if (!prefix)
+               prefix = xstrdup(cgit_repobasename(ctx.repo->url));
+
        make_snapshot(f, hex, prefix, filename);
+       free(prefix);
 }
index 35403033394035374ddda0f2844f341c9400a298..b6ede5225a847c57ae734f1d59f875994a94c571 100644 (file)
@@ -2,7 +2,6 @@
 #define UI_SNAPSHOT_H
 
 extern void cgit_print_snapshot(const char *head, const char *hex,
-                               const char *prefix, const char *filename,
-                               int snapshot, int dwim);
+                               const char *filename, int snapshot, int dwim);
 
 #endif /* UI_SNAPSHOT_H */