aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2012-08-14 08:35:48 +0300
committerSergey Poznyakoff <gray@gnu.org.ua>2012-08-14 08:44:04 +0300
commitb46d05edecdbf77cb37205d9d29688851c5cd94c (patch)
treea942c7193de4b7485d82fae4dd04ff0dcebd24fd
parente0c4fa084b5d59f862276ddfa72b56b4a77babe1 (diff)
downloadcfpeek-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--NEWS15
-rw-r--r--configure.ac2
-rw-r--r--doc/cfpeek.16
-rw-r--r--doc/cfpeek.texi5
-rw-r--r--src/cfpeek.c3
-rw-r--r--src/cfpeek.h3
-rw-r--r--src/cmdline.opt6
-rw-r--r--src/guile.c6
-rw-r--r--src/script.c9
9 files changed, 51 insertions, 4 deletions
diff --git a/NEWS b/NEWS
index 1bda0dc..5901ec1 100644
--- a/NEWS
+++ b/NEWS
@@ -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();
+}

Return to:

Send suggestions and report system problems to the System administrator.