Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 31373 - Evolution 1.4.5 filters die from filtertypes.xml parse error
Summary: Evolution 1.4.5 filters die from filtertypes.xml parse error
Status: RESOLVED WORKSFORME
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: [OLD] GNOME (show other bugs)
Hardware: x86 Linux
: High major (vote)
Assignee: Gentoo Linux Gnome Desktop Team
URL: http://austintheen.com/bugs/evo-bug.png
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2003-10-17 12:29 UTC by Austin Theen
Modified: 2003-10-19 10:39 UTC (History)
0 users

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Austin Theen 2003-10-17 12:29:47 UTC
I've emerged evolution with USE=-* and still get this same error. This was a
recently developed problem. I've tried rebuilding libxml and libxml2 then
rebuilding evolution and still get the same problem. 
I've run xmllint on /usr/share/evolution/1.4/filtertypes.xml and get 5 errors
relating to what appears to be html entities < and > being used to display
signs in menus inside evolution. Somehow they aren't escaped or are being parsed
incorrectly. 
I can tweak the file and escape the < in filtertypes.xml and it MIGHT work
(about 3 out of 10 times). I'm not an XML guru, so I'm not sure if I can escape
them or even if I need to.

Reproducible: Sometimes
Steps to Reproduce:
1. emerge net-mail/evolution-1.4.5
2. evolution
3. setup filters

Actual Results:  
xml parse error in /usr/share/evolution/1.4/filterstypes.xml


Expected Results:  
filtering email from my inbox into mailing list folders.

Portage 2.0.49-r13-2 (default-x86-1.4, gcc-3.3.1, glibc-2.3.2-r6, 2.4.20-gentoo-r7)
=================================================================
System uname: 2.4.20-gentoo-r7 i686 AMD Athlon(tm) MP 1600+
Gentoo Base System version 1.4.3.11
distcc 2.11.1 i686-pc-linux-gnu (protocols 1 and 2) (default port 3632) [enabled]
ACCEPT_KEYWORDS="x86 ~x86"
AUTOCLEAN="yes"
CFLAGS="-O3 -march=athlon-mp -funroll-loops -fprefetch-loop-arrays -pipe"
CHOST="i686-pc-linux-gnu"
COMPILER="gcc3"
CONFIG_PROTECT="/etc /var/qmail/control /usr/kde/2/share/config
/usr/kde/3/share/config /var/bind /usr/X11R6/lib/X11/xkb
/usr/kde/3.1/share/config /usr/share/config"
CONFIG_PROTECT_MASK="/etc/gconf /etc/env.d"
CXXFLAGS="-O3 -march=athlon-mp -funroll-loops -fprefetch-loop-arrays -pipe"
DISTDIR="/usr/portage/distfiles"
FEATURES="autoaddcvs distcc ccache sandbox"
GENTOO_MIRRORS="ftp://gentoo.mirrors.pair.com/
         http://gentoo.mirrors.pair.com/
         http://adelie.polymtl.ca/
         ftp://mirrors.tds.net/gentoo
         http://gentoo.seren.com/gentoo
         ftp://ftp.ussg.iu.edu/pub/linux/gentoo
         ftp://gentoo.ccccom.com
         http://gentoo.noved.org/
         http://www.ibiblio.org/gentoo
         ftp://gentoo.linux.no/pub/gentoo/"
MAKEOPTS="-j5"
PKGDIR="/usr/portage/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY=""
SYNC="rsync://rsync.gentoo.org/gentoo-portage"
USE="x86 apm avi crypt cups encode foomaticdb gif jpeg libg++ mad mikmod mpeg
ncurses nls pdflib png quicktime spell truetype xml2 xmms xv zlib gtkhtml alsa
gdbm berkdb slang readline bonobo svga tcltk java guile mysql X sdl gpm tcpd pam
libwww ssl perl python esd imlib oggvorbis gnome gtk qt opengl mozilla gphoto2
cdr scanner 3dnow acpi acpi4linux apache2 autofs curl dv dvd ethereal evms2 evo
fastcgi ffmpeg gb gd gd-external gnomedb gstreamer gtk2 imagemagick imap ipalias
lmtp ltsp maildir mbox md5sum mdb memlimit nowin oav offensive pda php pnp
prelude samba sasl src sse threads transcode X509 xfs xine xvid -oss -arts -kde
-motif"
Comment 1 Austin Theen 2003-10-17 12:37:54 UTC
austin@bender austin $ evolution --debug=evolution-debug
austin@bender austin $ cat evolution-debug
/usr/share/evolution/1.4/vfoldertypes.xml:213: error: Entity 'lt' not defined
       (match-all (< (get-sent-date) ${versus}))
                       ^
