[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Convergence and ReplaceAll
From: |
clemens fischer |
Subject: |
Re: Convergence and ReplaceAll |
Date: |
30 Mar 2003 20:13:57 +0200 |
User-agent: |
Gnus/5.090017 (Oort Gnus v0.17) Emacs/21.3.50 (berkeley-unix) |
Chip Seraphine <chip@trdlnk.com>:
> BeginGroupIfNoMatch
> "[[:space:]]*COREADM_GLOB_PATTERN=/var/core/core.\%f.\%u-\%p$"
> ReplaceAll "^[[:space:]]*COREADM_GLOB_PATTERN=.*$"
> With "COREADM_GLOB_PATTERN=/var/core/core.%f.%u-%p"
>
> cfengine:mingle: WARNING: Non-convergent edit operation ReplaceAll
> [COREADM_GLOB_PATTERN=/var/core/core.?f.?u-?p] With
> [[[:space:]]*COREADM_GLOB_PATTERN=.*$]
> cfengine:mingle: Line begins [COREADM_GLOB_PATTERN=]
> cfengine:mingle: Replacement matches search string and will thus
> replace every time - edit was not done
> cfengine:mingle: Error editing file /etc/coreadm.conf
look at your replace-pattern (search pattern!). i'm surprised
cfengine sees that: it matches your replacement. so the search
pattern would match the replacement again and this is a loop! at
least, this is what i see here. can't you make the search pattern
more specific, so that replace loop can't occur?
> I would understand this if I didn't have the BeginGroupIfNoMatch
> block. Is the problem that the interpreter doesn't realize the
> Group stuff protects us from nonconvergent behavior, or am I just
> totally misunderstanding something? And how does everybody else
> deal with this sort of problem?
well, the problem appears if the group condition matches, to me the
error is obvious. can you perhaps use an insert instead of the
replace operation?
clemens