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>
This commit is contained in:
parent
7b5cee65fd
commit
314d9ea5a3
3
cmd.c
3
cmd.c
@ -104,8 +104,7 @@ static void refs_fn(struct cgit_context *ctx)
|
|||||||
|
|
||||||
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_print_snapshot(ctx->qry.head, ctx->qry.sha1, ctx->qry.path,
|
||||||
cgit_repobasename(ctx->repo->url), ctx->qry.path,
|
|
||||||
ctx->repo->snapshots, ctx->qry.nohead);
|
ctx->repo->snapshots, ctx->qry.nohead);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -162,10 +162,11 @@ static const char *get_ref_from_filename(const char *url, const char *filename,
|
|||||||
return dwim_refname;
|
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 char *filename, int snapshots, int dwim)
|
||||||
{
|
{
|
||||||
const struct cgit_snapshot_format* f;
|
const struct cgit_snapshot_format* f;
|
||||||
|
char *prefix = NULL;
|
||||||
|
|
||||||
f = get_format(filename);
|
f = get_format(filename);
|
||||||
if (!f) {
|
if (!f) {
|
||||||
@ -178,11 +179,20 @@ void cgit_print_snapshot(const char *head, const char *hex, const char *prefix,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!hex && dwim)
|
if (!hex && dwim) {
|
||||||
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 (!hex)
|
if (!hex)
|
||||||
hex = head;
|
hex = head;
|
||||||
|
|
||||||
|
if (!prefix)
|
||||||
|
prefix = xstrdup(cgit_repobasename(ctx.repo->url));
|
||||||
|
|
||||||
make_snapshot(f, hex, prefix, filename);
|
make_snapshot(f, hex, prefix, filename);
|
||||||
|
free(prefix);
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
#define UI_SNAPSHOT_H
|
#define UI_SNAPSHOT_H
|
||||||
|
|
||||||
extern void cgit_print_snapshot(const char *head, const char *hex,
|
extern void cgit_print_snapshot(const char *head, const char *hex,
|
||||||
const char *prefix, const char *filename,
|
const char *filename, int snapshot, int dwim);
|
||||||
int snapshot, int dwim);
|
|
||||||
|
|
||||||
#endif /* UI_SNAPSHOT_H */
|
#endif /* UI_SNAPSHOT_H */
|
||||||
|
Loading…
Reference in New Issue
Block a user