/usr/share/evolution/1.4/vfoldertypes.xml:244: error: Entity 'lt' not defined
       (match-all (< (get-received-date) ${versus}))
                       ^
/usr/share/evolution/1.4/vfoldertypes.xml:300: error: Entity 'lt' not defined
       (match-all (< (cast-int (user-tag "score")) ${versus}))
                       ^
/usr/share/evolution/1.4/vfoldertypes.xml:319: error: Entity 'lt' not defined
       (match-all (< (get-size) ${versus}))
                       ^
 
(evolution:16451): evolution-mail-WARNING **: cannot load vfolders: Unable
to load system rules '/usr/share/evolution/1.4/vfoldertypes.xml': Success
 
/usr/share/evolution/1.4/vfoldertypes.xml:213: error: Entity 'lt' not defined
       (match-all (< (get-sent-date) ${versus}))
                       ^
/usr/share/evolution/1.4/vfoldertypes.xml:244: error: Entity 'lt' not defined
       (match-all (< (get-received-date) ${versus}))
                       ^
/usr/share/evolution/1.4/vfoldertypes.xml:300: error: Entity 'lt' not defined
       (match-all (< (cast-int (user-tag "score")) ${versus}))
                       ^
/usr/share/evolution/1.4/vfoldertypes.xml:319: error: Entity 'lt' not defined
       (match-all (< (get-size) ${versus}))
                       ^
/usr/share/evolution/1.4/filtertypes.xml:342: error: Entity 'lt' not defined
       (match-all (< (get-sent-date) ${versus}))
                       ^
/usr/share/evolution/1.4/filtertypes.xml:373: error: Entity 'lt' not defined
       (match-all (< (get-received-date) ${versus}))
                       ^
/usr/share/evolution/1.4/filtertypes.xml:429: error: Entity 'lt' not defined
       (match-all (< (cast-int (user-tag "score")) ${versus}))
                       ^
/usr/share/evolution/1.4/filtertypes.xml:448: error: Entity 'lt' not defined
       (match-all (< (get-size) ${versus}))
                       ^
/usr/share/evolution/1.4/filtertypes.xml:609: error: Entity 'lt' not defined
      (match-all (< (pipe-message "/bin/sh" "-c" ${command}) ${retval}))
                      ^
/usr/share/evolution/1.4/filtertypes.xml:342: error: Entity 'lt' not defined
       (match-all (< (get-sent-date) ${versus}))
                       ^
/usr/share/evolution/1.4/filtertypes.xml:373: error: Entity 'lt' not defined
       (match-all (< (get-received-date) ${versus}))
                       ^
/usr/share/evolution/1.4/filtertypes.xml:429: error: Entity 'lt' not defined
       (match-all (< (cast-int (user-tag "score")) ${versus}))
                       ^
/usr/share/evolution/1.4/filtertypes.xml:448: error: Entity 'lt' not defined
       (match-all (< (get-size) ${versus}))
                       ^
/usr/share/evolution/1.4/filtertypes.xml:609: error: Entity 'lt' not defined
      (match-all (< (pipe-message "/bin/sh" "-c" ${command}) ${retval}))
                      ^
/usr/share/evolution/1.4/filtertypes.xml:342: error: Entity 'lt' not defined
       (match-all (< (get-sent-date) ${versus}))
                       ^
/usr/share/evolution/1.4/filtertypes.xml:373: error: Entity 'lt' not defined
       (match-all (< (get-received-date) ${versus}))
                       ^
