You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spamassassin.apache.org by jm...@apache.org on 2006/10/06 14:47:11 UTC

svn commit: r453586 [1/7] - in /spamassassin/branches/jm_re2c_hacks: ./ build/ build/automc/ build/buildbot/ contrib/ lib/Mail/ lib/Mail/SpamAssassin/ lib/Mail/SpamAssassin/Bayes/ lib/Mail/SpamAssassin/BayesStore/ lib/Mail/SpamAssassin/Conf/ lib/Mail/S...

Author: jm
Date: Fri Oct  6 05:46:56 2006
New Revision: 453586

URL: http://svn.apache.org/viewvc?view=rev&rev=453586
Log:
merged up to r453533 on svn trunk using 'svn merge -r431117:453533 https://svn.apache.org/repos/asf/spamassassin/trunk'

Added:
    spamassassin/branches/jm_re2c_hacks/contrib/check_spamd
      - copied unchanged from r453533, spamassassin/trunk/contrib/check_spamd
    spamassassin/branches/jm_re2c_hacks/rules/60_whitelist_dk.cf
      - copied unchanged from r453533, spamassassin/trunk/rules/60_whitelist_dk.cf
    spamassassin/branches/jm_re2c_hacks/spamd-apache2/
      - copied from r453533, spamassassin/trunk/spamd-apache2/
    spamassassin/branches/jm_re2c_hacks/spamd-apache2/MANIFEST
      - copied unchanged from r453533, spamassassin/trunk/spamd-apache2/MANIFEST
    spamassassin/branches/jm_re2c_hacks/spamd-apache2/MANIFEST.SKIP
      - copied unchanged from r453533, spamassassin/trunk/spamd-apache2/MANIFEST.SKIP
    spamassassin/branches/jm_re2c_hacks/spamd-apache2/META.yml
      - copied unchanged from r453533, spamassassin/trunk/spamd-apache2/META.yml
    spamassassin/branches/jm_re2c_hacks/spamd-apache2/Makefile.PL
      - copied unchanged from r453533, spamassassin/trunk/spamd-apache2/Makefile.PL
    spamassassin/branches/jm_re2c_hacks/spamd-apache2/README.apache
      - copied unchanged from r453533, spamassassin/trunk/spamd-apache2/README.apache
    spamassassin/branches/jm_re2c_hacks/spamd-apache2/bin/
      - copied from r453533, spamassassin/trunk/spamd-apache2/bin/
    spamassassin/branches/jm_re2c_hacks/spamd-apache2/bin/Bench-spamd.pl
      - copied unchanged from r453533, spamassassin/trunk/spamd-apache2/bin/Bench-spamd.pl
    spamassassin/branches/jm_re2c_hacks/spamd-apache2/bin/Spamd
      - copied unchanged from r453533, spamassassin/trunk/spamd-apache2/bin/Spamd
    spamassassin/branches/jm_re2c_hacks/spamd-apache2/bin/apache-spamd.pl
      - copied unchanged from r453533, spamassassin/trunk/spamd-apache2/bin/apache-spamd.pl
    spamassassin/branches/jm_re2c_hacks/spamd-apache2/lib/
      - copied from r453533, spamassassin/trunk/spamd-apache2/lib/
    spamassassin/branches/jm_re2c_hacks/spamd-apache2/lib/Mail/
      - copied from r453533, spamassassin/trunk/spamd-apache2/lib/Mail/
    spamassassin/branches/jm_re2c_hacks/spamd-apache2/lib/Mail/SpamAssassin/
      - copied from r453533, spamassassin/trunk/spamd-apache2/lib/Mail/SpamAssassin/
    spamassassin/branches/jm_re2c_hacks/spamd-apache2/lib/Mail/SpamAssassin/Spamd/
      - copied from r453533, spamassassin/trunk/spamd-apache2/lib/Mail/SpamAssassin/Spamd/
    spamassassin/branches/jm_re2c_hacks/spamd-apache2/lib/Mail/SpamAssassin/Spamd.pm
      - copied unchanged from r453533, spamassassin/trunk/spamd-apache2/lib/Mail/SpamAssassin/Spamd.pm
    spamassassin/branches/jm_re2c_hacks/spamd-apache2/lib/Mail/SpamAssassin/Spamd/Apache2/
      - copied from r453533, spamassassin/trunk/spamd-apache2/lib/Mail/SpamAssassin/Spamd/Apache2/
    spamassassin/branches/jm_re2c_hacks/spamd-apache2/lib/Mail/SpamAssassin/Spamd/Apache2.pm
      - copied unchanged from r453533, spamassassin/trunk/spamd-apache2/lib/Mail/SpamAssassin/Spamd/Apache2.pm
    spamassassin/branches/jm_re2c_hacks/spamd-apache2/lib/Mail/SpamAssassin/Spamd/Apache2/AclIP.pm
      - copied unchanged from r453533, spamassassin/trunk/spamd-apache2/lib/Mail/SpamAssassin/Spamd/Apache2/AclIP.pm
    spamassassin/branches/jm_re2c_hacks/spamd-apache2/lib/Mail/SpamAssassin/Spamd/Apache2/AclRFC1413.pm
      - copied unchanged from r453533, spamassassin/trunk/spamd-apache2/lib/Mail/SpamAssassin/Spamd/Apache2/AclRFC1413.pm
    spamassassin/branches/jm_re2c_hacks/spamd-apache2/lib/Mail/SpamAssassin/Spamd/Apache2/Config.pm
      - copied unchanged from r453533, spamassassin/trunk/spamd-apache2/lib/Mail/SpamAssassin/Spamd/Apache2/Config.pm
    spamassassin/branches/jm_re2c_hacks/spamd-apache2/lib/Mail/SpamAssassin/Spamd/Config.pm
      - copied unchanged from r453533, spamassassin/trunk/spamd-apache2/lib/Mail/SpamAssassin/Spamd/Config.pm
    spamassassin/branches/jm_re2c_hacks/spamd-apache2/t/
      - copied from r453533, spamassassin/trunk/spamd-apache2/t/
    spamassassin/branches/jm_re2c_hacks/spamd-apache2/t/30run.t
      - copied unchanged from r453533, spamassassin/trunk/spamd-apache2/t/30run.t
    spamassassin/branches/jm_re2c_hacks/spamd-apache2/t/TEST.PL
      - copied unchanged from r453533, spamassassin/trunk/spamd-apache2/t/TEST.PL
    spamassassin/branches/jm_re2c_hacks/spamd-apache2/t/certs/
      - copied from r453533, spamassassin/trunk/spamd-apache2/t/certs/
    spamassassin/branches/jm_re2c_hacks/spamd-apache2/t/certs/Makefile
      - copied unchanged from r453533, spamassassin/trunk/spamd-apache2/t/certs/Makefile
    spamassassin/branches/jm_re2c_hacks/spamd-apache2/t/certs/server.crt
      - copied unchanged from r453533, spamassassin/trunk/spamd-apache2/t/certs/server.crt
    spamassassin/branches/jm_re2c_hacks/spamd-apache2/t/certs/server.csr
      - copied unchanged from r453533, spamassassin/trunk/spamd-apache2/t/certs/server.csr
    spamassassin/branches/jm_re2c_hacks/spamd-apache2/t/certs/server.key
      - copied unchanged from r453533, spamassassin/trunk/spamd-apache2/t/certs/server.key
    spamassassin/branches/jm_re2c_hacks/spamd-apache2/t/conf/
      - copied from r453533, spamassassin/trunk/spamd-apache2/t/conf/
    spamassassin/branches/jm_re2c_hacks/spamd-apache2/t/conf/extra.last.conf.in
      - copied unchanged from r453533, spamassassin/trunk/spamd-apache2/t/conf/extra.last.conf.in
    spamassassin/branches/jm_re2c_hacks/t/cpp_comments_in_spamc.t
      - copied unchanged from r453533, spamassassin/trunk/t/cpp_comments_in_spamc.t
    spamassassin/branches/jm_re2c_hacks/t/spamd_kill_restart.t
      - copied unchanged from r453533, spamassassin/trunk/t/spamd_kill_restart.t
    spamassassin/branches/jm_re2c_hacks/t/spamd_kill_restart_rr.t
      - copied unchanged from r453533, spamassassin/trunk/t/spamd_kill_restart_rr.t
