summaryrefslogtreecommitdiffabout
authorNatanael Copa <natanael.copa@gmail.com>2008-11-30 05:49:07 (UTC)
committer Lars Hjemli <hjemli@gmail.com>2008-11-30 12:39:53 (UTC)
commit314d9ea5a3bc60ec518e314bb0bf8072123dc08f (patch) (unidiff)
treeca65f83e89b301ff6df228785c73c8413a072361
parent7b5cee65fd9cf31e4f19ce4ff613778cb95512a9 (diff)
downloadcgit-314d9ea5a3bc60ec518e314bb0bf8072123dc08f.zip
cgit-314d9ea5a3bc60ec518e314bb0bf8072123dc08f.tar.gz
cgit-314d9ea5a3bc60ec518e314bb0bf8072123dc08f.tar.bz2
Set prefix in snapshots when using dwimmery
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>
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--cmd.c3
-rw-r--r--ui-snapshot.c14
-rw-r--r--ui-snapshot.h3
3 files changed, 14 insertions, 6 deletions
diff --git a/cmd.c b/cmd.c
index 5b3c14c..8914fa5 100644
--- a/cmd.c
+++ b/cmd.c
@@ -104,8 +104,7 @@ static void refs_fn(struct cgit_context *ctx)
104 104
105static void snapshot_fn(struct cgit_context *ctx) 105static void snapshot_fn(struct cgit_context *ctx)
106{ 106{
107 cgit_print_snapshot(ctx->qry.head, ctx->qry.sha1, 107 cgit_print_snapshot(ctx->qry.head, ctx->qry.sha1, ctx->qry.path,
108 cgit_repobasename(ctx->repo->url), ctx->qry.path,
109 ctx->repo->snapshots, ctx->qry.nohead); 108 ctx->repo->snapshots, ctx->qry.nohead);
110} 109}
111 110
diff --git a/ui-snapshot.c b/ui-snapshot.c
index 9c4d086..76457d6 100644
--- a/ui-snapshot.c
+++ b/ui-snapshot.c
@@ -162,10 +162,11 @@ static const char *get_ref_from_filename(const char *url, const char *filename,
162 return dwim_refname; 162 return dwim_refname;
163} 163}
164 164
165void cgit_print_snapshot(const char *head, const char *hex, const char *prefix, 165void cgit_print_snapshot(const char *head, const char *hex,
166 const char *filename, int snapshots, int dwim) 166 const char *filename, int snapshots, int dwim)
167{ 167{
168 const struct cgit_snapshot_format* f; 168 const struct cgit_snapshot_format* f;
169 char *prefix = NULL;
169 170
170 f = get_format(filename); 171 f = get_format(filename);
171 if (!f) { 172 if (!f) {
@@ -178,11 +179,20 @@ void cgit_print_snapshot(const char *head, const char *hex, const char *prefix,
178 return; 179 return;
179 } 180 }
180 181
181 if (!hex && dwim) 182 if (!hex && dwim) {
182 hex = get_ref_from_filename(ctx.repo->url, filename, f); 183 hex = get_ref_from_filename(ctx.repo->url, filename, f);
184 if (hex != NULL) {
185 prefix = xstrdup(filename);
186 prefix[strlen(filename) - strlen(f->suffix)] = '\0';
187 }
188 }
183 189
184 if (!hex) 190 if (!hex)
185 hex = head; 191 hex = head;
186 192
193 if (!prefix)
194 prefix = xstrdup(cgit_repobasename(ctx.repo->url));
195
187 make_snapshot(f, hex, prefix, filename); 196 make_snapshot(f, hex, prefix, filename);
197 free(prefix);
188} 198}
diff --git a/ui-snapshot.h b/ui-snapshot.h
index 3540303..b6ede52 100644
--- a/ui-snapshot.h
+++ b/ui-snapshot.h
@@ -2,7 +2,6 @@
2#define UI_SNAPSHOT_H 2#define UI_SNAPSHOT_H
3 3
4extern void cgit_print_snapshot(const char *head, const char *hex, 4extern void cgit_print_snapshot(const char *head, const char *hex,
5 const char *prefix, const char *filename, 5 const char *filename, int snapshot, int dwim);
6 int snapshot, int dwim);
7 6
8#endif /* UI_SNAPSHOT_H */ 7#endif /* UI_SNAPSHOT_H */