/usr/share/evolution/1.4/filtertypes.xml:429: error: Entity 'lt' not defined
       (match-all (< (cast-int (user-tag "score")) ${versus}))
                       ^
/usr/share/evolution/1.4/filtertypes.xml:448: error: Entity 'lt' not defined
       (match-all (< (get-size) ${versus}))
                       ^
/usr/share/evolution/1.4/filtertypes.xml:609: error: Entity 'lt' not defined
      (match-all (< (pipe-message "/bin/sh" "-c" ${command}) ${retval}))
                      ^


%egrep -nC1 "<|>" /usr/share/evolution/1.4/filtertypes.xml
341-    <code>
342:       (match-all (&lt; (get-sent-date) ${versus}))
343-    </code>
--
347-    <code>
348:       (match-all (&gt; (get-sent-date) ${versus}))
349-    </code>
--
372-    <code>
373:       (match-all (&lt; (get-received-date) ${versus}))
374-    </code>
--
378-    <code>
379:       (match-all (&gt; (get-received-date) ${versus}))
380-    </code>
--
422-    <code>
423:       (match-all (&gt; (cast-int (user-tag "score")) ${versus}))
424-    </code>
--
428-    <code>
429:       (match-all (&lt; (cast-int (user-tag "score")) ${versus}))
430-    </code>
--
441-    <code>
442:       (match-all (&gt; (get-size) ${versus}))
443-    </code>
--
447-    <code>
448:       (match-all (&lt; (get-size) ${versus}))
449-    </code>
--
602-    <code>
603:      (match-all (&gt; (pipe-message "/bin/sh" "-c" ${command}) ${retval}))
604-    </code>
--
608-    <code>
609:      (match-all (&lt; (pipe-message "/bin/sh" "-c" ${command}) ${retval}))
610-    </code>
Comment 2 Alastair Tse (RETIRED) gentoo-dev 2003-10-17 13:10:31 UTC
can you attach the filtertypes.xml? xmllint runs fine on the one i've got
installed.
Comment 3 Austin Theen 2003-10-17 19:13:57 UTC
This is the installed copy of filtertypes.xml from the emerge evolution which
gives me the error msg. 

