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>
这个提交包含在:
Natanael Copa 2008-11-29 21:49:07 -08:00 提交者 Lars Hjemli
父节点 7b5cee65fd
当前提交 314d9ea5a3
共有 3 个文件被更改,包括 14 次插入6 次删除

3
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);
}

查看文件

@ -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);
}

查看文件

@ -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 */