Mercurial > ~dholland > hg > tradcpp > index.cgi
diff files.c @ 8:97243badae69
split place stuff to its own file
author | David A. Holland |
---|---|
date | Sun, 19 Dec 2010 19:15:55 -0500 |
parents | b8167949474a |
children | 1fbcbd58742e |
line wrap: on
line diff
--- a/files.c Sun Dec 19 19:08:24 2010 -0500 +++ b/files.c Sun Dec 19 19:15:55 2010 -0500 @@ -1,4 +1,3 @@ -#include <stdarg.h> #include <stdbool.h> #include <stdio.h> #include <stdlib.h> @@ -7,14 +6,9 @@ #include <err.h> #include "array.h" +#include "place.h" #include "files.h" -struct place { - struct seenfile *file; - unsigned line; - unsigned column; -}; - struct incdir { const char *name; bool issystem; @@ -33,7 +27,6 @@ static struct incdirarray quotepath, bracketpath; static struct seenfilearray seenfiles; -static bool overall_failure; //////////////////////////////////////////////////////////// // management @@ -138,152 +131,18 @@ } //////////////////////////////////////////////////////////// -// places and complaints - -#define NOWHERE_LINE 0 -#define BUILTIN_LINE 1 -#define COMMANDLINE_LINE 2 - -static struct place scratchplace; -static bool scratchplace_inuse; - -static -bool -place_isnowhere(const struct place *p) -{ - return p->file == NULL && p->line == NOWHERE_LINE; -} +// seenfile functions exposed for places.c -static -bool -place_isbuiltin(const struct place *p) -{ - return p->file == NULL && p->line == BUILTIN_LINE; -} - -static -bool -place_iscommandline(const struct place *p) -{ - return p->file == NULL && p->line == COMMANDLINE_LINE; -} - -struct place * -place_gettemporary(void) +const char * +seenfile_getname(const struct seenfile *file) { - assert(!scratchplace_inuse); - scratchplace_inuse = true; - return &scratchplace; -} - -void -place_puttemporary(struct place *p) -{ - assert(scratchplace_inuse); - assert(p == &scratchplace); - scratchplace_inuse = false; -} - -struct place * -place_create(void) -{ - struct place *p; - - p = domalloc(sizeof(*p)); - place_setnowhere(p); - return p; -} - -struct place * -place_clone(const struct place *op) -{ - struct place *p; - - p = domalloc(sizeof(*p)); - *p = *op; - return p; -} - -void -place_destroy(struct place *p) -{ - free(p); + return file->name; } -void -place_setnowhere(struct place *p) -{ - p->file = NULL; - p->line = NOWHERE_LINE; - p->column = 0; -} - -void -place_setbuiltin(struct place *p, unsigned num) -{ - p->file = NULL; - p->line = BUILTIN_LINE; - p->column = num; -} - -void -place_setcommandline(struct place *p, unsigned column) -{ - p->file = NULL; - p->line = COMMANDLINE_LINE; - p->column = column; -} - -static -void -place_print(const struct place *p) +const struct place * +seenfile_getincludeplace(const struct seenfile *file) { - if (place_iscommandline(p)) { - fprintf(stderr, "<command-line>:1:%u", p->column); - } else if (place_isbuiltin(p)) { - fprintf(stderr, "<built-in>:%u:1", p->column); - } else { - fprintf(stderr, "%s:%u:%u", p->file->name, p->line, p->column); - } -} - -static -void -place_printfrom(const struct place *p) -{ - if (!place_isnowhere(&p->file->includedfrom)) { - place_printfrom(&p->file->includedfrom); - } - fprintf(stderr, "In file included from "); - fprintf(stderr, ":\n"); -} - -void -complain(const struct place *p, const char *fmt, ...) -{ - va_list ap; - - if (!place_isnowhere(&p->file->includedfrom)) { - place_printfrom(&p->file->includedfrom); - } - place_print(p); - fprintf(stderr, ": "); - va_start(ap, fmt); - vfprintf(stderr, fmt, ap); - va_end(ap); - fprintf(stderr, "\n"); -} - -void -complain_fail(void) -{ - overall_failure = true; -} - -bool -complain_failed(void) -{ - return overall_failure; + return &file->includedfrom; } ////////////////////////////////////////////////////////////