aboutsummaryrefslogtreecommitdiff
path: root/src/format.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/format.c')
-rw-r--r--src/format.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/format.c b/src/format.c
index 2c97b72..6e33521 100644
--- a/src/format.c
+++ b/src/format.c
@@ -188,7 +188,7 @@ void
grecs_format_locus(grecs_locus_t *locus, FILE *fp)
{
if (locus)
- fprintf(fp, "%s:%d:", locus->file, locus->line);
+ fprintf(fp, "%s:%d", locus->file, locus->line);
}
void
@@ -222,6 +222,8 @@ grecs_format_value(struct grecs_value *val, int flags, FILE *fp)
&need_quote);
if (flags & GRECS_NODE_FLAG_QUOTE)
need_quote = 1;
+ else if (flags & GRECS_NODE_FLAG_NOQUOTE)
+ need_quote = 0;
if (need_quote) {
char *cbuf = grecs_malloc(clen + 1);
wordsplit_c_quote_copy(cbuf, val->v.string,
@@ -257,6 +259,8 @@ grecs_format_value(struct grecs_value *val, int flags, FILE *fp)
void
grecs_format_node(struct grecs_node *node, int flags, FILE *fp)
{
+ const char *delim_str = NULL;
+
if (!flags)
flags = GRECS_NODE_FLAG_DEFAULT;
switch (node->type) {
@@ -271,15 +275,19 @@ grecs_format_node(struct grecs_node *node, int flags, FILE *fp)
case grecs_node_stmt:
if (flags & GRECS_NODE_FLAG_LOCUS) {
grecs_format_locus(&node->locus, fp);
- fputc(' ', fp);
+ delim_str = ": ";
}
if (flags & GRECS_NODE_FLAG_PATH) {
+ if (delim_str)
+ fprintf(fp, "%s", delim_str);
grecs_format_node_path(node, flags, fp);
- fputc(':', fp);
- fputc(' ', fp);
+ delim_str = ": ";
}
- if (flags & GRECS_NODE_FLAG_VALUE)
+ if (flags & GRECS_NODE_FLAG_VALUE) {
+ if (delim_str)
+ fprintf(fp, "%s", delim_str);
grecs_format_value(&node->value, flags, fp);
+ }
}
}

Return to:

Send suggestions and report system problems to the System administrator.