---/usr/share/evolution/1.4/filtertypes.xml---
<?xml version="1.0"?>
<filterdescription>
<partset>
 <part name="sender">
   <title>Sender</title>
   <input type="optionlist" name="sender-type">
    <option value="contains">
     <title>contains</title>
     <code>
        (match-all (header-contains "From" ${sender}))
     </code>
    </option>
    <option value="not contains">
     <title>does not contain</title>
     <code>
        (match-all (not (header-contains "From" ${sender})))
     </code>
    </option>
    <option value="is">
     <title>is</title>
     <code>
        (match-all (header-matches "From" ${sender}))
     </code>
    </option>
    <option value="is not">
     <title>is not</title>
     <code>
        (match-all (not (header-matches "From" ${sender})))
     </code>
    </option>
    <option value="starts with">
     <title>starts with</title>
     <code>
        (match-all (header-starts-with "From" ${sender}))
     </code>
    </option>
    <option value="not starts with">
     <title>does not start with</title>
     <code>
        (match-all (not (header-starts-with "From" ${sender})))
     </code>
    </option>
    <option value="ends with">
     <title>ends with</title>
     <code>
        (match-all (header-ends-with "From" ${sender}))
     </code>
    </option>
    <option value="not ends with">
     <title>does not end with</title>
     <code>
        (match-all (not (header-ends-with "From" ${sender})))
     </code>
    </option>
    <option value="matches soundex">
     <title>sounds like</title>
     <code>
        (match-all (header-soundex "From" ${sender}))
     </code>
    </option>
    <option value="not match soundex">
     <title>does not sound like</title>
     <code>
        (match-all (not (header-soundex "From" ${sender})))
     </code>
    </option>
   </input>
   <input type="string" name="sender"/>
 </part>
 
 <part name="to">
   <title>Recipients</title>
   <input type="optionlist" name="recipient-type">
    <option value="contains">
     <title>contains</title>
     <code>
        (match-all (or (header-contains "To" ${recipient})
                       (header-contains "Cc" ${recipient})))
     </code>
    </option>
    <option value="not contains">
     <title>does not contain</title>
     <code>
        (match-all (not (or
               (header-contains "To" ${recipient})
               (header-contains "Cc" ${recipient}))))
     </code>
    </option>
    <option value="is">
     <title>is</title>
     <code>
        (match-all (or (header-matches "To" ${recipient})
                       (header-matches "Cc" ${recipient})))
     </code>
    </option>
    <option value="is not">
     <title>is not</title>
     <code>
        (match-all (not (or
               (header-matches "To" ${recipient})
               (header-matches "Cc" ${recipient}))))
     </code>
    </option>
    <option value="starts with">
     <title>starts with</title>
     <code>
        (match-all (or (header-starts-with "To" ${recipient})
                       (header-starts-with "Cc" ${recipient})))
     </code>
    </option>
    <option value="not starts with">
     <title>does not start with</title>
     <code>
        (match-all (not (or
               (header-starts-with "To" ${recipient})
               (header-starts-with "Cc" ${recipient}))))
     </code>
    </option>
    <option value="ends with">
     <title>ends with</title>
     <code>
        (match-all (or (header-ends-with "To" ${recipient})
                       (header-ends-with "Cc" ${recipient})))
     </code>
    </option>
    <option value="not ends with">
     <title>does not end with</title>
     <code>
        (match-all (not (or
               (header-ends-with "To" ${recipient})
               (header-ends-with "Cc" ${recipient}))))
     </code>
    </option>
    <option value="matches soundex">
     <title>sounds like</title>
     <code>
        (match-all (or (header-soundex "To" ${recipient})
                       (header-soundex "Cc" ${recipient})))
     </code>
    </option>
    <option value="not match soundex">
     <title>does not sound like</title>
     <code>
        (match-all (not (or
               (header-soundex "To" ${recipient})
               (header-soundex "Cc" ${recipient}))))
     </code>
    </option>
   </input>
   <input type="address" name="recipient"/>
 </part>
 
 <part name="subject">
   <title>Subject</title>
   <input type="optionlist" name="subject-type">
    <option value="contains">
     <title>contains</title>
     <code>
        (match-all (header-contains "Subject" ${subject}))
     </code>
    </option>
    <option value="not contains">
     <title>does not contain</title>
     <code>
        (match-all (not (header-contains "Subject" ${subject})))
     </code>
    </option>
    <option value="is">
     <title>is</title>
     <code>
        (match-all (header-matches "Subject" ${subject}))
     </code>
    </option>
    <option value="is not">
     <title>is not</title>
     <code>
        (match-all (not (header-matches "Subject" ${subject})))
     </code>
    </option>
    <option value="starts with">
     <title>starts with</title>
     <code>
        (match-all (header-starts-with "Subject" ${subject}))
     </code>
    </option>
    <option value="not starts with">
     <title>does not start with</title>
     <code>
        (match-all (not (header-starts-with "Subject" ${subject})))
     </code>
    </option>
    <option value="ends with">
     <title>ends with</title>
     <code>
        (match-all (header-ends-with "Subject" ${subject}))
     </code>
    </option>
    <option value="not ends with">
     <title>does not end with</title>
     <code>
        (match-all (not (header-ends-with "Subject" ${subject})))
     </code>
    </option>
    <option value="matches soundex">
     <title>sounds like</title>
     <code>
        (match-all (header-soundex "Subject" ${subject}))
     </code>
    </option>
    <option value="not match soundex">
     <title>does not sound like</title>
     <code>
        (match-all (not (header-soundex "Subject" ${subject})))
     </code>
    </option>
   </input>
   <input type="string" name="subject"/>
 </part>
 
 <part name="header">
   <title>Specific header</title>
   <input type="string" name="header-field"/>
   <input type="optionlist" name="header-type">
    <option value="contains">
     <title>contains</title>
     <code>
        (match-all (header-contains ${header-field} ${word}))
     </code>
    </option>
    <option value="not contains">
     <title>does not contain</title>
     <code>
        (match-all (not (header-contains ${header-field} ${word})))
     </code>
    </option>
    <option value="is">
     <title>is</title>
     <code>
        (match-all (header-matches ${header-field} ${word}))
     </code>
    </option>
    <option value="is not">
     <title>is not</title>
     <code>
        (match-all (not (header-matches ${header-field} ${word})))
     </code>
    </option>
    <option value="starts with">
     <title>starts with</title>
     <code>
        (match-all (header-starts-with ${header-field} ${word}))
     </code>
    </option>
    <option value="not starts with">
     <title>does not start with</title>
     <code>
        (match-all (not (header-starts-with ${header-field} ${word})))
     </code>
    </option>
    <option value="ends with">
     <title>ends with</title>
     <code>
        (match-all (header-ends-with ${header-field} ${word}))
     </code>
    </option>
    <option value="not ends with">
     <title>does not end with</title>
     <code>
        (match-all (not (header-ends-with ${header-field} ${word})))
     </code>
    </option>
    <option value="exists">
     <title>exists</title>
     <code>
        (match-all (header-exists ${header-field}))
     </code>
    </option>
    <option value="not exists">
     <title>does not exist</title>
     <code>
        (match-all (not (header-exists ${header-field})))
     </code>
    </option>
    <option value="matches soundex">
     <title>sounds like</title>
     <code>
        (match-all (header-soundex ${header-field} ${word}))
     </code>
    </option>
    <option value="not match soundex">
     <title>does not sound like</title>
     <code>
        (match-all (not (header-soundex ${header-field} ${word})))
     </code>
    </option>
   </input>
   <input type="string" name="word"/>
 </part>
 
 <part name="body">
   <title>Message Body</title>
   <input type="optionlist" name="body-type">
    <option value="contains">
     <title>contains</title>
     <code>
        (body-contains ${word})
     </code>
    </option>
    <option value="not contains">
     <title>does not contain</title>
     <code>
        (match-all (not (body-contains ${word})))
     </code>
    </option>
   </input>
   <input type="string" name="word"/>
 </part>
 
 <part name="sexp">
   <title>Expression</title>
   <input type="code" name="code"/>
 </part>
 
 <part name="sent-date">
  <title>Date sent</title>
  <input type="optionlist" name="date-spec-type">
   <option value="is">
    <title>is</title>
    <code>
       (match-all (= (get-sent-date) ${versus}))
    </code>
   </option>
   <option value="is-not">
    <title>is not</title>
    <code>
       (match-all (not (= (get-sent-date) ${versus})))
    </code>
   </option>
   <option value="before">
    <title>is before</title>
    <code>
       (match-all (&lt; (get-sent-date) ${versus}))
    </code>
   </option>
   <option value="after">
    <title>is after</title>
    <code>
       (match-all (&gt; (get-sent-date) ${versus}))
    </code>
   </option>
  </input>
  <input type="datespec" name="versus"/>
 </part>
 
 <part name="recv-date">
  <title>Date received</title>
  <input type="optionlist" name="date-spec-type">
   <option value="is">
    <title>is</title>
    <code>
       (match-all (= (get-received-date) ${versus}))
    </code>
   </option>
   <option value="is-not">
    <title>is not</title>
    <code>
       (match-all (not (= (get-received-date) ${versus})))
    </code>
   </option>
   <option value="before">
    <title>is before</title>
    <code>
       (match-all (&lt; (get-received-date) ${versus}))
    </code>
   </option>
   <option value="after">
    <title>is after</title>
    <code>
       (match-all (&gt; (get-received-date) ${versus}))
    </code>
   </option>
  </input>
  <input type="datespec" name="versus"/>
 </part>
 
 <part name="label">
  <title>Label</title>
  <input type="optionlist" name="label-type">
   <option value="is">
    <title>is</title>
    <code>
       (match-all (= (user-tag "label") ${versus}))
    </code>
   </option>
   <option value="is-not">
    <title>is not</title>
    <code>
       (match-all (not (= (user-tag "label") ${versus})))
    </code>
   </option>
  </input>
  <input type="label" name="versus"/>
 </part>
 
 <part name="score">
  <title>Score</title>
  <input type="optionlist" name="score-type">
   <option value="is">
    <title>is</title>
    <code>
       (match-all (= (cast-int (user-tag "score")) ${versus}))
    </code>
   </option>
   <option value="is-not">
    <title>is not</title>
    <code>
       (match-all (not (= (cast-int (user-tag "score")) ${versus})))
    </code>
   </option>
   <option value="greater-than">
    <title>is greater than</title>
    <code>
       (match-all (&gt; (cast-int (user-tag "score")) ${versus}))
    </code>
   </option>
   <option value="less-than">
    <title>is less than</title>
    <code>
       (match-all (&lt; (cast-int (user-tag "score")) ${versus}))
    </code>
   </option>
  </input>
  <input type="score" name="versus"/>
 </part>
 
 <part name="size">
  <title>Size (kB)</title>
  <input type="optionlist" name="size-type">
   <option value="greater-than">
    <title>is greater than</title>
    <code>
       (match-all (&gt; (get-size) ${versus}))
    </code>
   </option>
   <option value="less-than">
    <title>is less than</title>
    <code>
       (match-all (&lt; (get-size) ${versus}))
    </code>
   </option>
  </input>
  <input type="integer" name="versus"/>
 </part>
 
 <part name="status">
  <title>Status</title>
  <input type="optionlist" name="match-type">
   <option value="is">
    <title>is</title>
    <code>
     (match-all (system-flag ${flag}))
    </code>
   </option>
   <option value="is not">
    <title>is not</title>
    <code>
     (match-all (not (system-flag ${flag})))
    </code>
   </option>
  </input>
  <input type="optionlist" name="flag">
   <option value="Answered">
    <title>Replied to</title>
   </option>
   <option value="Draft">
    <title>Draft</title>
   </option>
   <option value="Flagged">
    <title>Important</title>
   </option>
   <option value="Seen">
    <title>Read</title>
   </option>
  </input>
 </part>
 
 <part name="follow-up">
  <title>Follow Up</title>
  <input type="optionlist" name="match-type">
   <option value="is">
    <title>is Flagged</title>
    <code>
     (match-all (not (= (user-tag "follow-up") "")))
    </code>
   </option>
   <option value="is not">
    <title>is not Flagged</title>
    <code>
     (match-all (= (user-tag "follow-up") ""))
    </code>
   </option>
  </input>
 </part>
 
 <part name="attachments">
  <title>Attachments</title>
  <input type="optionlist" name="match-type">
   <option value="exist">
    <title>Exist</title>
    <code>
     (match-all (system-flag "Attachments"))
    </code>
   </option>
   <option value="not exist">
    <title>Do Not Exist</title>
    <code>
     (match-all (not (system-flag "Attachments")))
    </code>
   </option>
  </input>
 </part>
 
 <part name="mlist">
  <title>Mailing list</title>
   <input type="optionlist" name="mlist-type">
    <option value="is">
        <title>is</title>
        <code>(match-all (header-matches "x-camel-mlist" ${mlist}))</code>
    </option>
    <option value="is not">
        <title>is not</title>
        <code>(match-all (not (header-matches "x-camel-mlist" ${mlist})))</code>
    </option>
    <option value="contains">
        <title>contains</title>
        <code>(match-all (header-contains "x-camel-mlist" ${mlist}))</code>
    </option>
    <option value="not contains">
        <title>does not contain</title>
        <code>(match-all (not (header-contains "x-camel-mlist" ${mlist})))</code>
    </option>
   </input>
   <input type="string" name="mlist"/>
 </part>
 
 <part name="regex">
  <title>Regex Match</title>
  <input type="optionlist" name="match-type">
   <option value="header">
    <title>Message Header</title>
    <code>
       (match-all (header-full-regex ${expression}))
    </code>
   </option>
   <option value="body">
    <title>Message Body</title>
    <code>
       (match-all (body-regex ${expression}))
    </code>
   </option>
  </input>
  <input type="regex" name="expression"/>
 </part>
 
 <part name="source">
  <title>Source Account</title>
  <input type="optionlist" name="srcmatch-type">
   <option value="is">
    <title>is</title>
    <code>
      (match-all (header-source ${source}))
    </code>
   </option>
   <option value="is-not">
    <title>is not</title>
    <code>
      (match-all (not (header-source ${source})))
    </code>
   </option>
  </input>
  <input type="source" name="source"/>
 </part>
 
 <part name="pipe">
  <title>Pipe Message to Shell Command</title>
  <input type="command" name="command"/>
  <input type="optionlist" name="retval-type">
   <option value="is">
    <title>returns</title>
    <code>
      (match-all (= (pipe-message "/bin/sh" "-c" ${command}) ${retval}))
    </code>
   </option>
   <option value="is-not">
    <title>does not return</title>
    <code>
      (match-all (not (= (pipe-message "/bin/sh" "-c" ${command}) ${retval})))
    </code>
   </option>
   <option value="greater-than">
    <title>returns greater than</title>
    <code>
      (match-all (&gt; (pipe-message "/bin/sh" "-c" ${command}) ${retval}))
    </code>
   </option>
   <option value="less-than">
    <title>returns less than</title>
    <code>
      (match-all (&lt; (pipe-message "/bin/sh" "-c" ${command}) ${retval}))
    </code>
   </option>
  </input>
  <input type="integer" name="retval"/>
 </part>
 