Modified:
    spamassassin/branches/jm_re2c_hacks/CREDITS
    spamassassin/branches/jm_re2c_hacks/INSTALL
    spamassassin/branches/jm_re2c_hacks/MANIFEST
    spamassassin/branches/jm_re2c_hacks/MANIFEST.SKIP
    spamassassin/branches/jm_re2c_hacks/Makefile.PL
    spamassassin/branches/jm_re2c_hacks/USAGE
    spamassassin/branches/jm_re2c_hacks/build/README
    spamassassin/branches/jm_re2c_hacks/build/automc/etc-apache-local-conf-httpd.conf
    spamassassin/branches/jm_re2c_hacks/build/automc/etc-init.d-freqsd
    spamassassin/branches/jm_re2c_hacks/build/automc/freqsd
    spamassassin/branches/jm_re2c_hacks/build/automc/freqsd-infrequent
    spamassassin/branches/jm_re2c_hacks/build/automc/run_nightly
    spamassassin/branches/jm_re2c_hacks/build/automc/run_preflight
    spamassassin/branches/jm_re2c_hacks/build/buildbot/bbmass_master.cfg
    spamassassin/branches/jm_re2c_hacks/build/buildbot/master.cfg
    spamassassin/branches/jm_re2c_hacks/build/describe-to-po-file
    spamassassin/branches/jm_re2c_hacks/build/mkrules
    spamassassin/branches/jm_re2c_hacks/build/preprocessor
    spamassassin/branches/jm_re2c_hacks/build/replace_license_blocks
    spamassassin/branches/jm_re2c_hacks/contrib/mbox-to-check
    spamassassin/branches/jm_re2c_hacks/contrib/run-corpora
    spamassassin/branches/jm_re2c_hacks/contrib/run-masses
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/AICache.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/ArchiveIterator.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/AsyncLoop.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/AutoWhitelist.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Bayes.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Bayes/CombineChi.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Bayes/CombineNaiveBayes.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/BayesStore.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/BayesStore/DBM.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/BayesStore/MySQL.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/BayesStore/PgSQL.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/BayesStore/SDBM.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/BayesStore/SQL.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Client.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Conf.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Conf/LDAP.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Conf/Parser.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Conf/SQL.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Constants.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/DBBasedAddrList.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Dns.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/DnsResolver.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/HTML.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Locales.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Locker.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Locker/Flock.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Locker/UnixNFSSafe.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Locker/Win32.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Logger.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Logger/File.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Logger/Stderr.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Logger/Syslog.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/MailingList.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Message.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Message/Metadata.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Message/Metadata/Received.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Message/Node.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/NetSet.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/PerMsgLearner.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/PerMsgStatus.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/PersistentAddrList.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Plugin.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Plugin/AWL.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Plugin/AccessDB.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Plugin/AntiVirus.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Plugin/AutoLearnThreshold.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Plugin/Bayes.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Plugin/BodyEval.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Plugin/DCC.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Plugin/DKIM.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Plugin/DNSEval.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Plugin/DomainKeys.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Plugin/HTMLEval.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Plugin/HTTPSMismatch.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Plugin/Hashcash.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Plugin/HeaderEval.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Plugin/MIMEEval.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Plugin/MIMEHeader.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Plugin/NetCache.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Plugin/Pyzor.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Plugin/Razor2.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Plugin/RelayCountry.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Plugin/RelayEval.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Plugin/ReplaceTags.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Plugin/SPF.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Plugin/Shortcircuit.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Plugin/SpamCop.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Plugin/Test.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Plugin/TextCat.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Plugin/URIDNSBL.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Plugin/URIDetail.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Plugin/URIEval.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Plugin/WLBLEval.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Plugin/WhiteListSubject.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/PluginHandler.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Reporter.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/SQLBasedAddrList.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/SpamdForkScaling.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/SubProcBackChannel.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Timeout.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Util.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Util/DependencyInfo.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Util/Progress.pm
    spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Util/RegistrarBoundaries.pm
    spamassassin/branches/jm_re2c_hacks/lm/build.pl
    spamassassin/branches/jm_re2c_hacks/masses/bayes-testing/graph-accuracy-curve
    spamassassin/branches/jm_re2c_hacks/masses/bayes-testing/graph-bayes-histogram
    spamassassin/branches/jm_re2c_hacks/masses/corpora/mk-corpus-link-farm
    spamassassin/branches/jm_re2c_hacks/masses/enable-all-evolved-rules
    spamassassin/branches/jm_re2c_hacks/masses/evolve_metarule/evolve_metarule.c
    spamassassin/branches/jm_re2c_hacks/masses/evolve_metarule/preproc.pl
    spamassassin/branches/jm_re2c_hacks/masses/extract-message-from-mbox
    spamassassin/branches/jm_re2c_hacks/masses/find-extremes
    spamassassin/branches/jm_re2c_hacks/masses/fp-fn-to-tcr
    spamassassin/branches/jm_re2c_hacks/masses/freqdiff
    spamassassin/branches/jm_re2c_hacks/masses/generate-translation
    spamassassin/branches/jm_re2c_hacks/masses/hit-frequencies
    spamassassin/branches/jm_re2c_hacks/masses/lint-rules-from-freqs
    spamassassin/branches/jm_re2c_hacks/masses/logdiff
    spamassassin/branches/jm_re2c_hacks/masses/logs-to-c
    spamassassin/branches/jm_re2c_hacks/masses/mass-check
    spamassassin/branches/jm_re2c_hacks/masses/mboxget
    spamassassin/branches/jm_re2c_hacks/masses/mk-roc-graphs
    spamassassin/branches/jm_re2c_hacks/masses/overlap
    spamassassin/branches/jm_re2c_hacks/masses/parse-rules-for-masses
    spamassassin/branches/jm_re2c_hacks/masses/perceptron.c
    spamassassin/branches/jm_re2c_hacks/masses/plugins/01_rule_timing.cf
    spamassassin/branches/jm_re2c_hacks/masses/plugins/HitFreqsRuleTiming.pm
    spamassassin/branches/jm_re2c_hacks/masses/remove-ids-from-mclog
    spamassassin/branches/jm_re2c_hacks/masses/rewrite-cf-with-new-scores
    spamassassin/branches/jm_re2c_hacks/masses/rule-qa/corpus-hourly
    spamassassin/branches/jm_re2c_hacks/masses/rule-qa/corpus-nightly
    spamassassin/branches/jm_re2c_hacks/masses/rule-qa/get-rulemetadata-for-revision
    spamassassin/branches/jm_re2c_hacks/masses/rule-qa/rule-hits-over-time
    spamassassin/branches/jm_re2c_hacks/masses/score-ranges-from-freqs
    spamassassin/branches/jm_re2c_hacks/masses/uniq-scores
    spamassassin/branches/jm_re2c_hacks/rules/10_default_prefs.cf
    spamassassin/branches/jm_re2c_hacks/rules/20_dnsbl_tests.cf
    spamassassin/branches/jm_re2c_hacks/rules/20_head_tests.cf
    spamassassin/branches/jm_re2c_hacks/rules/20_html_tests.cf
    spamassassin/branches/jm_re2c_hacks/rules/20_net_tests.cf
    spamassassin/branches/jm_re2c_hacks/rules/23_bayes.cf
    spamassassin/branches/jm_re2c_hacks/rules/25_accessdb.cf
    spamassassin/branches/jm_re2c_hacks/rules/25_antivirus.cf
    spamassassin/branches/jm_re2c_hacks/rules/25_dcc.cf
    spamassassin/branches/jm_re2c_hacks/rules/25_dkim.cf
    spamassassin/branches/jm_re2c_hacks/rules/25_domainkeys.cf
    spamassassin/branches/jm_re2c_hacks/rules/25_hashcash.cf
    spamassassin/branches/jm_re2c_hacks/rules/25_pyzor.cf
    spamassassin/branches/jm_re2c_hacks/rules/25_razor2.cf
    spamassassin/branches/jm_re2c_hacks/rules/25_replace.cf
    spamassassin/branches/jm_re2c_hacks/rules/25_spf.cf
    spamassassin/branches/jm_re2c_hacks/rules/25_textcat.cf
    spamassassin/branches/jm_re2c_hacks/rules/25_uribl.cf
    spamassassin/branches/jm_re2c_hacks/rules/60_awl.cf
    spamassassin/branches/jm_re2c_hacks/rules/60_shortcircuit.cf
    spamassassin/branches/jm_re2c_hacks/rules/60_whitelist.cf
    spamassassin/branches/jm_re2c_hacks/rules/60_whitelist_dkim.cf
    spamassassin/branches/jm_re2c_hacks/rules/60_whitelist_spf.cf
    spamassassin/branches/jm_re2c_hacks/rules/60_whitelist_subject.cf
    spamassassin/branches/jm_re2c_hacks/rules/active.list
    spamassassin/branches/jm_re2c_hacks/rules/regression_tests.cf
    spamassassin/branches/jm_re2c_hacks/rules/rule2xs.pre
    spamassassin/branches/jm_re2c_hacks/sa-learn.raw
    spamassassin/branches/jm_re2c_hacks/sa-update.raw
    spamassassin/branches/jm_re2c_hacks/spamassassin.raw
    spamassassin/branches/jm_re2c_hacks/spamc/configure
    spamassassin/branches/jm_re2c_hacks/spamc/configure.in
    spamassassin/branches/jm_re2c_hacks/spamc/configure.pl
    spamassassin/branches/jm_re2c_hacks/spamc/getopt.c
    spamassassin/branches/jm_re2c_hacks/spamc/getopt.h
    spamassassin/branches/jm_re2c_hacks/spamc/libspamc.c
    spamassassin/branches/jm_re2c_hacks/spamc/libspamc.h
    spamassassin/branches/jm_re2c_hacks/spamc/qmail-spamc.c
    spamassassin/branches/jm_re2c_hacks/spamc/spamc.c
    spamassassin/branches/jm_re2c_hacks/spamc/spamc.pod
    spamassassin/branches/jm_re2c_hacks/spamc/utils.c
    spamassassin/branches/jm_re2c_hacks/spamc/utils.h
    spamassassin/branches/jm_re2c_hacks/spamd/spamd.raw
    spamassassin/branches/jm_re2c_hacks/t/basic_lint.t
    spamassassin/branches/jm_re2c_hacks/t/data/01_test_rules.cf
    spamassassin/branches/jm_re2c_hacks/t/gtube.t
    spamassassin/branches/jm_re2c_hacks/t/lang_pl_tests.t
    spamassassin/branches/jm_re2c_hacks/t/lint_nocreate_prefs.t
    spamassassin/branches/jm_re2c_hacks/t/mimeheader.t
    spamassassin/branches/jm_re2c_hacks/t/mkrules.t
    spamassassin/branches/jm_re2c_hacks/t/prefs_include.t
    spamassassin/branches/jm_re2c_hacks/t/rcvd_parser.t
    spamassassin/branches/jm_re2c_hacks/t/reportheader.t
    spamassassin/branches/jm_re2c_hacks/t/reportheader_8bit.t
    spamassassin/branches/jm_re2c_hacks/t/spamd_hup.t
    spamassassin/branches/jm_re2c_hacks/tools/mboxsplit
    spamassassin/branches/jm_re2c_hacks/tools/sa-stats.pl
    spamassassin/branches/jm_re2c_hacks/tools/speedtest

Modified: spamassassin/branches/jm_re2c_hacks/CREDITS
URL: http://svn.apache.org/viewvc/spamassassin/branches/jm_re2c_hacks/CREDITS?view=diff&rev=453586&r1=453585&r2=453586
==============================================================================
--- spamassassin/branches/jm_re2c_hacks/CREDITS (original)
+++ spamassassin/branches/jm_re2c_hacks/CREDITS Fri Oct  6 05:46:56 2006
@@ -8,6 +8,7 @@
    - Duncan Findlay
    - Sidney Markowitz	http://www.amazon.com/o/registry/1WJ8J7403BLTS
    - Justin Mason	http://www.amazon.com/o/registry/1M0UDEXT6A3I7
+   - Daryl C. W. O'Shea
    - Michael Parker	http://www.amazon.com/o/registry/10BBAR2M03T6F
    - Daniel Quinlan	http://www.amazon.com/o/registry/3B3ST4DS9DTL0
    - Malte S. Stretz
@@ -20,7 +21,6 @@
    - Kevin A. McGrail
    - Robert Menschel
    - John Gardiner Myers
