[augeas-devel] [PATCH] Stricter skeleton instance check for del and store
David Lutterkort
dlutter at redhat.com
Mon May 12 22:09:57 UTC 2008
# HG changeset patch
# User David Lutterkort <dlutter at redhat.com>
# Date 1210617341 25200
# Node ID 847749ebcd3aa2441dc3390130bef67ea6b42a08
# Parent c315e16180091413e54c6403a5a80339fd8953f4
Stricter skeleton instance check for del and store
Besides having the right tag, del and store match a skeleton only if the
text for that skeleton also matches their regexp.
Weaken the check for key, label, seq, and counter a tiny bit.
diff -r c315e1618009 -r 847749ebcd3a src/put.c
--- a/src/put.c Mon May 12 11:34:49 2008 -0700
+++ b/src/put.c Mon May 12 11:35:41 2008 -0700
@@ -310,25 +310,30 @@ static void print_escaped_chars(FILE *ou
/*
* Check whether SKEL has the skeleton type required by LENS
*/
+
static int skel_instance_of(struct lens *lens, struct skel *skel) {
if (skel == NULL)
return 0;
switch (lens->tag) {
case L_DEL:
- // FIXME: skel->text must match lens->regexp
- return skel->tag == L_DEL;
+ if (skel->tag != L_DEL)
+ return 0;
+ return regexp_match(lens->regexp, skel->text, strlen(skel->text),
+ 0, NULL);
case L_STORE:
- // FIXME: skel->text must match lens->regexp
- return skel->tag == L_STORE;
+ if (skel->tag != L_STORE)
+ return 0;
+ return regexp_match(lens->regexp, skel->text, strlen(skel->text),
+ 0, NULL);
case L_KEY:
- return 0;
+ return skel->tag == L_KEY;
case L_LABEL:
- return 0;
+ return skel->tag == L_LABEL;
case L_SEQ:
- return 0;
+ return skel->tag == L_SEQ;
case L_COUNTER:
- return 0;
+ return skel->tag == L_COUNTER;
case L_CONCAT:
{
struct skel *s = skel->skels;
More information about the augeas-devel
mailing list