/* ui-snapshot.c: generate snapshot of a commit
*
- * Copyright (C) 2006 Lars Hjemli
- * Copyright (C) 2012 Jason A. Donenfeld <Jason@zx2c4.com>
+ * Copyright (C) 2006-2014 cgit Development Team <cgit@lists.zx2c4.com>
*
* Licensed under GNU General Public License v2
* (see COPYING for full license text)
char *filter_argv[])
{
int rv;
- struct cgit_filter f;
-
- f.cmd = filter_argv[0];
- f.argv = filter_argv;
+ struct cgit_filter f = {
+ .cmd = filter_argv[0],
+ .argv = filter_argv,
+ };
cgit_open_filter(&f);
rv = write_tar_archive(hex, prefix);
cgit_close_filter(&f);
static const struct cgit_snapshot_format *get_format(const char *filename)
{
const struct cgit_snapshot_format *fmt;
- int fl, sl;
- fl = strlen(filename);
for (fmt = cgit_snapshot_formats; fmt->suffix; fmt++) {
- sl = strlen(fmt->suffix);
- if (sl >= fl)
- continue;
- if (!strcmp(fmt->suffix, filename + fl - sl))
+ if (!suffixcmp(filename, fmt->suffix))
return fmt;
}
return NULL;
* repo_basename(), we strip the basename and any following '-' and '_'
* characters ("cgit-0.7.2" -> "0.7.2") and check the resulting name once
* more. If this still isn't a valid commit object name, we check if pre-
- * pending a 'v' to the remaining snapshot name ("0.7.2" -> "v0.7.2") gives
- * us something valid.
+ * pending a 'v' or a 'V' to the remaining snapshot name ("0.7.2" ->
+ * "v0.7.2") gives us something valid.
*/
static const char *get_ref_from_filename(const char *url, const char *filename,
const struct cgit_snapshot_format *format)
if (get_sha1(snapshot.buf, sha1) == 0)
goto out;
+ strbuf_splice(&snapshot, 0, 1, "V", 1);
+ if (get_sha1(snapshot.buf, sha1) == 0)
+ goto out;
+
result = 0;
strbuf_release(&snapshot);