</partset>
 
 
<actionset>
 <part name="move-to-folder">
  <title>Move to Folder</title>
  <code>(move-to ${folder})</code>
  <input type="folder" name="folder"/>
 </part>
 <part name="copy-to-folder">
  <title>Copy to Folder</title>
  <code>(copy-to ${folder})</code>
  <input type="folder" name="folder"/>
 </part>
 <part name="delete">
  <title>Delete</title>
  <code>(delete)</code>
 </part>
 <part name="stop">
  <title>Stop Processing</title>
  <code>(stop)</code>
 </part>
 <part name="colour">
  <title>Assign Color</title>
  <code>(set-colour ${colour})</code>
  <input type="colour" name="colour"/>
 </part>
 <part name="score">
  <title>Assign Score</title>
  <code>(set-score ${score})</code>
  <input type="score" name="score"/>
 </part>
 <part name="adj-score">
  <title>Adjust Score</title>
  <code>(adjust-score ${score})</code>
  <input type="score" name="score"/>
 </part>
 <part name="set-status">
  <title>Set Status</title>
  <code>
   (set-system-flag ${flag})
  </code>
  <input type="optionlist" name="flag">
   <option value="Answered">
    <title>Replied to</title>
   </option>
   <option value="Deleted">
    <title>Deleted</title>
   </option>
   <option value="Draft">
    <title>Draft</title>
   </option>
   <option value="Flagged">
    <title>Important</title>
   </option>
   <option value="Seen">
    <title>Read</title>
   </option>
  </input>
 </part>
 <part name="unset-status">
  <title>Unset Status</title>
  <code>
   (unset-system-flag ${flag})
  </code>
  <input type="optionlist" name="flag">
   <option value="Answered">
    <title>Replied to</title>
   </option>
   <option value="Deleted">
    <title>Deleted</title>
   </option>
   <option value="Draft">
    <title>Draft</title>
   </option>
   <option value="Flagged">
    <title>Important</title>
   </option>
   <option value="Seen">
    <title>Read</title>
   </option>
  </input>
 </part>
 <part name="beep">
  <title>Beep</title>
  <code>(beep)</code>
 </part>
 <part name="play-sound">
  <title>Play Sound</title>
  <code>(play-sound ${sound})</code>
  <input type="file" name="sound"/>
 </part>
 <part name="shell">
  <title>Shell Command</title>
  <code>(shell "/bin/sh" "-c" ${command})</code>
  <input type="command" name="command"/>
 </part>
 <part name="pipe">
  <title>Pipe Message to Shell Command</title>
  <code>(pipe-message "/bin/sh" "-c" ${command})</code>
  <input type="command" name="command"/>
 </part>
