diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2009-02-22 12:29:58 +0200 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2009-02-22 12:29:58 +0200 |
commit | e7860f6f4b7da3e45eee6d2100dfb42823d8106f (patch) | |
tree | a9dca4490c567054391579b627ae5db14995f5dd /src/report.c | |
parent | 0b63c31eadfe5d4e94c7014bd0f3bd4370783d19 (diff) | |
download | wydawca-e7860f6f4b7da3e45eee6d2100dfb42823d8106f.tar.gz wydawca-e7860f6f4b7da3e45eee6d2100dfb42823d8106f.tar.bz2 |
Minor improvements
* src/report.c: New file
* src/Makefile.am (wydawca_SOURCES): Add report.c
* src/cmdline.opt: Group options.
New option -D (--define).
* src/directive.c (process_directives): Call report_init before processing
and report_finish afterwards.
* src/triplet.c: New meta-variable `report'.
* src/vtab.c (move_file, archive_file, symlink_file, rmsymlink_file): Update
report stack.
* src/wydawca.h: Include obstack.h
(report_init, report_add, report_finish): New protos.
(report_string): New declaration.
* src/builtin.c, src/meta.c: Remove obstack inclusion.
Diffstat (limited to 'src/report.c')
-rw-r--r-- | src/report.c | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/src/report.c b/src/report.c new file mode 100644 index 0000000..fe38fe9 --- /dev/null +++ b/src/report.c @@ -0,0 +1,52 @@ +/* wydawca - automatic release submission daemon + Copyright (C) 2009 Sergey Poznyakoff + + Wydawca 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 of the License, or (at your + option) any later version. + + Wydawca 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 wydawca. If not, see <http://www.gnu.org/licenses/>. */ + +#include "wydawca.h" + +static struct obstack report_stk; +static int report_stk_inited; +char *report_string; + +void +report_init () +{ + if (!report_stk_inited) + obstack_init (&report_stk); + else + obstack_free (&report_stk, report_string); +} + +void +report_add (const char *fmt, ...) +{ + va_list ap; + char *str = NULL; + va_start (ap, fmt); + vasprintf (&str, fmt, ap); + va_end (ap); + if (str) + { + obstack_grow (&report_stk, str, strlen (str)); + obstack_1grow (&report_stk, '\n'); + } +} + +void +report_finish () +{ + obstack_1grow (&report_stk, 0); + report_string = obstack_finish (&report_stk); +} |