From 2234f01d91a8582111d3484e60fe1372f11df2db Mon Sep 17 00:00:00 2001 From: mdw Date: Sun, 13 Jan 2002 14:48:16 +0000 Subject: [PATCH] Make delimiters be a property of a scanner. Change the delimiter- changing functions' names. --- conf.c | 26 ++++++++++++++++---------- conf.h | 14 ++++++++++---- 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/conf.c b/conf.c index 9baa6de..0cd4a17 100644 --- a/conf.c +++ b/conf.c @@ -1,6 +1,6 @@ /* -*-c-*- * - * $Id: conf.c,v 1.8 2001/02/03 20:33:26 mdw Exp $ + * $Id: conf.c,v 1.9 2002/01/13 14:48:16 mdw Exp $ * * Configuration parsing * @@ -29,6 +29,10 @@ /*----- Revision history --------------------------------------------------* * * $Log: conf.c,v $ + * Revision 1.9 2002/01/13 14:48:16 mdw + * Make delimiters be a property of a scanner. Change the delimiter- + * changing functions' names. + * * Revision 1.8 2001/02/03 20:33:26 mdw * Fix flags to be unsigned. * @@ -87,14 +91,12 @@ static source_ops *sources[] = static target_ops *targets[] = { &xtarget_ops, &ftarget_ops, &starget_ops, 0 }; -static const char *notword = 0; -static const char *notdelim = 0; - /*----- Main code ---------------------------------------------------------*/ -/* --- @undelim@ --- * +/* --- @conf_undelim@ --- * * - * Arguments: @const char *d, dd@ = pointer to characters to escape + * Arguments: @scanner *sc@ = pointer to scanner definition + * @const char *d, *dd@ = pointer to characters to escape * * Returns: --- * @@ -103,7 +105,11 @@ static const char *notdelim = 0; * second list will always be allowed to continue a word. */ -void undelim(const char *d, const char *dd) { notword = d; notdelim = dd; } +void conf_undelim(scanner *sc, const char *d, const char *dd) +{ + sc->wbegin = d; + sc->wcont = dd; +} /* --- @token@ --- * * @@ -159,7 +165,7 @@ int token(scanner *sc) /* --- Various self-delimiting characters --- */ case SELFDELIM: - if (!notword || strchr(notword, ch) == 0) { + if (!sc->wbegin || strchr(sc->wbegin, ch) == 0) { dstr_putc(&sc->d, ch); dstr_putz(&sc->d); sc->t = ch; @@ -189,7 +195,7 @@ int token(scanner *sc) q = !q; break; case SELFDELIM: - if (q || (notdelim && strchr(notdelim, ch))) + if (q || (sc->wcont && strchr(sc->wcont, ch))) goto insert; goto word; default: @@ -391,7 +397,7 @@ void conf_name(scanner *sc, char delim, dstr *d) if (sc->t == '[') { token(sc); - f |= f_bra; + f |= f_bra | f_ok; } /* --- Do the main reading sequence --- */ diff --git a/conf.h b/conf.h index 5b78b13..45791a4 100644 --- a/conf.h +++ b/conf.h @@ -1,6 +1,6 @@ /* -*-c-*- * - * $Id: conf.h,v 1.5 1999/10/22 22:46:44 mdw Exp $ + * $Id: conf.h,v 1.6 2002/01/13 14:48:16 mdw Exp $ * * Configuration parsing * @@ -29,6 +29,10 @@ /*----- Revision history --------------------------------------------------* * * $Log: conf.h,v $ + * Revision 1.6 2002/01/13 14:48:16 mdw + * Make delimiters be a property of a scanner. Change the delimiter- + * changing functions' names. + * * Revision 1.5 1999/10/22 22:46:44 mdw * Improve documentation for conf_enum. * @@ -70,9 +74,10 @@ /*----- Functions provided ------------------------------------------------*/ -/* --- @undelim@ --- * +/* --- @conf_undelim@ --- * * - * Arguments: @const char *d, dd@ = pointer to characters to escape + * Arguments: @scanner *sc@ = pointer to scanner definition + * @const char *d, *dd@ = pointer to characters to escape * * Returns: --- * @@ -81,7 +86,8 @@ * second list will always be allowed to continue a word. */ -extern void undelim(const char */*d*/, const char */*dd*/); +extern void conf_undelim(scanner */*sc*/, + const char */*d*/, const char */*dd*/); /* --- @token@ --- * * -- 2.11.0