aboutsummaryrefslogtreecommitdiff
path: root/src/diag.c
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2012-09-22 16:15:48 +0300
committerSergey Poznyakoff <gray@gnu.org.ua>2012-09-22 16:30:07 +0300
commit0666fc3caae8e2db660d781e43bee2258bf06a00 (patch)
tree97380903872520efa3b2bf659465e63f2cf51a2a /src/diag.c
parent7f3dd0599ac3fb3a69c512b0ecfd043c67ca94ee (diff)
downloadeclat-0666fc3caae8e2db660d781e43bee2258bf06a00.tar.gz
eclat-0666fc3caae8e2db660d781e43bee2258bf06a00.tar.bz2
Introduce output formatting language
* configure.ac: Check for lex and yacc. * lib/diag.c: New file (moved from ../src with edits) * lib/forlan.c: New file. * lib/forlan.h: New file. * lib/forlangrm.y: New file. * lib/forlanlex.l: New file. * lib/.gitignore: Add new files. * lib/Makefile.am: Add new file. * lib/libeclat.h: Add diagnostics-related stuff. * src/Makefile.am (eclat_SOURCES): Remove diag.c * src/cmdline.opt (set_program_name): Move to ../lib/diag.c * src/diag.c: Remove (see above). * src/config.c: Reflect changes to the diagnostics subsystem. * src/eclat.c: Likewise. * src/eclat.h: Remove diagnostics-related stuff. It lives in libeclat.h from now on. * src/error.c: Remove. * tests/forlan01.at: New testcase. * tests/testsuite.at: Include forlan01.at * tests/tforlan.c: New file. * tests/.gitignore: Add new files. * tests/Makefile.am: Add new files.
Diffstat (limited to 'src/diag.c')
-rw-r--r--src/diag.c108
1 files changed, 0 insertions, 108 deletions
diff --git a/src/diag.c b/src/diag.c
deleted file mode 100644
index 30ffa34..0000000
--- a/src/diag.c
+++ /dev/null
@@ -1,108 +0,0 @@
-/* This file is part of Eclat.
- Copyright (C) 2012 Sergey Poznyakoff.
-
- Eclat is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3, or (at your option)
- any later version.
-
- Eclat is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with Eclat. If not, see <http://www.gnu.org/licenses/>. */
-
-#include "eclat.h"
-
-const char *program_name;
-
-void
-vdiag(grecs_locus_t const *locus, const char *qual, const char *fmt, va_list ap)
-{
- if (program_name)
- fprintf(stderr, "%s: ", program_name);
-
- if (locus) {
- size_t size = 0;
-
- if (locus->beg.col == 0)
- fprintf(stderr, "%s:%u",
- locus->beg.file,
- locus->beg.line);
- else if (strcmp(locus->beg.file, locus->end.file))
- fprintf(stderr, "%s:%u.%u-%s:%u.%u",
- locus->beg.file,
- locus->beg.line, locus->beg.col,
- locus->end.file,
- locus->end.line, locus->end.col);
- else if (locus->beg.line != locus->end.line)
- fprintf(stderr, "%s:%u.%u-%u.%u",
- locus->beg.file,
- locus->beg.line, locus->beg.col,
- locus->end.line, locus->end.col);
- else
- fprintf(stderr, "%s:%u.%u-%u",
- locus->beg.file,
- locus->beg.line, locus->beg.col,
- locus->end.col);
- fprintf(stderr, ": ");
- }
-
- if (qual)
- fprintf(stderr, "%s: ", qual);
- vfprintf(stderr, fmt, ap);
- fputc('\n', stderr);
-}
-
-void
-diag(grecs_locus_t const *locus, const char *qual, const char *fmt, ...)
-{
- va_list ap;
-
- va_start(ap, fmt);
- vdiag(locus, qual, fmt, ap);
- va_end(ap);
-}
-
-void
-die(int status, const char *fmt, ...)
-{
- va_list ap;
-
- va_start(ap, fmt);
- vdiag(NULL, NULL, fmt, ap);
- va_end(ap);
- exit(status);
-}
-
-void
-err(const char *fmt, ...)
-{
- va_list ap;
-
- va_start(ap, fmt);
- vdiag(NULL, NULL, fmt, ap);
- va_end(ap);
-}
-
-void
-warn(const char *fmt, ...)
-{
- va_list ap;
-
- va_start(ap, fmt);
- vdiag(NULL, "warning", fmt, ap);
- va_end(ap);
-}
-
-void
-debug_printf(const char *fmt, ...)
-{
- va_list ap;
-
- va_start(ap, fmt);
- vdiag(NULL, "debug", fmt, ap);
- va_end(ap);
-}

Return to:

Send suggestions and report system problems to the System administrator.