</actionset>
</filterdescription>
Comment 4 Austin Theen 2003-10-17 19:16:30 UTC
I just ran xmllint on /usr/share/evolution/1.4/filtertypes.xml and it returns
ok. but evolution still gives the same error "Unable to load system rules
'/usr/share/evolution/1.4/filtertypes.xml': Success"

It's the success part that throws me. Did it succeed in loading with errors,
or did it fail loading because of errors.  ??
Comment 5 Austin Theen 2003-10-19 10:38:40 UTC
reemerge evolution 1.4.5 with the following emerge info and it works now.
Don't know why just yet.

I just happened to try compiling under 2.6 with distcc disabled and the new
gcc and glibc. so I'm happy. 

Portage 2.0.49-r13-2 (default-x86-1.4, gcc-3.3.1, glibc-2.3.2-r6, 2.6.0-test6-mm4)
=================================================================
System uname: 2.6.0-test6-mm4 i686 AMD Athlon(tm) MP 1600+
Gentoo Base System version 1.4.3.11
distcc 2.11.1 i686-pc-linux-gnu (protocols 1 and 2) (default port 3632) [disabled]
ACCEPT_KEYWORDS="x86 ~x86"
AUTOCLEAN="yes"
CFLAGS="-O3 -march=athlon-mp -funroll-loops -fprefetch-loop-arrays -pipe"
CHOST="i686-pc-linux-gnu"
COMPILER="gcc3"
CONFIG_PROTECT="/etc /var/qmail/control /usr/kde/2/share/config /usr/kde/3/share/config
/var/bind /usr/X11R6/lib/X11/xkb /usr/kde/3.1/share/config /usr/share/config"
CONFIG_PROTECT_MASK="/etc/gconf /etc/env.d"
CXXFLAGS="-O3 -march=athlon-mp -funroll-loops -fprefetch-loop-arrays -pipe"
DISTDIR="/usr/portage/distfiles"
FEATURES="ccache buildpkg sandbox userpriv usersandbox fixpackages digest
cvs autoaddcvs"
GENTOO_MIRRORS="ftp://gentoo.mirrors.pair.com/
         http://gentoo.mirrors.pair.com/
         http://adelie.polymtl.ca/
         ftp://mirrors.tds.net/gentoo
         http://gentoo.seren.com/gentoo
         ftp://ftp.ussg.iu.edu/pub/linux/gentoo
         ftp://gentoo.ccccom.com
         http://gentoo.noved.org/
         http://www.ibiblio.org/gentoo
         ftp://gentoo.linux.no/pub/gentoo/"
MAKEOPTS="-j3"
PKGDIR="/usr/portage/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY=""
SYNC="rsync://rsync.gentoo.org/gentoo-portage"
USE="x86 apm avi crypt cups encode foomaticdb gif jpeg libg++ mad mikmod
mpeg ncurses nls pdflib png quicktime spell truetype xml2 xmms xv zlib gtkhtml
alsa gdbm berkdb slang readline bonobo svga tcltk java guile mysql X sdl
gpm tcpd pam libwww ssl perl python esd imlib oggvorbis gnome gtk qt opengl
mozilla gphoto2 cdr scanner 3dnow acpi acpi4linux apache2 autofs curl dv
dvd ethereal evms2 evo fastcgi ffmpeg gb gd gd-external gnomedb gstreamer
gtk2 imagemagick imap ipalias lmtp ltsp maildir mbox md5sum mdb memlimit
nowin oav offensive pda php pnp prelude samba sasl src sse threads transcode
X509 xfs xine xvid -oss -arts -kde -motif"
 
Comment 6 Austin Theen 2003-10-19 10:39:52 UTC
as I just posted, it works for me now, after some serious massaging. Now
if I can just figure out how I fixed it, i'll post it here. ;)