diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2012-08-14 08:35:48 +0300 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2012-08-14 08:44:04 +0300 |
commit | b46d05edecdbf77cb37205d9d29688851c5cd94c (patch) | |
tree | a942c7193de4b7485d82fae4dd04ff0dcebd24fd | |
parent | e0c4fa084b5d59f862276ddfa72b56b4a77babe1 (diff) | |
download | cfpeek-b46d05edecdbf77cb37205d9d29688851c5cd94c.tar.gz cfpeek-b46d05edecdbf77cb37205d9d29688851c5cd94c.tar.bz2 |
New option --done=expr supplies a cleanup expression.
This expression is run once, when the main loop has finished iterating
over all nodes.
* doc/cfpeek.1: Document the --done option.
* doc/cfpeek.texi: Likewise.
* NEWS: Update.
* configure.ac: Version 1.1.90
* src/cfpeek.c (script_done_expr): New variable.
(main): Call script_done before exiting.
* src/cfpeek.h (script_done_expr): New extern
(script_done, guile_done): New protos.
* src/cmdline.opt (done): New option.
* src/guile.c (guile_done): New function.
* src/script.c (script_tab) <done>: New member.
(script_tab): Fill in the new structure member.
(script_done): New function.
-rw-r--r-- | NEWS | 15 | ||||
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | doc/cfpeek.1 | 6 | ||||
-rw-r--r-- | doc/cfpeek.texi | 5 | ||||
-rw-r--r-- | src/cfpeek.c | 3 | ||||
-rw-r--r-- | src/cfpeek.h | 3 | ||||
-rw-r--r-- | src/cmdline.opt | 6 | ||||
-rw-r--r-- | src/guile.c | 6 | ||||
-rw-r--r-- | src/script.c | 9 |
9 files changed, 51 insertions, 4 deletions
@@ -1,2 +1,2 @@ -Cfpeek NEWS -- history of user-visible changes. 2012-03-30 +Cfpeek NEWS -- history of user-visible changes. 2012-08-14 Copyright (C) 2011, 2012 Sergey Poznyakoff @@ -7,2 +7,15 @@ Please send cfpeek bug reports to <bug-cfpeek@gnu.org.ua> +Version 1.1.90 (Git) + +* New command line option --done (-d) + +This option is a counterpart of --init and supplies a cleanup +expression, i.e. an expression that will be evaluated when the +main loop has iterated over all nodes in the tree. + +* New parser: DHCPD + +A parser for dhcpd.conf file. + + Version 1.1, 2012-03-30 diff --git a/configure.ac b/configure.ac index 5ee8bc2..4792a9c 100644 --- a/configure.ac +++ b/configure.ac @@ -17,3 +17,3 @@ AC_PREREQ(2.63) -AC_INIT([cfpeek], 1.1, [bug-cfpeek@gnu.org.ua],, +AC_INIT([cfpeek], 1.1.90, [bug-cfpeek@gnu.org.ua],, [http://www.gnu.org.ua/software/cfpeek]) diff --git a/doc/cfpeek.1 b/doc/cfpeek.1 index ff8ffa9..ca76ec1 100644 --- a/doc/cfpeek.1 +++ b/doc/cfpeek.1 @@ -16,3 +16,3 @@ .\" -.TH CFPEEK 1 "August 13, 2012" "CFPEEK" "Cfpeek User Reference" +.TH CFPEEK 1 "August 14, 2012" "CFPEEK" "Cfpeek User Reference" .SH NAME @@ -436,2 +436,6 @@ starting the main loop. .TP +\fB\-d\fR, \fB\-\-done=\fIEXPR\fR +This option supplies a cleanup expression. The expression will be +evaluated once, after the main loop finishes. +.TP \fB\-l\fR, \fB\-\-lang\fR=\fINAME\fR diff --git a/doc/cfpeek.texi b/doc/cfpeek.texi index f2eae83..6b59e02 100644 --- a/doc/cfpeek.texi +++ b/doc/cfpeek.texi @@ -675,2 +675,7 @@ and before starting the main loop. +@xopindex{done,d,described} +Similarly, the option @option{--done=@var{expr}} (@option{-d +@var{expr}}) introduces a Scheme expression to be evaluated at the end +of the run, after all nodes have been processed. + @menu diff --git a/src/cfpeek.c b/src/cfpeek.c index c096dda..1b4e125 100644 --- a/src/cfpeek.c +++ b/src/cfpeek.c @@ -30,2 +30,3 @@ char *script_expr; char *script_init_expr; +char *script_done_expr; @@ -271,2 +272,3 @@ main(int argc, char **argv) scan_tree(tree); + script_done(); exit(EX_OK); @@ -296,2 +298,3 @@ main(int argc, char **argv) } + script_done(); exit(rc); diff --git a/src/cfpeek.h b/src/cfpeek.h index c5694cf..7c7d610 100644 --- a/src/cfpeek.h +++ b/src/cfpeek.h @@ -37,2 +37,3 @@ extern char *script_expr; extern char *script_init_expr; +extern char *script_done_expr; @@ -41,2 +42,3 @@ void script_init(void); int script_run(struct grecs_node *node); +void script_done(void); @@ -44,2 +46,3 @@ void guile_init(void); void guile_apply(struct grecs_node *node); +void guile_done(void); diff --git a/src/cmdline.opt b/src/cmdline.opt index 55bc403..c4afef4 100644 --- a/src/cmdline.opt +++ b/src/cmdline.opt @@ -315,2 +315,8 @@ END +OPTION(done,d,EXPR, + [<final cleanup expession>]) +BEGIN + script_done_expr = optarg; +END + GROUP(Preprocessor control) diff --git a/src/guile.c b/src/guile.c index 254d671..1190fa7 100644 --- a/src/guile.c +++ b/src/guile.c @@ -883 +883,7 @@ guile_apply(struct grecs_node *node) +void +guile_done() +{ + if (script_done_expr) + scm_c_eval_string(script_done_expr); +} diff --git a/src/script.c b/src/script.c index 869df55..45049fd 100644 --- a/src/script.c +++ b/src/script.c @@ -24,2 +24,3 @@ struct script_tab { void (*run)(struct grecs_node *); + void (*done)(void); }; @@ -28,3 +29,3 @@ static struct script_tab script_tab[] = { #ifdef GUILE_VERSION_NUMBER - { "scheme", "scm\0", guile_init, guile_apply }, + { "scheme", "scm\0", guile_init, guile_apply, guile_done }, #endif @@ -105 +106,7 @@ script_run(struct grecs_node *node) +void +script_done() +{ + if (cur_script) + cur_script->done(); +} |