-   - Daryl C. W. O'Shea
    - Dale 'Doc' Schneider
    - Henry Stern
    
@@ -124,6 +124,10 @@
   - Henry Stern: perceptron score optimizer (replacing the GA).
 
   - Liam Widdowson, <liam(at)inodes.org>: shared-library use of spamc.
+
+  - Radoslaw Zielinski, <radek(at)pld-linux.org>:
+    Mail::SpamAssassin::Spamd::Apache2, a mod_perl2 module implementing spamd,
+    contributed as a Google Summer of Code project.
 
 
 Translators:

Modified: spamassassin/branches/jm_re2c_hacks/INSTALL
URL: http://svn.apache.org/viewvc/spamassassin/branches/jm_re2c_hacks/INSTALL?view=diff&rev=453586&r1=453585&r2=453586
==============================================================================
--- spamassassin/branches/jm_re2c_hacks/INSTALL (original)
+++ spamassassin/branches/jm_re2c_hacks/INSTALL Fri Oct  6 05:46:56 2006
@@ -354,6 +354,22 @@
     charsets and convert them into Unicode, you will need to install
     this module.
 
+
+  - Apache::Test (from CPAN)
+
+    If you plan to run the Apache2 version of spamd in the
+    "spamd-apache2" directory, you will need to install this
+    module.
+
+
+  - Apache 2 and mod_perl
+
+    If you plan to run the Apache2 version of spamd in the "spamd-apache2"
+    directory, you will need to ensure these are installed.
+
+    Ubuntu: sudo apt-get install apache2 libapache2-mod-perl2
+
+
 What Next?
 ----------
 

Modified: spamassassin/branches/jm_re2c_hacks/MANIFEST
URL: http://svn.apache.org/viewvc/spamassassin/branches/jm_re2c_hacks/MANIFEST?view=diff&rev=453586&r1=453585&r2=453586
==============================================================================
--- spamassassin/branches/jm_re2c_hacks/MANIFEST (original)
+++ spamassassin/branches/jm_re2c_hacks/MANIFEST Fri Oct  6 05:46:56 2006
@@ -20,6 +20,7 @@
 build/md5sum.pl
 build/preprocessor
 build/sha1sum.pl
+contrib/check_spamd
 contrib/mbox-to-check
 contrib/run-corpora
 contrib/run-masses
@@ -146,6 +147,7 @@
 masses/graphs/gnuplot-score-graph
 masses/hit-frequencies
 masses/lint-rules-from-freqs
+masses/logdiff
 masses/logs-to-c
 masses/mass-check
 masses/mass-check.cf
@@ -167,6 +169,7 @@
 masses/rule-qa/corpus-nightly
 masses/rule-qa/corpus-tagtime
 masses/rule-qa/corpus.example
+masses/rule-qa/get-rulemetadata-for-revision
 masses/rule-qa/markup-rules-file-with-freqs
 masses/rule-qa/post-bugs-for-retired-tests
 masses/rule-qa/rule-hits-over-time
@@ -222,6 +225,27 @@
 spamd/solaris-rc-script.sh
 spamd/spamd.raw
 spamd/suse-ancient-rc-script.sh
+spamd-apache2/bin/apache-spamd.pl
+spamd-apache2/bin/Bench-spamd.pl
+spamd-apache2/bin/Spamd
+spamd-apache2/lib/Mail/SpamAssassin/Spamd.pm
+spamd-apache2/lib/Mail/SpamAssassin/Spamd/Apache2.pm
+spamd-apache2/lib/Mail/SpamAssassin/Spamd/Apache2/AclIP.pm
+spamd-apache2/lib/Mail/SpamAssassin/Spamd/Apache2/AclRFC1413.pm
+spamd-apache2/lib/Mail/SpamAssassin/Spamd/Apache2/Config.pm
+spamd-apache2/lib/Mail/SpamAssassin/Spamd/Config.pm
+spamd-apache2/Makefile.PL
+spamd-apache2/MANIFEST
+spamd-apache2/MANIFEST.SKIP
+spamd-apache2/META.yml
+spamd-apache2/README.apache
+spamd-apache2/t/30run.t
+spamd-apache2/t/certs/Makefile
+spamd-apache2/t/certs/server.crt
+spamd-apache2/t/certs/server.csr
+spamd-apache2/t/certs/server.key
+spamd-apache2/t/conf/extra.last.conf.in
+spamd-apache2/t/TEST.PL
 sql/README
 sql/README.awl
 sql/README.bayes
@@ -245,6 +269,7 @@
 t/cidrs.t
 t/config.dist
 t/config_errs.t
+t/cpp_comments_in_spamc.t
 t/data/01_test_rules.cf
 t/data/etc/hello.txt
 t/data/etc/testhost.cert
@@ -459,13 +484,12 @@
 rules/60_awl.cf
 rules/60_shortcircuit.cf
 rules/60_whitelist.cf
+rules/60_whitelist_dk.cf
 rules/60_whitelist_dkim.cf
 rules/60_whitelist_spf.cf
 rules/60_whitelist_subject.cf
 rules/70_sandbox.cf
 rules/72_active.cf
-rules/sandbox-felicity.pm
-rules/sandbox-hstern.pm
 rules/STATISTICS-set0.txt
 rules/STATISTICS-set1.txt
 rules/STATISTICS-set2.txt
@@ -500,3 +524,5 @@
 lib/Mail/SpamAssassin/Plugin/BodyRuleBaseExtractor.pm
 lib/Mail/SpamAssassin/Plugin/RabinKarpBody.pm
 lib/Mail/SpamAssassin/Plugin/Rule2XSBody.pm
+t/spamd_kill_restart.t
+t/spamd_kill_restart_rr.t

Modified: spamassassin/branches/jm_re2c_hacks/MANIFEST.SKIP
URL: http://svn.apache.org/viewvc/spamassassin/branches/jm_re2c_hacks/MANIFEST.SKIP?view=diff&rev=453586&r1=453585&r2=453586
==============================================================================
--- spamassassin/branches/jm_re2c_hacks/MANIFEST.SKIP (original)
+++ spamassassin/branches/jm_re2c_hacks/MANIFEST.SKIP Fri Oct  6 05:46:56 2006
@@ -118,3 +118,12 @@
 ^build/buildbot/
 ^hack/
 ^patches/
+(^|/)\.
+~$
+/logs/
+/t/logs/
+\.conf$
+\.pl$
+\bCVS\b
+/t/TEST$
+

Modified: spamassassin/branches/jm_re2c_hacks/Makefile.PL
URL: http://svn.apache.org/viewvc/spamassassin/branches/jm_re2c_hacks/Makefile.PL?view=diff&rev=453586&r1=453585&r2=453586
==============================================================================
--- spamassassin/branches/jm_re2c_hacks/Makefile.PL (original)
+++ spamassassin/branches/jm_re2c_hacks/Makefile.PL Fri Oct  6 05:46:56 2006
@@ -284,6 +284,10 @@
     # asking all questions twice after a 'make dist*'.
     'NORECURS' => 1,
 
+    # bug 5074: perl 5.6.1 (with ExtUtils::MakeMaker 5.45) attempts to
+    # recurse anyway unless this is explicitly specified
+    'DIR' => [ ],
+
     # Don't add META.yml to the MANIFEST for god's sake!
     'NO_META' => 1,
 );

Modified: spamassassin/branches/jm_re2c_hacks/USAGE
URL: http://svn.apache.org/viewvc/spamassassin/branches/jm_re2c_hacks/USAGE?view=diff&rev=453586&r1=453585&r2=453586
==============================================================================
--- spamassassin/branches/jm_re2c_hacks/USAGE (original)
+++ spamassassin/branches/jm_re2c_hacks/USAGE Fri Oct  6 05:46:56 2006
@@ -85,7 +85,8 @@
 
   - take a look at the notes on the Wiki website, currently at
     <http://wiki.apache.org/spamassassin/UsingSiteWide>.  You will probably
-    want to use 'spamd' (see below).
+    want to use 'spamd' (see below).   You may want to investigate the
+    new Apache mod_perl module, in the 'spamd-apache2' directory, too.
 
   - *PLEASE* let your users know you've installed it, and how to turn it
     off!   This is our #1 tech support query, and the users are usually
@@ -181,6 +182,15 @@
     large volumes of mail through SpamAssassin without having to
     fork/exec a perl interpreter for each message. Take a look in the
     'spamd' and 'spamc' directories for more details.
+
+
+  - The distribution also includes 'spamd-apache2', a mod_perl module
+    allowing the Apache HTTP server to be used as a platform for a
+    daemonized SpamAssassin, in an upwardly-compatible fashion from
+    'spamd'.  If you don't require some of the spamd features it does not
+    implement (such as switching UIDs to read per-user configuration from
+    user home directories), this may be much faster than spamd.  Take a
+    look at the 'spamd-apache2' directory for details.
 
 
   - spamc can now be built as a shared library for use with milters or

Modified: spamassassin/branches/jm_re2c_hacks/build/README
URL: http://svn.apache.org/viewvc/spamassassin/branches/jm_re2c_hacks/build/README?view=diff&rev=453586&r1=453585&r2=453586
==============================================================================
--- spamassassin/branches/jm_re2c_hacks/build/README (original)
+++ spamassassin/branches/jm_re2c_hacks/build/README Fri Oct  6 05:46:56 2006
@@ -244,7 +244,7 @@
 
         cd /www/spamassassin.apache.org
         svn up
-        svn delete full/3.1.x
+        svn delete --force full/3.1.x
         svn commit -m "removing old dist tree"
 
         cd [checkedoutdir]
@@ -252,6 +252,7 @@
 
         cd /www/spamassassin.apache.org
         svn add full/3.1.x
+        svn commit -m "updating new dist tree" full
         
 - and check the entire website into SVN (see bug 4998 for reasons why).
   Note that you may need to resolve conflicts and ensure the contents of

Modified: spamassassin/branches/jm_re2c_hacks/build/automc/etc-apache-local-conf-httpd.conf
URL: http://svn.apache.org/viewvc/spamassassin/branches/jm_re2c_hacks/build/automc/etc-apache-local-conf-httpd.conf?view=diff&rev=453586&r1=453585&r2=453586
==============================================================================
--- spamassassin/branches/jm_re2c_hacks/build/automc/etc-apache-local-conf-httpd.conf (original)
+++ spamassassin/branches/jm_re2c_hacks/build/automc/etc-apache-local-conf-httpd.conf Fri Oct  6 05:46:56 2006
@@ -67,7 +67,8 @@
 # ---------------------------------------------------------------------------
 
 <VirtualHost *:80>
