return f->line_info;
get_ccan_file_lines(f);
- f->line_info = tal_arr(f->lines, struct line_info, f->num_lines);
+ f->line_info = tal_arr(f->lines, struct line_info,
+ tal_count(f->lines)-1);
- for (i = 0; i < f->num_lines; continued = continues(f->lines[i++])) {
+ for (i = 0; f->lines[i]; continued = continues(f->lines[i++])) {
char *p;
bool still_doc_line;
}
ret = get_pp(cond, head);
tal_free(head);
+ va_end(ap);
return ret;
}
-void score_file_error(struct score *score, struct ccan_file *f, unsigned line,
- const char *errorfmt, ...)
+static void score_error_vfmt(struct score *score, const char *source,
+ const char *errorfmt, va_list ap)
{
- va_list ap;
-
- struct file_error *fe = tal(score, struct file_error);
- fe->file = f;
- fe->line = line;
- list_add_tail(&score->per_file_errors, &fe->list);
if (!score->error)
score->error = tal_strdup(score, "");
return;
}
+ tal_append_fmt(&score->error, "%s:", source);
+ tal_append_vfmt(&score->error, errorfmt, ap);
+ score->error = tal_strcat(score, take(score->error), "\n");
+}
+
+
+
+void score_error(struct score *score, const char *source,
+ const char *errorfmt, ...)
+{
+ va_list ap;
+
+ va_start(ap, errorfmt);
+ score_error_vfmt(score, source, errorfmt, ap);
+ va_end(ap);
+}
+
+void score_file_error(struct score *score, struct ccan_file *f, unsigned line,
+ const char *errorfmt, ...)
+{
+ va_list ap;
+ char *source;
+
+ struct file_error *fe = tal(score, struct file_error);
+ fe->file = f;
+ fe->line = line;
+ list_add_tail(&score->per_file_errors, &fe->list);
+
if (line)
- tal_append_fmt(&score->error, "%s:%u:", f->fullname, line);
+ source = tal_fmt(score, "%s:%u", f->fullname, line);
else
- tal_append_fmt(&score->error, "%s:", f->fullname);
+ source = tal_fmt(score, "%s", f->fullname);
va_start(ap, errorfmt);
- tal_append_vfmt(&score->error, errorfmt, ap);
+ score_error_vfmt(score, source, errorfmt, ap);
va_end(ap);
- score->error = tal_strcat(score, take(score->error),"\n");
}
-char *get_or_compile_info(const void *ctx, const char *dir)
+
+char *get_or_compile_info(const void *ctx UNNEEDED, const char *dir)
{
struct manifest *m = get_manifest(NULL, dir);