The "stop" they are testing is a
variable set earlier to indicate further down that execution is to stop after some additional action. But the code is not ready to stop execution at the point they set it.
Here's the tests I inserted at the beginning of the last edit block before my additional code...
Code:
if anyof(string :is ["${stop}", "${skipinbox}", "${hasmailbox}", "${deletetotrash}", "${spam}"] "Y",
exists "X-LinkId") {
stop;
}
That covers all their various test switches where they haven't added stops (although skipinbox and hasmailbox may be redundant). Now the original code I have down there can start with it's own
if or remain an
elsif. I changed mine to an
if.
IMO, it's a shame they didn't "sprinkle" a few underscores in their switch names to help reduce possible naming conflicts with identifiers the user might use in their own code.
I submitted a ticket last night requesting they allow me to turn the new rules stuff back on.
----
Update:
I looked at a copy of the last time I updated my sieve code (I always save a copy) and I noticed they had added the following just before the last edit block (at the end of section 6),
Code:
if string :is "${stop}" "Y" {
# For backwards compatibility
}
That may be the result of my earlier ticket where I warned them about introducing a syntax error with existing user code that may have started the last edit block with an elsif.