-  ServerName bbmass.spamassassin.org
+  ServerName bbmass-trunk.spamassassin.org
+  ServerAlias bbmass.spamassassin.org
   <Directory /var/www/bbmass.spamassassin.org>
     options indexes SymLinksIfOwnerMatch
     AllowOverride indexes
@@ -97,7 +98,8 @@
 # ---------------------------------------------------------------------------
 
 <VirtualHost *:80>
-  ServerName ruleqa.spamassassin.org
+  ServerName ruleqa-trunk.spamassassin.org
+  ServerAlias ruleqa.spamassassin.org
   <Directory /var/www/ruleqa.spamassassin.org>
     options indexes SymLinksIfOwnerMatch
     AllowOverride indexes
@@ -128,6 +130,73 @@
   RewriteRule ^/(.*) /ruleqa.cgi/$1 [PT,L]
 
   ScriptAlias /ruleqa.cgi /home/automc/svn/spamassassin/masses/rule-qa/automc/ruleqa.cgi
+
+</VirtualHost>
+
+# ---------------------------------------------------------------------------
+
+# <VirtualHost *:80>
+  # ServerName bbmass-stable.spamassassin.org
+  # <Directory /var/www/bbmass-stable.spamassassin.org>
+    # options indexes SymLinksIfOwnerMatch
+    # AllowOverride indexes
+  # </Directory>
+  # DocumentRoot /var/www/bbmass-stable.spamassassin.org
+  # ServerAdmin webmaster@spamassassin.org
+  # userdir disabled
+#
+  # RewriteEngine On
+#
+  # # index: straight through
+  # RewriteRule ^/$ http://127.0.0.1:8011/ [P]
+#
+  # # anything else; proxy, if it doesn't exist as a file/dir
+  # RewriteCond /var/www/bbmass-stable.spamassassin.org/%{REQUEST_FILENAME} !-d
+  # RewriteCond /var/www/bbmass-stable.spamassassin.org/%{REQUEST_FILENAME} !-f
+  # RewriteRule ^/(.*) http://127.0.0.1:8011/$1 [P]
+#
+  # ProxyRequests Off
+  # <Proxy *>
+  # Order deny,allow
+  # Allow from all
+  # </Proxy>
+#
+# </VirtualHost>
+
+# ---------------------------------------------------------------------------
+
+<VirtualHost *:80>
+  ServerName ruleqa-stable.spamassassin.org
+  <Directory /var/www/ruleqa-stable.spamassassin.org>
+    options indexes SymLinksIfOwnerMatch
+    AllowOverride indexes
+  </Directory>
+  DocumentRoot /var/www/ruleqa-stable.spamassassin.org
+  ServerAdmin webmaster@spamassassin.org
+  userdir disabled
+
+  # debugging:
+  # RewriteLogLevel 9
+  # RewriteLog /var/apache2/logs/rewrite_log
+
+  # "%2F" is used to grep rule subsets, allow it
+  AllowEncodedSlashes On
+
+  # strip out known-local files and loops; all else goes to the ruleqa code
+  RewriteEngine On
+
+  # index: straight through
+  RewriteRule ^/$ /ruleqa.cgi [PT,L]
+
+  # satisfy local files
+  RewriteCond /var/www/ruleqa-stable.spamassassin.org/%{REQUEST_FILENAME} !-d
+  RewriteCond /var/www/ruleqa-stable.spamassassin.org/%{REQUEST_FILENAME} !-f
+
+  # otherwise the CGI
+  RewriteCond %{REQUEST_URI} !^/ruleqa\.cgi
+  RewriteRule ^/(.*) /ruleqa.cgi/$1 [PT,L]
+
+  ScriptAlias /ruleqa.cgi /home/automc-stable/svn/spamassassin/masses/rule-qa/automc/ruleqa.cgi
 
 </VirtualHost>
 

Modified: spamassassin/branches/jm_re2c_hacks/build/automc/etc-init.d-freqsd
URL: http://svn.apache.org/viewvc/spamassassin/branches/jm_re2c_hacks/build/automc/etc-init.d-freqsd?view=diff&rev=453586&r1=453585&r2=453586
==============================================================================
--- spamassassin/branches/jm_re2c_hacks/build/automc/etc-init.d-freqsd (original)
+++ spamassassin/branches/jm_re2c_hacks/build/automc/etc-init.d-freqsd Fri Oct  6 05:46:56 2006
@@ -28,8 +28,8 @@
     cd /home/automc/svn/spamassassin
     su automc -c "./build/automc/freqsd -pidfile /home/automc/freqsd/pid -kill"
 
-    sleep 1
-    pkill -15 -f automc/freqsd            # just in case
+    # sleep 1
+    # pkill -15 -f automc/freqsd            # just in case
     sleep 1
     pkill -15 -u automc
 }

Modified: spamassassin/branches/jm_re2c_hacks/build/automc/freqsd
URL: http://svn.apache.org/viewvc/spamassassin/branches/jm_re2c_hacks/build/automc/freqsd?view=diff&rev=453586&r1=453585&r2=453586
==============================================================================
--- spamassassin/branches/jm_re2c_hacks/build/automc/freqsd (original)
+++ spamassassin/branches/jm_re2c_hacks/build/automc/freqsd Fri Oct  6 05:46:56 2006
@@ -24,7 +24,6 @@
 my $dq_slow = IPC::DirQueue->new({ dir => "/home/automc/freqsd/dq_slow" });
 $pidfile ||= "/home/automc/freqsd/pid";
 
-# $ENV{HOME} = '/home/bbmass';
 umask(002);
 
 # ---------------------------------------------------------------------------

Modified: spamassassin/branches/jm_re2c_hacks/build/automc/freqsd-infrequent
URL: http://svn.apache.org/viewvc/spamassassin/branches/jm_re2c_hacks/build/automc/freqsd-infrequent?view=diff&rev=453586&r1=453585&r2=453586
==============================================================================
--- spamassassin/branches/jm_re2c_hacks/build/automc/freqsd-infrequent (original)
+++ spamassassin/branches/jm_re2c_hacks/build/automc/freqsd-infrequent Fri Oct  6 05:46:56 2006
@@ -1,23 +1,9 @@
 #!/bin/sh
 
-# recreate the corpus link-farm; log results to a web-visible file
-
-# BBMHOME=/home/bbmass
-# 
-# (
-# 
-  # # create links to the user-submitted corpora in the right
-  # # volumes etc.
-  # date
-  # ./build/automc/populate_cor
-  # date
-# 
-  # # permit mass-check processes to create files in these dirs,
-  # # so they can use the ArchiveIterator cache code
-  # cd $BBMHOME/tmpfs/cor
-  # find . -type d | xargs chmod 1777
-# 
-# ) 2>&1 | tee \
-    # /var/www/buildbot.spamassassin.org/bbmass/corpus_makeup.txt
-    # # note: needs to be customised for each site
+BBMHOME=/home/bbmass
 
+# clean up our temporary dir
+cd $BBMHOME/tmp
+find . -mtime +7 | sort -r > o
+xargs rm -f < o
+xargs rmdir < o

Modified: spamassassin/branches/jm_re2c_hacks/build/automc/run_nightly
URL: http://svn.apache.org/viewvc/spamassassin/branches/jm_re2c_hacks/build/automc/run_nightly?view=diff&rev=453586&r1=453585&r2=453586
==============================================================================
--- spamassassin/branches/jm_re2c_hacks/build/automc/run_nightly (original)
+++ spamassassin/branches/jm_re2c_hacks/build/automc/run_nightly Fri Oct  6 05:46:56 2006
@@ -7,18 +7,21 @@
 
 # add usernames who you want to do nightlies for here:
 nightly_users="
-  zmi
   doc
   jm
+  fredt
+  zmi
 "
 
 # and where the $HOMEs are:
 nightly_trees="/home/bbmass/mc-nightly"
 
 
-# ensure we're running after 0900 UTC; complex due to daylight savings.
-# If we're running in the 08xx UTC hour-space, sleep for 1 hour; when
-# we wake, we will be in 09xx.
+# Ensure we're running after 0900 UTC; complex due to daylight savings. If
+# we're running in the 08xx UTC hour-space, sleep for 1 hour; when we wake, we
+# will be in 09xx.  By doing it this way, we'll work both for (a) mass-checks
+# set to run from cron at 09xx (cron doesn't understand DST/UTC issues) and (b)
+# mass-checks starting at other times that != 09xx.
 (
   TIME="%e,%U,%S"; TZ=UTC; export TIME TZ
   if date | egrep '^... ... .. 08:'; then
@@ -49,19 +52,8 @@
 
     # use bash to work around Solaris breakage
     nice bash $dir/svn/masses/rule-qa/corpus-nightly
-  )
 
-done
+  ) 2>&1 | tee "$dir/corpus-nightly.log"
 
-# cycle the logfiles; keep 6 (3 days worth I think)
-# (
-  # cd /var/www/buildbot.spamassassin.org/bbmass
-  # rm nightly_masschecks_6.txt
-  # mv nightly_masschecks_5.txt  nightly_masschecks_6.txt
-  # mv nightly_masschecks_4.txt  nightly_masschecks_5.txt
-  # mv nightly_masschecks_3.txt  nightly_masschecks_4.txt
-  # mv nightly_masschecks_2.txt  nightly_masschecks_3.txt
-  # mv nightly_masschecks_1.txt  nightly_masschecks_2.txt
-  # mv nightly_masschecks.txt    nightly_masschecks_1.txt
-# )
+done
 

Modified: spamassassin/branches/jm_re2c_hacks/build/automc/run_preflight
URL: http://svn.apache.org/viewvc/spamassassin/branches/jm_re2c_hacks/build/automc/run_preflight?view=diff&rev=453586&r1=453585&r2=453586
==============================================================================
--- spamassassin/branches/jm_re2c_hacks/build/automc/run_preflight (original)
+++ spamassassin/branches/jm_re2c_hacks/build/automc/run_preflight Fri Oct  6 05:46:56 2006
@@ -40,35 +40,13 @@
 
 unlink ("ham.log", "spam.log");
 
