Commit 509fc838 authored by Rusty Russell's avatar Rusty Russell

ccanlint: add #line directives to examples.

This means error messages come out in the right place.
Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
parent 4fc1f40b
...@@ -204,7 +204,8 @@ static bool looks_internal(char **lines, char **why) ...@@ -204,7 +204,8 @@ static bool looks_internal(char **lines, char **why)
const char *line = lines[i] + strspn(lines[i], " \t"); const char *line = lines[i] + strspn(lines[i], " \t");
unsigned len = strspn(line, IDENT_CHARS); unsigned len = strspn(line, IDENT_CHARS);
if (!line[0] || cisspace(line[0]) || strstarts(line, "//")) if (!line[0] || cisspace(line[0]) || strstarts(line, "//")
|| strstarts(line, "#line"))
continue; continue;
assert(line[strlen(line)-1] != '\n'); assert(line[strlen(line)-1] != '\n');
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
static char *add_example(struct manifest *m, struct ccan_file *source, static char *add_example(struct manifest *m, struct ccan_file *source,
struct doc_section *example) struct doc_section *example)
{ {
char *name; char *name, *linemarker;
unsigned int i; unsigned int i;
int fd; int fd;
struct ccan_file *f; struct ccan_file *f;
...@@ -43,6 +43,11 @@ static char *add_example(struct manifest *m, struct ccan_file *source, ...@@ -43,6 +43,11 @@ static char *add_example(struct manifest *m, struct ccan_file *source,
return talloc_asprintf(m, "Creating temporary file %s: %s", return talloc_asprintf(m, "Creating temporary file %s: %s",
f->fullname, strerror(errno)); f->fullname, strerror(errno));
/* Add #line to demark where we are from, so errors are correct! */
linemarker = talloc_asprintf(f, "#line %i \"%s\"\n",
example->srcline+2, source->fullname);
write(fd, linemarker, strlen(linemarker));
for (i = 0; i < example->num_lines; i++) { for (i = 0; i < example->num_lines; i++) {
if (write(fd, example->lines[i], strlen(example->lines[i])) if (write(fd, example->lines[i], strlen(example->lines[i]))
!= strlen(example->lines[i]) != strlen(example->lines[i])
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment