[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