-# just the sandbox rules, sandbox plugins, the timing plugin,
-# and the default system-wide plugins (so DNS evals can work)
+# change of plan: mass-check the entire ruleset
 #
 system ("rm -rf tstrules");
 run "mkdir tstrules";
-run "cp ../rules/*.pre tstrules";
-run "cp ../rules/*.pm tstrules";
-run "cp plugins/*.* tstrules";
-
-# don't just copy; instead, transcribe while dropping score and describe lines
-# (to avoid '[26260] warn: config: warning: score set for non-existent rule
-# HTML_SHORT_LENGTH').
-## run "cp ../rules/70_sandbox.cf tstrules";
-open IN, "<../rules/70_sandbox.cf" or die "cannot read ../rules/sandbox.cf";
-open OUT, ">tstrules/70_sandbox.cf" or die "cannot write tstrules/70_sandbox.cf";
-
-while (<IN>) {
-  s/^\s+//;
-  next if /^(?:
-    score|
-    describe|
-    lang
-    )/x;
 
-  print OUT;
-}
-
-close IN or die "close failed!";
-close OUT or die "close failed!";
+run "cp ../rules/*.* tstrules";
+run "cp plugins/*.* tstrules";
 
 # well, ok just those, and anything that's been mailed-in
 # 
@@ -89,6 +67,20 @@
 } else {
   print "lint passed.\n";
 }
+
+# create the user_prefs file for the mass-check.  Settings: turn off Bayes;
+# turn off the auto-whitelist.
+
+mkdir "spamassassin";
+open PREFS, ">spamassassin/user_prefs";
+print PREFS q{
+
+  use_bayes 0
+  use_auto_whitelist 0
+
+};
+close PREFS or die "cannot create 'spamassassin/user_prefs' file: $! $@";
+
 
 # notes on this mass-check command:
 #

Modified: spamassassin/branches/jm_re2c_hacks/build/buildbot/bbmass_master.cfg
URL: http://svn.apache.org/viewvc/spamassassin/branches/jm_re2c_hacks/build/buildbot/bbmass_master.cfg?view=diff&rev=453586&r1=453585&r2=453586
==============================================================================
--- spamassassin/branches/jm_re2c_hacks/build/buildbot/bbmass_master.cfg (original)
+++ spamassassin/branches/jm_re2c_hacks/build/buildbot/bbmass_master.cfg Fri Oct  6 05:46:56 2006
@@ -109,7 +109,7 @@
 c['status'].append(html.Waterfall(http_port=8011))
 
 from buildbot.status import mail
-c['status'].append(mail.MailNotifier(fromaddr="buildbot@spamassassin.org",
+c['status'].append(mail.MailNotifier(fromaddr="buildbot@spamassassin.zones.apache.org",
                        extraRecipients=["commits@spamassassin.apache.org"],
                        mode="problem",
                         sendToInterestedUsers=True))

Modified: spamassassin/branches/jm_re2c_hacks/build/buildbot/master.cfg
URL: http://svn.apache.org/viewvc/spamassassin/branches/jm_re2c_hacks/build/buildbot/master.cfg?view=diff&rev=453586&r1=453585&r2=453586
==============================================================================
--- spamassassin/branches/jm_re2c_hacks/build/buildbot/master.cfg (original)
+++ spamassassin/branches/jm_re2c_hacks/build/buildbot/master.cfg Fri Oct  6 05:46:56 2006
@@ -272,7 +272,7 @@
 c['status'].append(html.Waterfall(http_port=8010))
 
 from buildbot.status import mail
-c['status'].append(mail.MailNotifier(fromaddr="buildbot@bugzilla.spamassassin.org",
+c['status'].append(mail.MailNotifier(fromaddr="buildbot@spamassassin.zones.apache.org",
                         extraRecipients=["commits@spamassassin.apache.org"],
                         mode="problem",
                         sendToInterestedUsers=True))

Modified: spamassassin/branches/jm_re2c_hacks/build/describe-to-po-file
URL: http://svn.apache.org/viewvc/spamassassin/branches/jm_re2c_hacks/build/describe-to-po-file?view=diff&rev=453586&r1=453585&r2=453586
==============================================================================
--- spamassassin/branches/jm_re2c_hacks/build/describe-to-po-file (original)
+++ spamassassin/branches/jm_re2c_hacks/build/describe-to-po-file Fri Oct  6 05:46:56 2006
@@ -64,14 +64,15 @@
 # SpamAssassin PO file
 #
 # <@LICENSE>
-# Copyright 2004 Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to you under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at:
+# 
 #     http://www.apache.org/licenses/LICENSE-2.0
-#
+# 
 # Unless required by applicable law or agreed to in writing, software
 # distributed under the License is distributed on an "AS IS" BASIS,
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

Modified: spamassassin/branches/jm_re2c_hacks/build/mkrules
URL: http://svn.apache.org/viewvc/spamassassin/branches/jm_re2c_hacks/build/mkrules?view=diff&rev=453586&r1=453585&r2=453586
==============================================================================
--- spamassassin/branches/jm_re2c_hacks/build/mkrules (original)
+++ spamassassin/branches/jm_re2c_hacks/build/mkrules Fri Oct  6 05:46:56 2006
@@ -3,14 +3,15 @@
 # build/mkrules -- compile the SpamAssassin rules into installable form
 #
 # <@LICENSE>
-# Copyright 2004 Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to you under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at:
+# 
 #     http://www.apache.org/licenses/LICENSE-2.0
-#
+# 
 # Unless required by applicable law or agreed to in writing, software
 # distributed under the License is distributed on an "AS IS" BASIS,
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -95,6 +96,8 @@
 # source files that need compilation, and their targets
 my $needs_compile = { };
 my $current_src;
+my $newest_src_mtime = 0;
+my $newest_out_mtime = 0;
 
 my $default_file_header = join('', <DATA>);
 
@@ -110,6 +113,20 @@
         }, $src);
 }
 
+# get mtimes of output files; we can be sure that all
+# output is under the "opt_out" dir, so recurse there
+#File::Find::find ({
+#        wanted => \&out_wanted,
+#        no_chdir => 1
+#      }, $opt_out);
+
+#if ($newest_src_mtime && $newest_out_mtime
+#    && $newest_src_mtime < $newest_out_mtime)
+#{
+#  print "mkrules: no rules updated\n";
+#  exit 0;
+#}
+
 my $rules = { };
 
 my $file_manifest = { };
@@ -157,7 +174,13 @@
     my $text = join("\n", "file start $file", $output_file_text->{$file}, "file end $file");
     if (lint_rule_text($text) != 0) {
       warn "\nERROR: LINT FAILED, suppressing output: $file\n\n";
-      delete $output_file_text->{$file};
+
+      # don't suppress entirely, otherwise 'make distcheck'/'disttest'
+      # will fail since the MANIFEST-listed output files will be 
+      # empty.
+
+      # delete $output_file_text->{$file};
+      $output_file_text->{$file} = '';
     }
   }
 }
@@ -213,6 +236,11 @@
   my $t;
   $t = "$opt_out/$filename";
 
+  my @st = stat $path;
+  if ($st[9] && $st[9] > $newest_src_mtime) {
+    $newest_src_mtime = $st[9];
+  }
+
   $needs_compile->{$f} = {
           f => $f,
           t => $t,
@@ -221,6 +249,17 @@
         };
 }
 
+sub out_wanted {
+  my $path = $File::Find::name;
+  return unless (-f $path);
+  return unless ($path =~ /\.cf$/i);
+
+  my @st = stat $path;
+  if ($st[9] && $st[9] > $newest_out_mtime) {
+    $newest_out_mtime = $st[9];
+  }
+}
+
 # compile all the source files found by the wanted() sub, in sorted
 # order so that the order of precedence makes sense.
 sub read_all_rules {
@@ -412,14 +451,26 @@
     elsif (/^loadplugin\s*(\S+)\b/) {
       my $name = 'loadplugin_'.$1;
 
+      unless ($rules->{$name}) {
+        $rules->{$name} = rule_entry_create();
+        $rules->{$name}->{issandbox} = $issandbox;
+        $rules->{$name}->{iscommand} = 1;
+      }
+
       if (/^loadplugin\s*\S+\s+(\S+)/) {
         my $fname = $1;
         my $fpath = dirname($f)."/".$fname;
+
         if (!-f $fpath) {
           warn "$f: WARNING: plugin code file '$fpath' not found, line ignored: $orig";
           next;
         }
 
+        if ($fpath =~ /sandbox/i) {
+          # Since this is a sandbox plugin, force its output to the sandbox area.
+          $rules->{$name}->{sandbox_plugin} = 1;
+        }
+
         # If a 'loadplugin' line is found, and the plugin .pm is not listed in
         # the MANIFEST file, this will mean that the .pm will not be copied
         # during "make dist".  This causes failures during "make disttest",
@@ -439,12 +490,6 @@
         }
       }
 
-      unless ($rules->{$name}) {
-        $rules->{$name} = rule_entry_create();
-        $rules->{$name}->{issandbox} = $issandbox;
-        $rules->{$name}->{iscommand} = 1;
-      }
-
       $rules->{$name}->{text} .= $orig;
       unshift (@$rule_order, $name);
     }
@@ -532,30 +577,42 @@
       $is_active++;
     }
 
-    $output_files->{$pubfile} = {
-      header => $default_file_header
-    };
-
     # fix up any rule renamings we were supposed to do
     sed_renamed_rule_names(\$text);
 
     my $cond = $rules->{$name}->{cond};
