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>
static void snapshot_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);
}
ctx->repo->snapshots, ctx->qry.nohead);
}
-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;
const char *filename, int snapshots, int dwim)
{
const struct cgit_snapshot_format* f;
f = get_format(filename);
if (!f) {
f = get_format(filename);
if (!f) {
hex = get_ref_from_filename(ctx.repo->url, filename, f);
hex = get_ref_from_filename(ctx.repo->url, filename, f);
+ if (hex != NULL) {
+ prefix = xstrdup(filename);
+ prefix[strlen(filename) - strlen(f->suffix)] = '\0';
+ }
+ }
+ if (!prefix)
+ prefix = xstrdup(cgit_repobasename(ctx.repo->url));
+
make_snapshot(f, hex, prefix, filename);
make_snapshot(f, hex, prefix, filename);
#define UI_SNAPSHOT_H
extern void cgit_print_snapshot(const char *head, const char *hex,
#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 */
#endif /* UI_SNAPSHOT_H */