Hi,
On Thu, 6 Sep 2007, René Scharfe wrote:
As suggested by Johannes, --pretty=format: placeholders in specfiles
need to be wrapped in $Format:...$ now.
Thanks.
quoted hunk ↗ jump to hunk
diff --git a/builtin-archive.c b/builtin-archive.c
index faccce3..a8a0f01 100644
--- a/builtin-archive.c
+++ b/builtin-archive.c
@@ -81,14 +81,58 @@ static int run_remote_archiver(const char *remote, int argc,
return !!rv;
}
+static void *format_specfile(const struct commit *commit, const char *format,
+ unsigned long *sizep)
Should this not be "char *buffer" instead of "const char *format"? Or
even better: a "struct strbuf *"?
+{
+ unsigned long len = *sizep, result_len = 0;
+ const char *a = format;
+ char *result = NULL;
+
+ for (;;) {
+ const char *b, *c;
+ char *fmt, *formatted = NULL;
+ unsigned long a_len, fmt_len, formatted_len, allocated = 0;
Maybe initialise formatted_len, just to be on the safe side?
+
+ b = memchr(a, '$', len);
+ if (!b || a + len < b + 9 || memcmp(b + 1, "Format:", 7))
+ break;
Wouldn't memmem(buffer, len, "$Format:", 8) be better here?
A general comment: since you plan to output the result into a file anyway,
it should be even easier to avoid realloc(), and do a
print_formatted_specfile() instead of a format_specfile(), no?
Ciao,
Dscho