-    if ($cond) {
-      $rules->{$name}->{output_text} = "\n".$cond.$text."endif\n";
+    my $pluginclass = $rules->{$name}->{ifplugin};
+    if ($cond)
+    {
+      my $ifplugin_text_name = "loadplugin_".($pluginclass || "");
 
-      # also, if the rule is active, ensure its "loadplugin" line
-      # is copied to the active output file, too
-      my $pluginclass = $rules->{$name}->{ifplugin};
-      if ($is_active && $pluginclass) {
-        my $ifplugin_text_name = "loadplugin_".$pluginclass;
+      if ($pluginclass && $rules->{$ifplugin_text_name})
+      {
+        # if the plugin is a sandbox plugin, ensure it's not
+        # sent to the active file
+        if ($rules->{$ifplugin_text_name}->{sandbox_plugin}) {
+          $pubfile = $opt_out.'/'.$opt_sandboxout;
+          $is_active = 0;
+        }
+
+        # either way, ensure the "loadplugin" line, if there is one,
+        # goes to the same file
         $rules->{$ifplugin_text_name}->{output_file} = $pubfile;
       }
 
+      $rules->{$name}->{output_text} = "\n".$cond.$text."endif\n";
+
     } else {
       $rules->{$name}->{output_text} = $text;
     }
+
+    # note the target file
     $rules->{$name}->{output_file} = $pubfile;
 
+    $output_files->{$pubfile} = {
+      header => $default_file_header
+    };
+
     if ($is_active) {
       $copied_active++;
     } else {
@@ -772,6 +829,10 @@
     }
     else {
       print "$pubfile: no rules promoted\n";
+
+      # create an empty file anyway to satisfy MANIFEST
+      open (OUT, ">".$pubfile) or die "cannot write to output file '$pubfile'";
+      close OUT or die "cannot close output file '$pubfile'";
     }
   }
 }
@@ -883,14 +944,15 @@
 # See 'perldoc Mail::SpamAssassin::Conf' for details.
 #
 # <@LICENSE>
-# Copyright 2004 Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to you under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at:
+# 
 #     http://www.apache.org/licenses/LICENSE-2.0
-#
+# 
 # Unless required by applicable law or agreed to in writing, software
 # distributed under the License is distributed on an "AS IS" BASIS,
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

Modified: spamassassin/branches/jm_re2c_hacks/build/preprocessor
URL: http://svn.apache.org/viewvc/spamassassin/branches/jm_re2c_hacks/build/preprocessor?view=diff&rev=453586&r1=453585&r2=453586
==============================================================================
--- spamassassin/branches/jm_re2c_hacks/build/preprocessor (original)
+++ spamassassin/branches/jm_re2c_hacks/build/preprocessor Fri Oct  6 05:46:56 2006
@@ -1,13 +1,14 @@
 #!/usr/bin/perl
 # <@LICENSE>
-# Copyright 2004 Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to you under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at:
+# 
 #     http://www.apache.org/licenses/LICENSE-2.0
-#
+# 
 # Unless required by applicable law or agreed to in writing, software
 # distributed under the License is distributed on an "AS IS" BASIS,
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

Modified: spamassassin/branches/jm_re2c_hacks/build/replace_license_blocks
URL: http://svn.apache.org/viewvc/spamassassin/branches/jm_re2c_hacks/build/replace_license_blocks?view=diff&rev=453586&r1=453585&r2=453586
==============================================================================
--- spamassassin/branches/jm_re2c_hacks/build/replace_license_blocks (original)
+++ spamassassin/branches/jm_re2c_hacks/build/replace_license_blocks Fri Oct  6 05:46:56 2006
@@ -1,4 +1,4 @@
-#!/usr/bin/perl -i.bak
+#!/usr/bin/perl -i
 #
 # build/replace_license_blocks file ...
 #
@@ -10,6 +10,12 @@
 #     * <@LICENSE>
 #
 # will result in all lines of the license text being prefixed with "    * ".
+#
+# do something like the following:
+# - create a "newlicense" file with the license text as appropriate
+# - run something like:
+#   grep -rl @LICENSE * | egrep -v 'replace_license_blocks|\.svn' | xargs build/replace_license_blocks
+#
 
 # read the new license text; die if not available
 open (IN, "<newlicense") or die "cannot read 'newlicense'";
@@ -43,9 +49,14 @@
 
 sub license_with_prefix {
   my $prefix = shift;
+
+  # if the prefix is "/*" replace with " *"
+  my $orig = $prefix;
+  $prefix =~ s@^(\s*)/\*(.*)$@$1 *$2@;
+
   my $text = $license; $text =~ s/^/$prefix/gm;
 
-  return $prefix."<\...@LICENSE>\n".
+  return $orig."<\...@LICENSE>\n".
     $text.
     $prefix."</\...@LICENSE>\n";
 }

Modified: spamassassin/branches/jm_re2c_hacks/contrib/mbox-to-check
URL: http://svn.apache.org/viewvc/spamassassin/branches/jm_re2c_hacks/contrib/mbox-to-check?view=diff&rev=453586&r1=453585&r2=453586
==============================================================================
--- spamassassin/branches/jm_re2c_hacks/contrib/mbox-to-check (original)
+++ spamassassin/branches/jm_re2c_hacks/contrib/mbox-to-check Fri Oct  6 05:46:56 2006
@@ -2,14 +2,15 @@
 use strict;
 
 # <@LICENSE>
-# Copyright 2004 Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to you under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at:
+# 
 #     http://www.apache.org/licenses/LICENSE-2.0
-#
+# 
 # Unless required by applicable law or agreed to in writing, software
 # distributed under the License is distributed on an "AS IS" BASIS,
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

Modified: spamassassin/branches/jm_re2c_hacks/contrib/run-corpora
URL: http://svn.apache.org/viewvc/spamassassin/branches/jm_re2c_hacks/contrib/run-corpora?view=diff&rev=453586&r1=453585&r2=453586
==============================================================================
--- spamassassin/branches/jm_re2c_hacks/contrib/run-corpora (original)
+++ spamassassin/branches/jm_re2c_hacks/contrib/run-corpora Fri Oct  6 05:46:56 2006
@@ -1,14 +1,15 @@
 #!/bin/sh
 
 # <@LICENSE>
-# Copyright 2004 Apache Software Foundation
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to you under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at:
 # 
 #     http://www.apache.org/licenses/LICENSE-2.0
-#
+# 
 # Unless required by applicable law or agreed to in writing, software
 # distributed under the License is distributed on an "AS IS" BASIS,
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

Modified: spamassassin/branches/jm_re2c_hacks/contrib/run-masses
URL: http://svn.apache.org/viewvc/spamassassin/branches/jm_re2c_hacks/contrib/run-masses?view=diff&rev=453586&r1=453585&r2=453586
==============================================================================
--- spamassassin/branches/jm_re2c_hacks/contrib/run-masses (original)
+++ spamassassin/branches/jm_re2c_hacks/contrib/run-masses Fri Oct  6 05:46:56 2006
@@ -1,14 +1,15 @@
 #!/bin/sh
 
 # <@LICENSE>
-# Copyright 2004 Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to you under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at:
+# 
 #     http://www.apache.org/licenses/LICENSE-2.0
-#
+# 
 # Unless required by applicable law or agreed to in writing, software
 # distributed under the License is distributed on an "AS IS" BASIS,
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

Modified: spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin.pm
URL: http://svn.apache.org/viewvc/spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin.pm?view=diff&rev=453586&r1=453585&r2=453586
==============================================================================
--- spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin.pm (original)
+++ spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin.pm Fri Oct  6 05:46:56 2006
@@ -1,9 +1,10 @@
 # <@LICENSE>
-# Copyright 2004 Apache Software Foundation
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to you under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at:
 # 
 #     http://www.apache.org/licenses/LICENSE-2.0
 # 
@@ -212,6 +213,11 @@
 override the settings for C<rules_filename>, C<site_rules_filename>,
 and C<userprefs_filename>.
 
+=item post_config_text
+
+Similar to C<config_text>, this text is placed after config_text to allow an
+override of config files.
+
 =item force_ipv4
 
 If set to 1, DNS tests will not attempt to use IPv6. Use if the existing tests
@@ -395,6 +401,12 @@
   my($self, $message, $parsenow) = @_;
   $self->init(1);
   my $msg = Mail::SpamAssassin::Message->new({message=>$message, parsenow=>$parsenow, normalize=>$self->{conf}->{normalize_charset}});
+
+  # bug 5069: The goal here is to get rendering plugins to do things
+  # like OCR, convert doc and pdf to text, etc, though it could be anything
+  # that wants to process the message after it's been parsed.
+  $self->call_plugins("post_message_parse", { message => $msg });
+
   return $msg;
 }
 
@@ -1291,6 +1303,10 @@
 
   $self->{dont_copy_prefs} = $olddcp;       # revert back to previous
 
+  # bug 5048: override settings to ensure a faster lint
+  $self->{'conf'}->{'use_auto_whitelist'} = 0;
+  $self->{'conf'}->{'bayes_auto_learn'} = 0;
+
   my $mail = $self->parse(\@testmsg, 1);
   my $status = Mail::SpamAssassin::PerMsgStatus->new($self, $mail,
                         { disable_auto_learning => 1 } );
@@ -1327,9 +1343,7 @@
 
   $self->{resolver}->finish();
 
-  foreach(keys %{$self}) {
-    delete $self->{$_};
-  }
+  %{$self} = ();
 }
 
 ###########################################################################
@@ -1360,8 +1374,6 @@
   if (!defined $self->{config_text}) {
     $self->{config_text} = '';
 
-    my $fname;
-
     # read a file called "init.pre" in site rules dir *before* all others;
     # even the system config.
     my $siterules = $self->{site_rules_filename};
@@ -1384,25 +1396,23 @@
       warn "config: could not find sys rules directory\n";
     }
 
