aboutsummaryrefslogtreecommitdiff
path: root/file_loader.c
diff options
context:
space:
mode:
authorBruce Hill <bruce@bruce-hill.com>2020-09-17 00:29:11 -0700
committerBruce Hill <bruce@bruce-hill.com>2020-09-17 00:29:11 -0700
commit67e538e774b37749c53c553b941736a281e6ac8f (patch)
treecc02c6622c831b2cb2dad7e3128e9a9e3dbb3ded /file_loader.c
parent2477d9869c295cbaa1e948fc6e40190aa7149295 (diff)
Some error handling
Diffstat (limited to 'file_loader.c')
-rw-r--r--file_loader.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/file_loader.c b/file_loader.c
index 1bc3d20..7533b91 100644
--- a/file_loader.c
+++ b/file_loader.c
@@ -101,9 +101,15 @@ void fprint_line(FILE *dest, file_t *f, const char *start, const char *end, cons
f->filename, linenum, charnum, msg);
const char *eol = linenum == f->nlines ? strchr(line, '\0') : strchr(line, '\n');
if (end == NULL || end > eol) end = eol;
- fprintf(dest, "\033[2m% 5ld |\033[0m %.*s\033[31;4;1m%.*s\033[0m%.*s\n",
+ fprintf(dest, "\033[2m% 5ld |\033[0m %.*s\033[41;30m%.*s\033[0m%.*s\n",
linenum,
(int)charnum - 1, line,
(int)(end - &line[charnum-1]), &line[charnum-1],
(int)(eol - end), end);
+ fprintf(dest, " ");
+ const char *p = line - 1;
+ for (; p < start; ++p) fputc(' ', dest);
+ if (start == end) ++end;
+ for (; p < end; ++p) fputc('^', dest);
+ fputc('\n', dest);
}