-    $fname = $sysrules;
-    if ($fname) {
-      $self->{config_text} .= $self->read_cf ($fname, 'default rules dir');
+    if ($sysrules) {
+      $self->{config_text} .= $self->read_cf ($sysrules, 'default rules dir');
     }
 
     if (!$self->{languages_filename}) {
       $self->{languages_filename} = $self->find_rule_support_file("languages");
     }
 
-    $fname = $siterules;
-    if ($fname) {
-      $self->{config_text} .= $self->read_cf ($fname, 'site rules dir');
+    if ($siterules) {
+      $self->{config_text} .= $self->read_cf ($siterules, 'site rules dir');
     }
 
     if ( $use_user_pref != 0 ) {
       $self->get_and_create_userstate_dir();
 
       # user prefs file
-      $fname = $self->{userprefs_filename};
+      my $fname = $self->{userprefs_filename};
       $fname ||= $self->first_existing_path (@default_userprefs_path);
 
       if (!$self->{dont_copy_prefs}) {
@@ -1418,6 +1428,8 @@
       $self->{config_text} .= $self->read_cf ($fname, 'user prefs file');
     }
   }
+
+  $self->{config_text} .= $self->{post_config_text} if ($self->{post_config_text});
 
   if ($self->{config_text} !~ /\S/) {
     warn "config: no configuration text or files found! please check your setup\n";

Modified: spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/AICache.pm
URL: http://svn.apache.org/viewvc/spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/AICache.pm?view=diff&rev=453586&r1=453585&r2=453586
==============================================================================
--- spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/AICache.pm (original)
+++ spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/AICache.pm Fri Oct  6 05:46:56 2006
@@ -1,9 +1,10 @@
 # <@LICENSE>
-# Copyright 2004 Apache Software Foundation
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to you under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at:
 # 
 #     http://www.apache.org/licenses/LICENSE-2.0
 # 

Modified: spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/ArchiveIterator.pm
URL: http://svn.apache.org/viewvc/spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/ArchiveIterator.pm?view=diff&rev=453586&r1=453585&r2=453586
==============================================================================
--- spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/ArchiveIterator.pm (original)
+++ spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/ArchiveIterator.pm Fri Oct  6 05:46:56 2006
@@ -1,11 +1,12 @@
 # iterate over mail archives, calling a function on each message.
 #
 # <@LICENSE>
-# Copyright 2004 Apache Software Foundation
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to you under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at:
 # 
 #     http://www.apache.org/licenses/LICENSE-2.0
 # 
@@ -22,8 +23,6 @@
 use warnings;
 use bytes;
 
-use IO::Select;
-use IO::Socket;
 use Mail::SpamAssassin::Util;
 use Mail::SpamAssassin::Constants qw(:sa);
 use Mail::SpamAssassin::Logger;
@@ -35,9 +34,10 @@
 use vars qw {
   $MESSAGES
   $AICache
+  @ISA
 };
 
-my @ISA = qw($MESSAGES);
+@ISA = qw();
 
 =head1 NAME
 
@@ -47,7 +47,6 @@
 
   my $iter = new Mail::SpamAssassin::ArchiveIterator(
     { 
-      'opt_j'     => 0,
       'opt_n'     => 1,
       'opt_all'   => 1,
       'opt_cache' => 1,
@@ -94,31 +93,6 @@
 Typically messages over 250k are skipped by ArchiveIterator.  Use this option
 to keep from skipping messages based on size.
 
-=item opt_j (required)
-
-Specifies how many messages should be run at the same time, as well as the
-method with which to scan for the messages.
-
-If the value is 0, the list of messages to process will be kept in memory,
-and only 1 message at a time will be processed by the wanted subroutine.
-Restarting is not allowed.
-
-If the value is 1, the list of messages to process will be kept in a
-temporary file, and only 1 message at a time will be processed by the
-wanted subroutine.  Restarting is not allowed.
-
-If the value is 2 or higher, the list of messages to process will be kept
-in a temporary file, and the process will split into a parent/child mode.
-The option value number of children will be forked off and each child
-will process messages via the wanted subroutine in parallel.  Restarting
-is allowed.
-
-B<NOTE:> For C<opt_j> >= 1, an extra child process will be created to
-determine the list of messages, sort the list, everything as appropriate.
-This will keep the list in memory (possibly multiple copies) before
-writing the final list to a temporary file which will be used for
-processing.  The list generation child will exit, freeing up the memory.
-
 =item opt_n
 
 ArchiveIterator is typically used to simulate ham and spam moving through
@@ -127,12 +101,6 @@
 will not occur.  This is useful if you don't care about the order of the
 messages.
 
-=item opt_restart
-
-If set to a positive integer value, children processes (see opt_j w/ value 2
-or higher above) will restart after the option value number of messages, in
-total, have been processed.
-
 =item opt_head
 
 Only use the first N ham and N spam (or if the value is -N, only use the first
@@ -245,8 +213,8 @@
 
 sub set_functions {
   my ($self, $wanted, $result) = @_;
-  $self->{wanted_sub} = $wanted;
-  $self->{result_sub} = $result;
+  $self->{wanted_sub} = $wanted if defined $wanted;
+  $self->{result_sub} = $result if defined $result;
 }
 
 ###########################################################################
@@ -302,151 +270,22 @@
     return 0;
   }
 
-  # non-forking model (generally sa-learn), everything in a single process
-  if ($self->{opt_j} < 2) {
-    my $messages;
-
-    # message-array
-    ($MESSAGES, $messages) = $self->message_array(\@targets);
-
-    while (my $message = shift @{$messages}) {
-      my($class, undef, $date, undef, $result) = $self->run_message($message);
-      &{$self->{result_sub}}($class, $result, $date) if $result;
-    }
-  }
-  # forking model (generally mass-check), avoid extended memory usage
-  else {
-    my $tmpf;
-    ($tmpf, $self->{messageh}) = Mail::SpamAssassin::Util::secure_tmpfile()
-      or die 'archive-iterator: failed to create temp file';
-    unlink $tmpf or die "archive-iterator: unlink '$tmpf': $!";
-    undef $tmpf;
-
-    # forked child process scans messages
-    if ($tmpf = fork()) {
-      # parent
-      waitpid($tmpf, 0);
-    }
-    elsif (defined $tmpf) {
-      # child
-      $self->message_array(\@targets, $self->{messageh});
-      exit;
-    }
-    else {
-      die "archive-iterator: cannot fork: $!";
-    }
-
-    # we now have a temporary file with the messages to process
-    # in theory, our file pointer is at the start of the file, but make sure.
-    # NOTE: do this here, not in message_array, since that will only affect
-    # the child.
-    seek($self->{messageh}, 0, 0);
-    $MESSAGES = $self->next_message();
-
-    if (!$MESSAGES) {
-      die "archive-iterator: no messages to process\n";
-    }
-    # only do 1 process, message list in a temp file, no restarting
-    if ($self->{opt_j} == 1 && !defined $self->{opt_restart}) {
-      my $message;
-      my $messages;
-      my $total_count = 0;
-
-      while (($MESSAGES > $total_count) && ($message = $self->next_message())) {
-        my($class, undef, $date, undef, $result) = $self->run_message($message);
-        &{$self->{result_sub}}($class, $result, $date) if $result;
-	$total_count++;
-      }
-    }
-    # more than one process or one process with restarts
-    else {
-      my $select = IO::Select->new();
-
-      my $total_count = 0;
-      my $needs_restart = 0;
-      my @child = ();
-      my @pid = ();
-      my $messages;
-
-      # start children processes
-      $self->start_children($self->{opt_j}, \@child, \@pid, $select);
-
-      # feed childen, make them work for it, repeat
-      while ($select->count()) {
-        foreach my $socket ($select->can_read()) {
-	  my $line = $self->read_line($socket);
-
-          # some error happened during the read!
-          if (!defined $line) {
-            $needs_restart = 1;
-            warn "archive-iterator: readline failed, attempting to recover\n";
-            $select->remove($socket);
-          }
-	  elsif ($line =~ /^([^\0]+)\0RESULT (.+)$/s) {
-	    my $result = $1;
-	    my ($date,$class,$type) = index_unpack($2);
-	    #warn ">> RESULT: $class, $type, $date\n";
-
-	    if (defined $self->{opt_restart} && ($total_count % $self->{opt_restart}) == 0) {
-	      $needs_restart = 1;
-	    }
-
-	    # if messages remain, and we don't need to restart, send message
-	    if (($MESSAGES > $total_count) && !$needs_restart) {
-	      $self->send_line($socket, $self->next_message());
-	      $total_count++;
-	      #warn ">> recv: $MESSAGES $total_count\n";
-	    }
-	    else {
-	      # stop listening on this child since we're done with it
-	      #warn ">> removeresult: $needs_restart $MESSAGES $total_count\n";
-	      $select->remove($socket);
-	    }
-
-	    # deal with the result we received
-	    if ($result) {
-	      &{$self->{result_sub}}($class, $result, $date);
-	    }
-	  }
-	  elsif ($line eq "START") {
-	    if ($MESSAGES > $total_count) {
-	      # we still have messages, send one to child
-	      $self->send_line($socket, $self->next_message());
-	      $total_count++;
-	      #warn ">> new: $MESSAGES $total_count\n";
-	    }
-	    else {
-	      # no more messages, so stop listening on this child
-	      #warn ">> removestart: $needs_restart $MESSAGES $total_count\n";
-	      $select->remove($socket);
-	    }
-	  }
-        }
+  my $messages;
 
-        #warn ">> out of loop, $MESSAGES $total_count $needs_restart ".$select->count()."\n";
+  # scan the targets and get the number and list of messages
+  ($MESSAGES, $messages) = $self->message_array(\@targets);
 
-        # If there are still messages to process, and we need to restart
-        # the children, and all of the children are idle, let's go ahead.
-        if ($needs_restart && $select->count == 0 && $MESSAGES > $total_count)
-	{
-	  $needs_restart = 0;
-
-	  #warn "debug: needs restart, $MESSAGES total, $total_count done\n";
-	  $self->reap_children($self->{opt_j}, \@child, \@pid);
-	  @child=();
-	  @pid=();
-	  $self->start_children($self->{opt_j}, \@child, \@pid, $select);
-        }
-      }
+  # go ahead and run through all of the messages specified
+  return $self->_run($messages);
+}
 
-      # reap children
-      $self->reap_children($self->{opt_j}, \@child, \@pid);
-    }
+sub _run {
+  my ($self, $messages) = @_;
 
-    # close tempfile so it will be unlinked
-    close($self->{messageh});
+  while (my $message = shift @{$messages}) {
+    my($class, undef, $date, undef, $result) = $self->run_message($message);
+    &{$self->{result_sub}}($class, $result, $date) if $result;
   }
-
   return ! $self->{access_problem};
 }
 
@@ -576,136 +415,12 @@
 
 ############################################################################
 
-## figure out the next message to process, used when opt_j >= 1
-
-sub next_message {
-  my ($self) = @_;
-  my $line = $self->read_line($self->{messageh});
-  return $line;
-}
-
-############################################################################
-
-## children processors, start and process, used when opt_j > 1
-
-sub start_children {
-  my ($self, $count, $child, $pid, $socket) = @_;
-
-  my $io = IO::Socket->new();
-  my $parent;
-
-  # create children
-  for (my $i = 0; $i < $count; $i++) {
-    ($child->[$i],$parent) = $io->socketpair(AF_UNIX,SOCK_STREAM,PF_UNSPEC)
-	or die "archive-iterator: socketpair failed: $!";
-    if ($pid->[$i] = fork) {
-      close $parent;
-
-      # disable caching for parent<->child relations
-      my ($old) = select($child->[$i]);
-      $|++;
-      select($old);
-
-      $socket->add($child->[$i]);
-      #warn "debug: starting new child $i (pid ",$pid->[$i],")\n";
-      next;
-    }
-    elsif (defined $pid->[$i]) {
-      my $result;
-      my $line;
-
-      close $self->{messageh} if defined $self->{messageh};
-
-      close $child->[$i];
-      select($parent);
-      $| = 1;	# print to parent by default, turn off buffering
-      $self->send_line($parent,"START");
-      while ($line = $self->read_line($parent)) {
-	if ($line eq "exit") {
-	  close $parent;
-	  exit;
-	}
-
-	my($class, $format, $date, $where, $result) = $self->run_message($line);
-	$result ||= '';
-
-	# If determine_receive_date is not set, the original input date
-	# wasn't calculated, but run_message would have done so, so reset
-	# the packed version if possible ...  use defined for date since
-	# it could == 0.
-        if (!$self->{determine_receive_date} && $class && $format && defined $date && $where) {
-	  $line = index_pack($date, $class, $format, $where);
-        }
-
-	$self->send_line($parent,"$result\0RESULT $line");
-      }
-      exit;
-    }
-    else {
-      die "archive-iterator: cannot fork: $!";
-    }
-  }
-}
-
-## handling killing off the children
-
-sub reap_children {
-  my ($self, $count, $socket, $pid) = @_;
-
-  # If the child died, sending it the exit will generate a SIGPIPE, but we
-  # don't really care since the readline will go undef (which is fine),
-  # then we do the waitpid which will finish it off.  So we end up in the
-  # right state, in theory.
-  local $SIG{'PIPE'} = 'IGNORE';
-
-  for (my $i = 0; $i < $count; $i++) {
-    #warn "debug: killing child $i (pid ",$pid->[$i],")\n";
-    $self->send_line($socket->[$i],"exit"); # tell the child to die.
-    close $socket->[$i];
-    waitpid($pid->[$i], 0); # wait for the signal ...
-  }
-}
-
-############################################################################
-
-# four bytes in network/vax format (little endian) as length of message
-# the rest is the actual message
-
-sub read_line {
-  my($self, $fd) = @_;
-  my($length,$msg);
-
-  # read in the 4 byte length and unpack
-  sysread($fd, $length, 4);
-  $length = unpack("V", $length);
-#  warn "<< $$ $length\n";
-  return unless $length;
-
-  # read in the rest of the single message
-  sysread($fd, $msg, $length);
-#  warn "<< $$ $msg\n";
-  return $msg;
-}
-
-sub send_line {
-  my $self = shift;
-  my $fd = shift;
-
-  foreach ( @_ ) {
-    my $length = pack("V", length $_);
-#    warn ">> $$ ".length($_)." $_\n";
-    syswrite($fd, $length . $_);
-  }
-}
-
-############################################################################
-
 ## FUNCTIONS BELOW THIS POINT ARE FOR FINDING THE MESSAGES TO RUN AGAINST
 
 ############################################################################
 
 sub message_array {
-  my ($self, $targets, $fh) = @_;
+  my ($self, $targets) = @_;
 
   foreach my $target (@${targets}) {
     if (!defined $target) {
@@ -829,12 +544,6 @@
     splice(@messages, -$self->{opt_head});
   }
 
-  # Dump out the messages to the temp file if we're using one
-  if (defined $fh) {
-    $self->send_line($fh, scalar(@messages), @messages);
-    return;
-  }
-
   return scalar(@messages), \@messages;
 }
 
@@ -917,7 +626,8 @@
   @files = grep { -f } map { "$folder/$_" } @files;
 
   if (!@files) {
-    warn "archive-iterator: readdir found no mail in '$folder' directory\n";
+    # this is not a problem; no need to warn about it
+    # warn "archive-iterator: readdir found no mail in '$folder' directory\n";
     return;
   }
 
@@ -1139,7 +849,7 @@
 	  }
 
           $self->bump_scan_progress();
-	  $info->{"$file.$offset"} = Mail::SpamAssassin::Util::receive_date($header);
+	  $info->{$offset} = Mail::SpamAssassin::Util::receive_date($header);
 
 	  # go onto the next message
 	  seek(INPUT, $offset + $size, 0);

Modified: spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/AsyncLoop.pm
URL: http://svn.apache.org/viewvc/spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/AsyncLoop.pm?view=diff&rev=453586&r1=453585&r2=453586
==============================================================================
--- spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/AsyncLoop.pm (original)
+++ spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/AsyncLoop.pm Fri Oct  6 05:46:56 2006
@@ -1,9 +1,10 @@
 # <@LICENSE>
-# Copyright 2004 Apache Software Foundation
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to you under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at:
 # 
 #     http://www.apache.org/licenses/LICENSE-2.0
 # 

Modified: spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/AutoWhitelist.pm
URL: http://svn.apache.org/viewvc/spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/AutoWhitelist.pm?view=diff&rev=453586&r1=453585&r2=453586
==============================================================================
--- spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/AutoWhitelist.pm (original)
+++ spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/AutoWhitelist.pm Fri Oct  6 05:46:56 2006
@@ -1,9 +1,10 @@
 # <@LICENSE>
-# Copyright 2004 Apache Software Foundation
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to you under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at:
 # 
 #     http://www.apache.org/licenses/LICENSE-2.0
 # 

Modified: spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Bayes.pm
URL: http://svn.apache.org/viewvc/spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Bayes.pm?view=diff&rev=453586&r1=453585&r2=453586
==============================================================================
--- spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Bayes.pm (original)
+++ spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Bayes.pm Fri Oct  6 05:46:56 2006
@@ -1,9 +1,10 @@
 # <@LICENSE>
-# Copyright 2004 Apache Software Foundation
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to you under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at:
 # 
 #     http://www.apache.org/licenses/LICENSE-2.0
 # 
@@ -262,7 +263,7 @@
   # use Carp qw(cluck); cluck "stack trace at untie";
 
   $self->{store}->untie_db();
-  delete $self->{store};
+  %{$self} = ();
 }
 
 sub sa_die { Mail::SpamAssassin::sa_die(@_); }

Modified: spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Bayes/CombineChi.pm
URL: http://svn.apache.org/viewvc/spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Bayes/CombineChi.pm?view=diff&rev=453586&r1=453585&r2=453586
==============================================================================
--- spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Bayes/CombineChi.pm (original)
+++ spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Bayes/CombineChi.pm Fri Oct  6 05:46:56 2006
@@ -1,11 +1,12 @@
 # Chi-square probability combining and related constants.
 #
 # <@LICENSE>
-# Copyright 2004 Apache Software Foundation
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to you under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at:
 # 
 #     http://www.apache.org/licenses/LICENSE-2.0
 # 

Modified: spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Bayes/CombineNaiveBayes.pm
URL: http://svn.apache.org/viewvc/spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Bayes/CombineNaiveBayes.pm?view=diff&rev=453586&r1=453585&r2=453586
==============================================================================
--- spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Bayes/CombineNaiveBayes.pm (original)
+++ spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/Bayes/CombineNaiveBayes.pm Fri Oct  6 05:46:56 2006
@@ -1,11 +1,12 @@
 # Naive-Bayesian-style probability combining and related constants.
 #
 # <@LICENSE>
-# Copyright 2004 Apache Software Foundation
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to you under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at:
 # 
 #     http://www.apache.org/licenses/LICENSE-2.0
 # 

Modified: spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/BayesStore.pm
URL: http://svn.apache.org/viewvc/spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/BayesStore.pm?view=diff&rev=453586&r1=453585&r2=453586
==============================================================================
--- spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/BayesStore.pm (original)
+++ spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/BayesStore.pm Fri Oct  6 05:46:56 2006
@@ -1,9 +1,10 @@
 # <@LICENSE>
-# Copyright 2004 Apache Software Foundation
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to you under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at:
 # 
 #     http://www.apache.org/licenses/LICENSE-2.0
 # 

Modified: spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/BayesStore/DBM.pm
URL: http://svn.apache.org/viewvc/spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/BayesStore/DBM.pm?view=diff&rev=453586&r1=453585&r2=453586
==============================================================================
--- spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/BayesStore/DBM.pm (original)
+++ spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/BayesStore/DBM.pm Fri Oct  6 05:46:56 2006
@@ -1,9 +1,10 @@
 # <@LICENSE>
-# Copyright 2004 Apache Software Foundation
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to you under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at:
 # 
 #     http://www.apache.org/licenses/LICENSE-2.0
 # 

Modified: spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/BayesStore/MySQL.pm
URL: http://svn.apache.org/viewvc/spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/BayesStore/MySQL.pm?view=diff&rev=453586&r1=453585&r2=453586
==============================================================================
--- spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/BayesStore/MySQL.pm (original)
+++ spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/BayesStore/MySQL.pm Fri Oct  6 05:46:56 2006
@@ -1,9 +1,10 @@
 # <@LICENSE>
-# Copyright 2004 Apache Software Foundation
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to you under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at:
 # 
 #     http://www.apache.org/licenses/LICENSE-2.0
 # 

Modified: spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/BayesStore/PgSQL.pm
URL: http://svn.apache.org/viewvc/spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/BayesStore/PgSQL.pm?view=diff&rev=453586&r1=453585&r2=453586
==============================================================================
--- spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/BayesStore/PgSQL.pm (original)
+++ spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/BayesStore/PgSQL.pm Fri Oct  6 05:46:56 2006
@@ -1,9 +1,10 @@
 # <@LICENSE>
-# Copyright 2004 Apache Software Foundation
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to you under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at:
 # 
 #     http://www.apache.org/licenses/LICENSE-2.0
 # 

Modified: spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/BayesStore/SDBM.pm
URL: http://svn.apache.org/viewvc/spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/BayesStore/SDBM.pm?view=diff&rev=453586&r1=453585&r2=453586
==============================================================================
--- spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/BayesStore/SDBM.pm (original)
+++ spamassassin/branches/jm_re2c_hacks/lib/Mail/SpamAssassin/BayesStore/SDBM.pm Fri Oct  6 05:46:56 2006
@@ -1,9 +1,10 @@
 # <@LICENSE>
-# Copyright 2004 Apache Software Foundation
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to you under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at:
 # 
 #     http://www.apache.org/licenses/LICENSE-2.0
 #