This commit was manufactured by cvs2svn to create tag 'RT_3_0_12'. RT_3_0_12
authorcvs2git <cvs2git>
Thu, 11 Nov 2004 12:13:51 +0000 (12:13 +0000)
committercvs2git <cvs2git>
Thu, 11 Nov 2004 12:13:51 +0000 (12:13 +0000)
23 files changed:
rt/Makefile [deleted file]
rt/autom4te.cache/output.0 [deleted file]
rt/autom4te.cache/requests [deleted file]
rt/autom4te.cache/traces.0 [deleted file]
rt/bin/mason_handler.fcgi [deleted file]
rt/bin/mason_handler.scgi [deleted file]
rt/bin/mason_handler.svc [deleted file]
rt/bin/rt [deleted file]
rt/bin/rt-commit-handler [deleted file]
rt/bin/rt-crontool [deleted file]
rt/bin/rt-mailgate [deleted file]
rt/bin/webmux.pl [deleted file]
rt/config.log [deleted file]
rt/config.status [deleted file]
rt/etc/RT_Config.pm [deleted file]
rt/lib/RT.pm [deleted file]
rt/lib/t/00smoke.t [deleted file]
rt/lib/t/01harness.t [deleted file]
rt/lib/t/02regression.t [deleted file]
rt/lib/t/03web.pl [deleted file]
rt/lib/t/04_send_email.pl [deleted file]
rt/sbin/rt-setup-database [deleted file]
rt/sbin/rt-test-dependencies [deleted file]

diff --git a/rt/Makefile b/rt/Makefile
deleted file mode 100644 (file)
index 0895874..0000000
+++ /dev/null
@@ -1,490 +0,0 @@
-# BEGIN LICENSE BLOCK
-# 
-# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com>
-# 
-# (Except where explictly superceded by other copyright notices)
-# 
-# This work is made available to you under the terms of Version 2 of
-# the GNU General Public License. A copy of that license should have
-# been provided with this software, but in any event can be snarfed
-# from www.gnu.org.
-# 
-# This work is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-# 
-# Unless otherwise specified, all modifications, corrections or
-# extensions to this work which alter its source code become the
-# property of Best Practical Solutions, LLC when submitted for
-# inclusion in the work.
-# 
-# 
-# END LICENSE BLOCK
-#
-# DO NOT HAND-EDIT the file named 'Makefile'. This file is autogenerated.
-# Have a look at "configure" and "Makefile.in" instead
-#
-
-
-PERL                   =       /usr/bin/perl
-
-CONFIG_FILE_PATH       =       /opt/rt3/etc
-CONFIG_FILE            =       $(CONFIG_FILE_PATH)/RT_Config.pm
-SITE_CONFIG_FILE               =       $(CONFIG_FILE_PATH)/RT_SiteConfig.pm
-
-
-RT_VERSION_MAJOR       =       3
-RT_VERSION_MINOR       =       0
-RT_VERSION_PATCH       =       9
-
-RT_VERSION =   $(RT_VERSION_MAJOR).$(RT_VERSION_MINOR).$(RT_VERSION_PATCH)
-TAG       =    rt-$(RT_VERSION_MAJOR)-$(RT_VERSION_MINOR)-$(RT_VERSION_PATCH)
-
-
-# This is the group that all of the installed files will be chgrp'ed to.
-RTGROUP                        =       rt
-
-
-# User which should own rt binaries.
-BIN_OWNER              =       root
-
-# User that should own all of RT's libraries, generally root.
-LIBS_OWNER             =       root
-
-# Group that should own all of RT's libraries, generally root.
-LIBS_GROUP             =       bin
-
-WEB_USER               =       www
-WEB_GROUP              =       www
-
-# {{{ Files and directories 
-
-# DESTDIR allows you to specify that RT be installed somewhere other than
-# where it will eventually reside
-
-DESTDIR                        =       
-
-
-RT_PATH                        =       /opt/rt3
-RT_ETC_PATH            =       /opt/rt3/etc
-RT_BIN_PATH            =       /opt/rt3/bin
-RT_SBIN_PATH           =       /opt/rt3/sbin
-RT_LIB_PATH            =       /opt/rt3/lib
-RT_MAN_PATH            =       /opt/rt3/man
-RT_VAR_PATH            =       /opt/rt3/var
-RT_DOC_PATH            =       /opt/rt3/share/doc
-RT_LOCAL_PATH          =       /opt/rt3/local
-LOCAL_ETC_PATH         =       /opt/rt3/local/etc
-LOCAL_LEXICON_PATH     =       /opt/rt3/local/po
-MASON_HTML_PATH                =       /opt/rt3/share/html
-MASON_LOCAL_HTML_PATH  =       /opt/rt3/local/html
-MASON_DATA_PATH                =       /opt/rt3/var/mason_data
-MASON_SESSION_PATH     =       /opt/rt3/var/session_data
-RT_LOG_PATH        =       /opt/rt3/var/log
-
-# RT_READABLE_DIR_MODE is the mode of directories that are generally meant
-# to be accessable
-RT_READABLE_DIR_MODE   =       0755
-
-
-
-
-# {{{ all these define the places that RT's binaries should get installed
-
-# RT_MODPERL_HANDLER is the mason handler script for mod_perl
-RT_MODPERL_HANDLER     =       $(RT_BIN_PATH)/webmux.pl
-# RT_FASTCGI_HANDLER is the mason handler script for FastCGI
-RT_FASTCGI_HANDLER     =       $(RT_BIN_PATH)/mason_handler.fcgi
-# RT_WIN32_FASTCGI_HANDLER is the mason handler script for FastCGI
-RT_WIN32_FASTCGI_HANDLER       =       $(RT_BIN_PATH)/mason_handler.svc
-# RT's CLI
-RT_CLI_BIN             =       $(RT_BIN_PATH)/rt
-# RT's mail gateway
-RT_MAILGATE_BIN                =       $(RT_BIN_PATH)/rt-mailgate
-# RT's cron tool
-RT_CRON_BIN            =       $(RT_BIN_PATH)/rt-crontool
-
-# }}}
-
-SETGID_BINARIES                =       $(DESTDIR)/$(RT_FASTCGI_HANDLER) \
-                               $(DESTDIR)/$(RT_WIN32_FASTCGI_HANDLER)
-
-BINARIES               =       $(DESTDIR)/$(RT_MODPERL_HANDLER) \
-                               $(DESTDIR)/$(RT_MAILGATE_BIN) \
-                               $(DESTDIR)/$(RT_CLI_BIN) \
-                               $(DESTDIR)/$(RT_CRON_BIN) \
-                               $(SETGID_BINARIES)
-SYSTEM_BINARIES                =       $(DESTDIR)/$(RT_SBIN_PATH)/
-
-
-# }}}
-
-# {{{ Database setup
-
-#
-# DB_TYPE defines what sort of database RT trys to talk to
-# "mysql" is known to work.
-# "Pg" is known to work
-# "Informix" is known to work
-
-DB_TYPE                        =       mysql
-
-# Set DBA to the name of a unix account with the proper permissions and 
-# environment to run your commandline SQL sbin
-
-# Set DB_DBA to the name of a DB user with permission to create new databases 
-
-# For mysql, you probably want 'root'
-# For Pg, you probably want 'postgres' 
-# For Oracle, you want 'system'
-# For Informix, you want 'informix'
-
-DB_DBA                 =       root
-
-DB_HOST                        =       localhost
-
-# If you're not running your database server on its default port, 
-# specifiy the port the database server is running on below.
-# It's generally safe to leave this blank 
-
-DB_PORT                        =       
-
-
-
-
-#
-# Set this to the canonical name of the interface RT will be talking to the 
-# database on.  If you said that the RT_DB_HOST above was "localhost," this 
-# should be too. This value will be used to grant rt access to the database.
-# If you want to access the RT database from multiple hosts, you'll need
-# to grant those database rights by hand.
-#
-
-DB_RT_HOST             =       localhost
-
-# set this to the name you want to give to the RT database in 
-# your database server. For Oracle, this should be the name of your sid
-
-DB_DATABASE            =       rt3
-DB_RT_USER             =       rt_user
-DB_RT_PASS             =       rt_pass
-
-# }}}
-
-
-####################################################################
-
-all: default
-
-default:
-       @echo "Please read RT's readme before installing. Not doing so could"
-       @echo "be dangerous."
-
-
-
-instruct:
-       @echo "Congratulations. RT has been installed. "
-       @echo ""
-       @echo ""
-       @echo "You must now configure RT by editing $(SITE_CONFIG_FILE)."
-       @echo ""
-       @echo "(You will definitely need to set RT's database password before continuing."
-       @echo " Not doing so could be very dangerous)"
-       @echo ""
-       @echo "After that, you need to initialize RT's database by running" 
-       @echo " 'make initialize-database'"
-
-#      @echo " or by executing "       
-#      @echo " '$(RT_SBIN_PATH)/rt-setup-database --action init \ "
-#      @echo "     --dba $(DB_DBA) --prompt-for-dba-password'"
-
-
-
-upgrade-instruct: 
-       @echo "Congratulations. RT has been upgraded. You should now check-over"
-       @echo "$(CONFIG_FILE) for any necessary site customization. Additionally,"
-       @echo "you should update RT's system database objects by running "
-       @echo "   ls etc/upgrade"
-       @echo "For each file in that directory whose name is greater than"
-       @echo "your previously installed RT version, run:"
-       @echo "    $(RT_SBIN_PATH)/rt-setup-database --action insert --datafile etc/upgrade/<version>"
-
-
-upgrade: config-install dirs files-install fixperms upgrade-instruct
-
-upgrade-noclobber: config-install libs-install html-install bin-install local-install doc-install fixperms
-
-
-# {{{ dependencies
-testdeps:
-       $(PERL) ./sbin/rt-test-dependencies --with-$(DB_TYPE)
-
-fixdeps:
-       $(PERL) ./sbin/rt-test-dependencies --install --with-$(DB_TYPE)
-
-#}}}
-
-# {{{ fixperms
-fixperms:
-       # Make the libraries readable
-       chmod $(RT_READABLE_DIR_MODE) $(DESTDIR)/$(RT_PATH)
-       chown -R $(LIBS_OWNER) $(DESTDIR)/$(RT_LIB_PATH)
-       chgrp -R $(LIBS_GROUP) $(DESTDIR)/$(RT_LIB_PATH)
-       chmod -R  u+rwX,go-w,go+rX      $(DESTDIR)/$(RT_LIB_PATH)
-
-
-       chmod $(RT_READABLE_DIR_MODE) $(DESTDIR)/$(RT_BIN_PATH)
-       chmod $(RT_READABLE_DIR_MODE) $(DESTDIR)/$(RT_BIN_PATH) 
-
-       chmod 0755 $(DESTDIR)/$(RT_ETC_PATH)
-       chmod 0500 $(DESTDIR)/$(RT_ETC_PATH)/*
-
-       #TODO: the config file should probably be able to have its
-       # owner set seperately from the binaries.
-       chown -R $(BIN_OWNER) $(DESTDIR)/$(RT_ETC_PATH)
-       chgrp -R $(RTGROUP) $(DESTDIR)/$(RT_ETC_PATH)
-
-       chmod 0550 $(DESTDIR)/$(CONFIG_FILE)
-       chmod 0550 $(DESTDIR)/$(SITE_CONFIG_FILE)
-
-       # Make the interfaces executable and setgid rt
-       chown $(BIN_OWNER) $(BINARIES)
-       chgrp $(RTGROUP) $(BINARIES)
-       chmod 0755  $(BINARIES)
-       chmod g+s $(SETGID_BINARIES)
-
-       # Make the web ui readable by all. 
-       chmod -R  u+rwX,go-w,go+rX      $(DESTDIR)/$(MASON_HTML_PATH) \
-                                       $(DESTDIR)/$(MASON_LOCAL_HTML_PATH) \
-                                       $(DESTDIR)/$(LOCAL_LEXICON_PATH)
-       chown -R $(LIBS_OWNER)  $(DESTDIR)/$(MASON_HTML_PATH) \
-                               $(DESTDIR)/$(MASON_LOCAL_HTML_PATH)
-       chgrp -R $(LIBS_GROUP)  $(DESTDIR)/$(MASON_HTML_PATH) \
-                               $(DESTDIR)/$(MASON_LOCAL_HTML_PATH)
-
-       # Make the web ui's data dir writable
-       chmod 0770      $(DESTDIR)/$(MASON_DATA_PATH) \
-                       $(DESTDIR)/$(MASON_SESSION_PATH)
-       chown -R $(WEB_USER)    $(DESTDIR)/$(MASON_DATA_PATH) \
-                               $(DESTDIR)/$(MASON_SESSION_PATH)
-       chgrp -R $(WEB_GROUP)   $(DESTDIR)/$(MASON_DATA_PATH) \
-                               $(DESTDIR)/$(MASON_SESSION_PATH)
-# }}}
-
-fixperms-nosetgid: fixperms
-       @echo "You should never be running RT this way. it's unsafe"
-       chmod 0555 $(SETGID_BINARIES)
-       chmod 0555 $(DESTDIR)/$(CONFIG_FILE)
-       chmod 0555 $(DESTDIR)/$(SITE_CONFIG_FILE)
-
-# {{{ dirs
-dirs:
-       mkdir -p $(DESTDIR)/$(RT_LOG_PATH)
-       mkdir -p $(DESTDIR)/$(MASON_DATA_PATH)
-       mkdir -p $(DESTDIR)/$(MASON_DATA_PATH)/cache
-       mkdir -p $(DESTDIR)/$(MASON_DATA_PATH)/etc
-       mkdir -p $(DESTDIR)/$(MASON_DATA_PATH)/obj
-       mkdir -p $(DESTDIR)/$(MASON_SESSION_PATH)
-       mkdir -p $(DESTDIR)/$(MASON_HTML_PATH)
-       mkdir -p $(DESTDIR)/$(MASON_LOCAL_HTML_PATH)
-       mkdir -p $(DESTDIR)/$(LOCAL_ETC_PATH)
-       mkdir -p $(DESTDIR)/$(LOCAL_LEXICON_PATH)
-# }}}
-
-install: config-install dirs files-install fixperms instruct
-
-files-install: libs-install etc-install bin-install sbin-install html-install local-install doc-install
-
-config-install:
-       mkdir -p $(DESTDIR)/$(CONFIG_FILE_PATH) 
-       cp etc/RT_Config.pm $(DESTDIR)/$(CONFIG_FILE)
-       [ -f $(DESTDIR)/$(SITE_CONFIG_FILE) ] || cp etc/RT_SiteConfig.pm $(DESTDIR)/$(SITE_CONFIG_FILE) 
-
-       chgrp $(RTGROUP) $(DESTDIR)/$(CONFIG_FILE)
-       chown $(BIN_OWNER) $(DESTDIR)/$(CONFIG_FILE)
-
-       chgrp $(RTGROUP) $(DESTDIR)/$(SITE_CONFIG_FILE)
-       chown $(BIN_OWNER) $(DESTDIR)/$(SITE_CONFIG_FILE)
-
-       @echo "Installed configuration. about to install rt in  $(RT_PATH)"
-
-test: 
-       $(PERL) -Ilib lib/t/00smoke.t
-
-regression-install: config-install
-       $(PERL) -pi -e 's/Set\(\$$DatabaseName.*\);/Set\(\$$DatabaseName, "rt3regression"\);/' $(DESTDIR)/$(CONFIG_FILE)
-
-regression-nosetgid-quiet: regression-install dirs files-install libs-install sbin-install bin-install regression-instruct regression-reset-db  testify-pods fixperms-nosetgid apachectl
-       $(PERL) sbin/regression_harness
-
-regression-nosetgid: regression-install dirs files-install libs-install sbin-install bin-install regression-instruct regression-reset-db  testify-pods fixperms-nosetgid apachectl
-       $(PERL) lib/t/02regression.t
-
-regression: regression-install dirs files-install libs-install sbin-install bin-install regression-instruct regression-reset-db  testify-pods fixperms apachectl
-       $(PERL) lib/t/02regression.t
-
-regression-quiet:
-       $(PERL) sbin/regression_harness
-
-regression-instruct:
-       @echo "About to wipe your database for a regression test. ABORT NOW with Control-C"
-
-
-# {{{ database-installation
-
-regression-reset-db:
-       $(PERL) $(DESTDIR)/$(RT_SBIN_PATH)/rt-setup-database --action drop --dba $(DB_DBA) --dba-password ''
-       $(PERL) $(DESTDIR)/$(RT_SBIN_PATH)/rt-setup-database --action init --dba $(DB_DBA) --dba-password ''
-
-initialize-database: 
-       $(PERL) $(DESTDIR)/$(RT_SBIN_PATH)/rt-setup-database --action init --dba $(DB_DBA) --prompt-for-dba-password
-
-dropdb: 
-       $(PERL) $(DESTDIR)/$(RT_SBIN_PATH)/rt-setup-database --action drop --dba $(DB_DBA) --prompt-for-dba-password
-
-insert-approval-data: 
-       $(PERL) $(DESTDIR)/$(RT_SBIN_PATH)/insert_approval_scrips
-# }}}
-
-# {{{ libs-install
-libs-install: 
-       [ -d $(DESTDIR)/$(RT_LIB_PATH) ] || mkdir $(DESTDIR)/$(RT_LIB_PATH)
-       -cp -rp lib/* $(DESTDIR)/$(RT_LIB_PATH)
-# }}}
-
-# {{{ html-install
-html-install:
-       [ -d $(DESTDIR)/$(MASON_HTML_PATH) ] || mkdir $(DESTDIR)/$(MASON_HTML_PATH)
-       -cp -rp ./html/* $(DESTDIR)/$(MASON_HTML_PATH)
-# }}}
-
-# {{{ doc-install
-doc-install:
-       # RT 3.0.0 - RT 3.0.2 would accidentally create a file instead of a dir
-       -[ -f $(DESTDIR)/$(RT_DOC_PATH) ] && rm $(DESTDIR)/$(RT_DOC_PATH) 
-       [ -d $(DESTDIR)/$(RT_DOC_PATH) ] || mkdir $(DESTDIR)/$(RT_DOC_PATH)
-       -cp -rp ./README $(DESTDIR)/$(RT_DOC_PATH)
-# }}}
-
-# {{{ etc-install
-
-etc-install:
-       mkdir -p $(DESTDIR)/$(RT_ETC_PATH)
-       -cp -rp \
-               etc/acl.* \
-               etc/initialdata \
-               etc/schema.* \
-               $(DESTDIR)/$(RT_ETC_PATH)
-# }}}
-
-# {{{ sbin-install
-
-sbin-install:
-       mkdir -p $(DESTDIR)/$(RT_SBIN_PATH)
-       chmod +x sbin/rt-setup-database \
-               sbin/rt-test-dependencies
-       -cp -rp \
-               sbin/rt-setup-database \
-               sbin/rt-test-dependencies \
-               $(DESTDIR)/$(RT_SBIN_PATH)
-
-# }}}
-
-# {{{ bin-install
-
-bin-install:
-       mkdir -p $(DESTDIR)/$(RT_BIN_PATH)
-       chmod +x bin/rt-mailgate \
-               bin/rt-crontool
-       -cp -rp \
-               bin/rt-mailgate \
-               bin/mason_handler.fcgi \
-               bin/mason_handler.scgi \
-               bin/mason_handler.svc \
-               bin/rt \
-               bin/webmux.pl \
-               bin/rt-crontool \
-               $(DESTDIR)/$(RT_BIN_PATH)
-# }}}
-
-# {{{ local-install
-local-install:
-       -cp -rp ./local/html/* $(DESTDIR)/$(MASON_LOCAL_HTML_PATH)
-       -cp -rp ./local/po/* $(DESTDIR)/$(LOCAL_LEXICON_PATH)
-       -cp -rp ./local/etc/* $(DESTDIR)/$(LOCAL_ETC_PATH)
-# }}}
-
-# {{{ Best Practical Build targets -- no user servicable parts inside
-
-
-POD2TEST_EXE = sbin/extract_pod_tests
-
-testify-pods:
-       [ -d lib/t/autogen ] || mkdir lib/t/autogen
-       find lib -name \*pm |grep -v \*.in |xargs -n 1 $(PERL) $(POD2TEST_EXE)
-       find bin -type f |grep -v \~ | grep -v "\.in" | xargs -n 1 $(PERL) $(POD2TEST_EXE)
-
-
-
-regenerate-catalogs:
-       $(PERL) sbin/extract-message-catalog
-
-license-tag:
-       $(PERL) sbin/license_tag
-
-factory: initialize-database
-       cd lib; $(PERL) ../sbin/factory  $(DB_DATABASE) RT
-
-commit:
-       aegis -build ; aegis -diff ; aegis -test; aegis -develop_end
-
-integrate:
-       aegis -integrate_begin; aegis -build; aegis -diff; aegis -test ; aegis -integrate_pass
-
-predist: commit tag-and-tar
-
-tag-and-release-baseline:
-       aegis -cp -ind Makefile -output /tmp/Makefile.tagandrelease; \
-       $(MAKE) -f /tmp/Makefile.tagandrelease tag-and-release-never-by-hand
-
-
-# Running this target in a working directory is 
-# WRONG WRONG WRONG.
-# it will tag the current baseline with the version of RT defined 
-# in the currently-being-worked-on makefile. which is wrong.
-#  you want tag-and-release-baseline
-
-tag-and-release-never-by-hand:
-       aegis --delta-name $(TAG)
-       rm -rf /tmp/$(TAG)
-       mkdir /tmp/$(TAG)
-       cd /tmp/$(TAG); \
-               aegis -cp -ind -delta $(TAG) . ;\
-               make reconfigure;\
-               chmod 600 Makefile;\
-               aegis --report --project rt.$(RT_VERSION_MAJOR) \
-                     --page_width 80 \
-                     --page_length 9999 \
-                     --change $(RT_VERSION_MINOR) --output Changelog Change_Log
-
-       cd /tmp; tar czvf /home/ftp/pub/rt/devel/$(TAG).tar.gz $(TAG)/
-       chmod 644 /home/ftp/pub/rt/devel/$(TAG).tar.gz
-
-
-reconfigure:
-       aclocal -I m4
-       autoconf
-       chmod 755 ./configure
-       ./configure
-
-rpm:
-       (cd ..; tar czvf /usr/src/redhat/SOURCES/rt.tar.gz rt)
-       rpm -ba etc/rt.spec
-
-
-apachectl:
-       apachectl stop
-       sleep 3
-       apachectl start
-# }}}
diff --git a/rt/autom4te.cache/output.0 b/rt/autom4te.cache/output.0
deleted file mode 100644 (file)
index 3d27db9..0000000
+++ /dev/null
@@ -1,2771 +0,0 @@
-@%:@! /bin/sh
-@%:@ From configure.ac Revision: 1.1 .
-@%:@ Guess values for system-dependent variables and create Makefiles.
-@%:@ Generated by GNU Autoconf 2.53 for RT 3.0.9.
-@%:@
-@%:@ Report bugs to <rt-3.0-bugs@fsck.com>.
-@%:@ 
-@%:@ Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002
-@%:@ Free Software Foundation, Inc.
-@%:@ This configure script is free software; the Free Software Foundation
-@%:@ gives unlimited permission to copy, distribute and modify it.
-
-if expr a : '\(a\)' >/dev/null 2>&1; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-
-## --------------------- ##
-## M4sh Initialization.  ##
-## --------------------- ##
-
-# Be Bourne compatible
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
-  emulate sh
-  NULLCMD=:
-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
-  set -o posix
-fi
-
-# NLS nuisances.
-# Support unset when possible.
-if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
-  as_unset=unset
-else
-  as_unset=false
-fi
-
-(set +x; test -n "`(LANG=C; export LANG) 2>&1`") &&
-    { $as_unset LANG || test "${LANG+set}" != set; } ||
-      { LANG=C; export LANG; }
-(set +x; test -n "`(LC_ALL=C; export LC_ALL) 2>&1`") &&
-    { $as_unset LC_ALL || test "${LC_ALL+set}" != set; } ||
-      { LC_ALL=C; export LC_ALL; }
-(set +x; test -n "`(LC_TIME=C; export LC_TIME) 2>&1`") &&
-    { $as_unset LC_TIME || test "${LC_TIME+set}" != set; } ||
-      { LC_TIME=C; export LC_TIME; }
-(set +x; test -n "`(LC_CTYPE=C; export LC_CTYPE) 2>&1`") &&
-    { $as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set; } ||
-      { LC_CTYPE=C; export LC_CTYPE; }
-(set +x; test -n "`(LANGUAGE=C; export LANGUAGE) 2>&1`") &&
-    { $as_unset LANGUAGE || test "${LANGUAGE+set}" != set; } ||
-      { LANGUAGE=C; export LANGUAGE; }
-(set +x; test -n "`(LC_COLLATE=C; export LC_COLLATE) 2>&1`") &&
-    { $as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set; } ||
-      { LC_COLLATE=C; export LC_COLLATE; }
-(set +x; test -n "`(LC_NUMERIC=C; export LC_NUMERIC) 2>&1`") &&
-    { $as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set; } ||
-      { LC_NUMERIC=C; export LC_NUMERIC; }
-(set +x; test -n "`(LC_MESSAGES=C; export LC_MESSAGES) 2>&1`") &&
-    { $as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set; } ||
-      { LC_MESSAGES=C; export LC_MESSAGES; }
-
-
-# Name of the executable.
-as_me=`(basename "$0") 2>/dev/null ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-        X"$0" : 'X\(//\)$' \| \
-        X"$0" : 'X\(/\)$' \| \
-        .     : '\(.\)' 2>/dev/null ||
-echo X/"$0" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
-         /^X\/\(\/\/\)$/{ s//\1/; q; }
-         /^X\/\(\/\).*/{ s//\1/; q; }
-         s/.*/./; q'`
-
-# PATH needs CR, and LINENO needs CR and PATH.
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  echo "#! /bin/sh" >conftest.sh
-  echo  "exit 0"   >>conftest.sh
-  chmod +x conftest.sh
-  if (PATH=".;."; conftest.sh) >/dev/null 2>&1; then
-    PATH_SEPARATOR=';'
-  else
-    PATH_SEPARATOR=:
-  fi
-  rm -f conftest.sh
-fi
-
-
-  as_lineno_1=$LINENO
-  as_lineno_2=$LINENO
-  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
-  test "x$as_lineno_1" != "x$as_lineno_2" &&
-  test "x$as_lineno_3"  = "x$as_lineno_2"  || {
-  # Find who we are.  Look in the path if we contain no path at all
-  # relative or not.
-  case $0 in
-    *[\\/]* ) as_myself=$0 ;;
-    *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-done
-
-       ;;
-  esac
-  # We did not find ourselves, most probably we were run as `sh COMMAND'
-  # in which case we are not to be found in the path.
-  if test "x$as_myself" = x; then
-    as_myself=$0
-  fi
-  if test ! -f "$as_myself"; then
-    { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2
-   { (exit 1); exit 1; }; }
-  fi
-  case $CONFIG_SHELL in
-  '')
-    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for as_base in sh bash ksh sh5; do
-        case $as_dir in
-        /*)
-          if ("$as_dir/$as_base" -c '
-  as_lineno_1=$LINENO
-  as_lineno_2=$LINENO
-  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
-  test "x$as_lineno_1" != "x$as_lineno_2" &&
-  test "x$as_lineno_3"  = "x$as_lineno_2" ') 2>/dev/null; then
-            CONFIG_SHELL=$as_dir/$as_base
-            export CONFIG_SHELL
-            exec "$CONFIG_SHELL" "$0" ${1+"$@"}
-          fi;;
-        esac
-       done
-done
-;;
-  esac
-
-  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
-  # uniformly replaced by the line number.  The first 'sed' inserts a
-  # line-number line before each line; the second 'sed' does the real
-  # work.  The second script uses 'N' to pair each line-number line
-  # with the numbered line, and appends trailing '-' during
-  # substitution so that $LINENO is not a special case at line end.
-  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
-  # second 'sed' script.  Blame Lee E. McMahon for sed's syntax.  :-)
-  sed '=' <$as_myself |
-    sed '
-      N
-      s,$,-,
-      : loop
-      s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
-      t loop
-      s,-$,,
-      s,^['$as_cr_digits']*\n,,
-    ' >$as_me.lineno &&
-  chmod +x $as_me.lineno ||
-    { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
-   { (exit 1); exit 1; }; }
-
-  # Don't try to exec as it changes $[0], causing all sort of problems
-  # (the dirname of $[0] is not the place where we might find the
-  # original and so on.  Autoconf is especially sensible to this).
-  . ./$as_me.lineno
-  # Exit status is that of the last command.
-  exit
-}
-
-
-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
-  *c*,-n*) ECHO_N= ECHO_C='
-' ECHO_T='     ' ;;
-  *c*,*  ) ECHO_N=-n ECHO_C= ECHO_T= ;;
-  *)       ECHO_N= ECHO_C='\c' ECHO_T= ;;
-esac
-
-if expr a : '\(a\)' >/dev/null 2>&1; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-rm -f conf$$ conf$$.exe conf$$.file
-echo >conf$$.file
-if ln -s conf$$.file conf$$ 2>/dev/null; then
-  # We could just check for DJGPP; but this test a) works b) is more generic
-  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
-  if test -f conf$$.exe; then
-    # Don't use ln at all; we don't have any links
-    as_ln_s='cp -p'
-  else
-    as_ln_s='ln -s'
-  fi
-elif ln conf$$.file conf$$ 2>/dev/null; then
-  as_ln_s=ln
-else
-  as_ln_s='cp -p'
-fi
-rm -f conf$$ conf$$.exe conf$$.file
-
-as_executable_p="test -f"
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
-
-
-# IFS
-# We need space, tab and new line, in precisely that order.
-as_nl='
-'
-IFS="  $as_nl"
-
-# CDPATH.
-$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=$PATH_SEPARATOR; export CDPATH; }
-
-
-# Name of the host.
-# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
-# so uname gets run too.
-ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
-
-exec 6>&1
-
-#
-# Initializations.
-#
-ac_default_prefix=/usr/local
-cross_compiling=no
-subdirs=
-MFLAGS=
-MAKEFLAGS=
-SHELL=${CONFIG_SHELL-/bin/sh}
-
-# Maximum number of lines to put in a shell here document.
-# This variable seems obsolete.  It should probably be removed, and
-# only ac_max_sed_lines should be used.
-: ${ac_max_here_lines=38}
-
-# Identity of this package.
-PACKAGE_NAME='RT'
-PACKAGE_TARNAME='rt'
-PACKAGE_VERSION='3.0.9'
-PACKAGE_STRING='RT 3.0.9'
-PACKAGE_BUGREPORT='rt-3.0-bugs@fsck.com'
-
-ac_unique_file="lib/RT.pm.in"
-ac_default_prefix=/opt/rt3
-
-# Initialize some variables set by options.
-ac_init_help=
-ac_init_version=false
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-cache_file=/dev/null
-exec_prefix=NONE
-no_create=
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-verbose=
-x_includes=NONE
-x_libraries=NONE
-
-# Installation directory options.
-# These are left unexpanded so users can "make install exec_prefix=/foo"
-# and all the variables that are supposed to be based on exec_prefix
-# by default will actually change.
-# Use braces instead of parens because sh, perl, etc. also accept them.
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datadir='${prefix}/share'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-libdir='${exec_prefix}/lib'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-infodir='${prefix}/info'
-mandir='${prefix}/man'
-
-ac_prev=
-for ac_option
-do
-  # If the previous option needs an argument, assign it.
-  if test -n "$ac_prev"; then
-    eval "$ac_prev=\$ac_option"
-    ac_prev=
-    continue
-  fi
-
-  ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
-
-  # Accept the important Cygnus configure options, so we can diagnose typos.
-
-  case $ac_option in
-
-  -bindir | --bindir | --bindi | --bind | --bin | --bi)
-    ac_prev=bindir ;;
-  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
-    bindir=$ac_optarg ;;
-
-  -build | --build | --buil | --bui | --bu)
-    ac_prev=build_alias ;;
-  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
-    build_alias=$ac_optarg ;;
-
-  -cache-file | --cache-file | --cache-fil | --cache-fi \
-  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
-    ac_prev=cache_file ;;
-  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
-  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
-    cache_file=$ac_optarg ;;
-
-  --config-cache | -C)
-    cache_file=config.cache ;;
-
-  -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
-    ac_prev=datadir ;;
-  -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
-  | --da=*)
-    datadir=$ac_optarg ;;
-
-  -disable-* | --disable-*)
-    ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
-      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
-   { (exit 1); exit 1; }; }
-    ac_feature=`echo $ac_feature | sed 's/-/_/g'`
-    eval "enable_$ac_feature=no" ;;
-
-  -enable-* | --enable-*)
-    ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null &&
-      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
-   { (exit 1); exit 1; }; }
-    ac_feature=`echo $ac_feature | sed 's/-/_/g'`
-    case $ac_option in
-      *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
-      *) ac_optarg=yes ;;
-    esac
-    eval "enable_$ac_feature='$ac_optarg'" ;;
-
-  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
-  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
-  | --exec | --exe | --ex)
-    ac_prev=exec_prefix ;;
-  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
-  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
-  | --exec=* | --exe=* | --ex=*)
-    exec_prefix=$ac_optarg ;;
-
-  -gas | --gas | --ga | --g)
-    # Obsolete; use --with-gas.
-    with_gas=yes ;;
-
-  -help | --help | --hel | --he | -h)
-    ac_init_help=long ;;
-  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
-    ac_init_help=recursive ;;
-  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
-    ac_init_help=short ;;
-
-  -host | --host | --hos | --ho)
-    ac_prev=host_alias ;;
-  -host=* | --host=* | --hos=* | --ho=*)
-    host_alias=$ac_optarg ;;
-
-  -includedir | --includedir | --includedi | --included | --include \
-  | --includ | --inclu | --incl | --inc)
-    ac_prev=includedir ;;
-  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
-  | --includ=* | --inclu=* | --incl=* | --inc=*)
-    includedir=$ac_optarg ;;
-
-  -infodir | --infodir | --infodi | --infod | --info | --inf)
-    ac_prev=infodir ;;
-  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
-    infodir=$ac_optarg ;;
-
-  -libdir | --libdir | --libdi | --libd)
-    ac_prev=libdir ;;
-  -libdir=* | --libdir=* | --libdi=* | --libd=*)
-    libdir=$ac_optarg ;;
-
-  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
-  | --libexe | --libex | --libe)
-    ac_prev=libexecdir ;;
-  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
-  | --libexe=* | --libex=* | --libe=*)
-    libexecdir=$ac_optarg ;;
-
-  -localstatedir | --localstatedir | --localstatedi | --localstated \
-  | --localstate | --localstat | --localsta | --localst \
-  | --locals | --local | --loca | --loc | --lo)
-    ac_prev=localstatedir ;;
-  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
-  | --localstate=* | --localstat=* | --localsta=* | --localst=* \
-  | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
-    localstatedir=$ac_optarg ;;
-
-  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
-    ac_prev=mandir ;;
-  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
-    mandir=$ac_optarg ;;
-
-  -nfp | --nfp | --nf)
-    # Obsolete; use --without-fp.
-    with_fp=no ;;
-
-  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
-  | --no-cr | --no-c | -n)
-    no_create=yes ;;
-
-  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
-    no_recursion=yes ;;
-
-  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
-  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
-  | --oldin | --oldi | --old | --ol | --o)
-    ac_prev=oldincludedir ;;
-  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
-  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
-  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
-    oldincludedir=$ac_optarg ;;
-
-  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
-    ac_prev=prefix ;;
-  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
-    prefix=$ac_optarg ;;
-
-  -program-prefix | --program-prefix | --program-prefi | --program-pref \
-  | --program-pre | --program-pr | --program-p)
-    ac_prev=program_prefix ;;
-  -program-prefix=* | --program-prefix=* | --program-prefi=* \
-  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
-    program_prefix=$ac_optarg ;;
-
-  -program-suffix | --program-suffix | --program-suffi | --program-suff \
-  | --program-suf | --program-su | --program-s)
-    ac_prev=program_suffix ;;
-  -program-suffix=* | --program-suffix=* | --program-suffi=* \
-  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
-    program_suffix=$ac_optarg ;;
-
-  -program-transform-name | --program-transform-name \
-  | --program-transform-nam | --program-transform-na \
-  | --program-transform-n | --program-transform- \
-  | --program-transform | --program-transfor \
-  | --program-transfo | --program-transf \
-  | --program-trans | --program-tran \
-  | --progr-tra | --program-tr | --program-t)
-    ac_prev=program_transform_name ;;
-  -program-transform-name=* | --program-transform-name=* \
-  | --program-transform-nam=* | --program-transform-na=* \
-  | --program-transform-n=* | --program-transform-=* \
-  | --program-transform=* | --program-transfor=* \
-  | --program-transfo=* | --program-transf=* \
-  | --program-trans=* | --program-tran=* \
-  | --progr-tra=* | --program-tr=* | --program-t=*)
-    program_transform_name=$ac_optarg ;;
-
-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-  | -silent | --silent | --silen | --sile | --sil)
-    silent=yes ;;
-
-  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
-    ac_prev=sbindir ;;
-  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
-  | --sbi=* | --sb=*)
-    sbindir=$ac_optarg ;;
-
-  -sharedstatedir | --sharedstatedir | --sharedstatedi \
-  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
-  | --sharedst | --shareds | --shared | --share | --shar \
-  | --sha | --sh)
-    ac_prev=sharedstatedir ;;
-  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
-  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
-  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
-  | --sha=* | --sh=*)
-    sharedstatedir=$ac_optarg ;;
-
-  -site | --site | --sit)
-    ac_prev=site ;;
-  -site=* | --site=* | --sit=*)
-    site=$ac_optarg ;;
-
-  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
-    ac_prev=srcdir ;;
-  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
-    srcdir=$ac_optarg ;;
-
-  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
-  | --syscon | --sysco | --sysc | --sys | --sy)
-    ac_prev=sysconfdir ;;
-  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
-  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
-    sysconfdir=$ac_optarg ;;
-
-  -target | --target | --targe | --targ | --tar | --ta | --t)
-    ac_prev=target_alias ;;
-  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
-    target_alias=$ac_optarg ;;
-
-  -v | -verbose | --verbose | --verbos | --verbo | --verb)
-    verbose=yes ;;
-
-  -version | --version | --versio | --versi | --vers | -V)
-    ac_init_version=: ;;
-
-  -with-* | --with-*)
-    ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
-      { echo "$as_me: error: invalid package name: $ac_package" >&2
-   { (exit 1); exit 1; }; }
-    ac_package=`echo $ac_package| sed 's/-/_/g'`
-    case $ac_option in
-      *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;;
-      *) ac_optarg=yes ;;
-    esac
-    eval "with_$ac_package='$ac_optarg'" ;;
-
-  -without-* | --without-*)
-    ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null &&
-      { echo "$as_me: error: invalid package name: $ac_package" >&2
-   { (exit 1); exit 1; }; }
-    ac_package=`echo $ac_package | sed 's/-/_/g'`
-    eval "with_$ac_package=no" ;;
-
-  --x)
-    # Obsolete; use --with-x.
-    with_x=yes ;;
-
-  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
-  | --x-incl | --x-inc | --x-in | --x-i)
-    ac_prev=x_includes ;;
-  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
-  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
-    x_includes=$ac_optarg ;;
-
-  -x-libraries | --x-libraries | --x-librarie | --x-librari \
-  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
-    ac_prev=x_libraries ;;
-  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
-  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
-    x_libraries=$ac_optarg ;;
-
-  -*) { echo "$as_me: error: unrecognized option: $ac_option
-Try \`$0 --help' for more information." >&2
-   { (exit 1); exit 1; }; }
-    ;;
-
-  *=*)
-    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
-    # Reject names that are not valid shell variable names.
-    expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
-      { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
-   { (exit 1); exit 1; }; }
-    ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`
-    eval "$ac_envvar='$ac_optarg'"
-    export $ac_envvar ;;
-
-  *)
-    # FIXME: should be removed in autoconf 3.0.
-    echo "$as_me: WARNING: you should use --build, --host, --target" >&2
-    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
-      echo "$as_me: WARNING: invalid host type: $ac_option" >&2
-    : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
-    ;;
-
-  esac
-done
-
-if test -n "$ac_prev"; then
-  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
-  { echo "$as_me: error: missing argument to $ac_option" >&2
-   { (exit 1); exit 1; }; }
-fi
-
-# Be sure to have absolute paths.
-for ac_var in exec_prefix prefix
-do
-  eval ac_val=$`echo $ac_var`
-  case $ac_val in
-    [\\/$]* | ?:[\\/]* | NONE | '' ) ;;
-    *)  { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
-   { (exit 1); exit 1; }; };;
-  esac
-done
-
-# Be sure to have absolute paths.
-for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \
-              localstatedir libdir includedir oldincludedir infodir mandir
-do
-  eval ac_val=$`echo $ac_var`
-  case $ac_val in
-    [\\/$]* | ?:[\\/]* ) ;;
-    *)  { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
-   { (exit 1); exit 1; }; };;
-  esac
-done
-
-# There might be people who depend on the old broken behavior: `$host'
-# used to hold the argument of --host etc.
-# FIXME: To remove some day.
-build=$build_alias
-host=$host_alias
-target=$target_alias
-
-# FIXME: To remove some day.
-if test "x$host_alias" != x; then
-  if test "x$build_alias" = x; then
-    cross_compiling=maybe
-    echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
-    If a cross compiler is detected then cross compile mode will be used." >&2
-  elif test "x$build_alias" != "x$host_alias"; then
-    cross_compiling=yes
-  fi
-fi
-
-ac_tool_prefix=
-test -n "$host_alias" && ac_tool_prefix=$host_alias-
-
-test "$silent" = yes && exec 6>/dev/null
-
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
-  ac_srcdir_defaulted=yes
-  # Try the directory containing this script, then its parent.
-  ac_confdir=`(dirname "$0") 2>/dev/null ||
-$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-         X"$0" : 'X\(//\)[^/]' \| \
-         X"$0" : 'X\(//\)$' \| \
-         X"$0" : 'X\(/\)' \| \
-         .     : '\(.\)' 2>/dev/null ||
-echo X"$0" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-         /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-         /^X\(\/\/\)$/{ s//\1/; q; }
-         /^X\(\/\).*/{ s//\1/; q; }
-         s/.*/./; q'`
-  srcdir=$ac_confdir
-  if test ! -r $srcdir/$ac_unique_file; then
-    srcdir=..
-  fi
-else
-  ac_srcdir_defaulted=no
-fi
-if test ! -r $srcdir/$ac_unique_file; then
-  if test "$ac_srcdir_defaulted" = yes; then
-    { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2
-   { (exit 1); exit 1; }; }
-  else
-    { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
-   { (exit 1); exit 1; }; }
-  fi
-fi
-srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'`
-ac_env_build_alias_set=${build_alias+set}
-ac_env_build_alias_value=$build_alias
-ac_cv_env_build_alias_set=${build_alias+set}
-ac_cv_env_build_alias_value=$build_alias
-ac_env_host_alias_set=${host_alias+set}
-ac_env_host_alias_value=$host_alias
-ac_cv_env_host_alias_set=${host_alias+set}
-ac_cv_env_host_alias_value=$host_alias
-ac_env_target_alias_set=${target_alias+set}
-ac_env_target_alias_value=$target_alias
-ac_cv_env_target_alias_set=${target_alias+set}
-ac_cv_env_target_alias_value=$target_alias
-ac_env_PERL_set=${PERL+set}
-ac_env_PERL_value=$PERL
-ac_cv_env_PERL_set=${PERL+set}
-ac_cv_env_PERL_value=$PERL
-
-#
-# Report the --help message.
-#
-if test "$ac_init_help" = "long"; then
-  # Omit some internal or obsolete options to make the list less imposing.
-  # This message is too long to be a string in the A/UX 3.1 sh.
-  cat <<_ACEOF
-\`configure' configures RT 3.0.9 to adapt to many kinds of systems.
-
-Usage: $0 [OPTION]... [VAR=VALUE]...
-
-To assign environment variables (e.g., CC, CFLAGS...), specify them as
-VAR=VALUE.  See below for descriptions of some of the useful variables.
-
-Defaults for the options are specified in brackets.
-
-Configuration:
-  -h, --help              display this help and exit
-      --help=short        display options specific to this package
-      --help=recursive    display the short help of all the included packages
-  -V, --version           display version information and exit
-  -q, --quiet, --silent   do not print \`checking...' messages
-      --cache-file=FILE   cache test results in FILE [disabled]
-  -C, --config-cache      alias for \`--cache-file=config.cache'
-  -n, --no-create         do not create output files
-      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
-
-_ACEOF
-
-  cat <<_ACEOF
-Installation directories:
-  --prefix=PREFIX         install architecture-independent files in PREFIX
-                          [$ac_default_prefix]
-  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
-                          [PREFIX]
-
-By default, \`make install' will install all the files in
-\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
-an installation prefix other than \`$ac_default_prefix' using \`--prefix',
-for instance \`--prefix=\$HOME'.
-
-For better control, use the options below.
-
-Fine tuning of the installation directories:
-  --bindir=DIR           user executables [EPREFIX/bin]
-  --sbindir=DIR          system admin executables [EPREFIX/sbin]
-  --libexecdir=DIR       program executables [EPREFIX/libexec]
-  --datadir=DIR          read-only architecture-independent data [PREFIX/share]
-  --sysconfdir=DIR       read-only single-machine data [PREFIX/etc]
-  --sharedstatedir=DIR   modifiable architecture-independent data [PREFIX/com]
-  --localstatedir=DIR    modifiable single-machine data [PREFIX/var]
-  --libdir=DIR           object code libraries [EPREFIX/lib]
-  --includedir=DIR       C header files [PREFIX/include]
-  --oldincludedir=DIR    C header files for non-gcc [/usr/include]
-  --infodir=DIR          info documentation [PREFIX/info]
-  --mandir=DIR           man documentation [PREFIX/man]
-_ACEOF
-
-  cat <<\_ACEOF
-_ACEOF
-fi
-
-if test -n "$ac_init_help"; then
-  case $ac_init_help in
-     short | recursive ) echo "Configuration of RT 3.0.9:";;
-   esac
-  cat <<\_ACEOF
-
-Optional Features:
-  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
-  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --enable-layout=LAYOUT  Use a specific directory layout (Default: RT3)
-
-Optional Packages:
-  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
-  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
-  --with-speedycgi=/path/to/speedy 
-                          path to your speedycgi binary, if it exists
-  --with-rt-group=GROUP   group to own all files (default: rt)
-  --with-bin-owner=OWNER  user that will own rt binaries (default root)
-  --with-libs-owner=OWNER user that will own RT libraries (default root)
-  --with-libs-group=GROUP group that will own rt binaries (default bin)
-  --with-db-type=TYPE     sort of database RT will use (default: mysql)
-                          (mysql, Pg, Oracle and Informix are valid)
-  --with-db-host=HOSTNAME FQDN of database server (default: localhost)
-  --with-db-port=PORT     port on which the database listens on
-  --with-db-rt-host=HOSTNAME 
-                          FQDN of RT server which talks to the database server
-                          (default: localhost)
-  --with-db-dba=DBA       name of database administrator (default: root)
-  --with-db-database=DBNAME 
-                          name of the database to use (default: rt3)
-  --with-db-rt-user=DBUSER 
-                          name of database user (default: rt_user)
-  --with-db-rt-pass=PASSWORD 
-                          password for database user (default: rt_pass)
-  --with-web-user=USER    user the web server runs as (default: www)
-  --with-web-group=GROUP  group the web server runs as (default: www)
-  --with-my-user-group    set all users and groups to current user/group
-
-Some influential environment variables:
-  PERL        Perl interpreter command
-
-Use these variables to override the choices made by `configure' or to help
-it to find libraries and programs with nonstandard names/locations.
-
-Report bugs to <rt-3.0-bugs@fsck.com>.
-_ACEOF
-fi
-
-if test "$ac_init_help" = "recursive"; then
-  # If there are subdirs, report their specific --help.
-  ac_popdir=`pwd`
-  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
-    test -d $ac_dir || continue
-    ac_builddir=.
-
-if test "$ac_dir" != .; then
-  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
-  # A "../" for each directory in $ac_dir_suffix.
-  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
-else
-  ac_dir_suffix= ac_top_builddir=
-fi
-
-case $srcdir in
-  .)  # No --srcdir option.  We are building in place.
-    ac_srcdir=.
-    if test -z "$ac_top_builddir"; then
-       ac_top_srcdir=.
-    else
-       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
-    fi ;;
-  [\\/]* | ?:[\\/]* )  # Absolute path.
-    ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir ;;
-  *) # Relative path.
-    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_builddir$srcdir ;;
-esac
-# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
-# absolute.
-ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
-ac_abs_top_builddir=`cd "$ac_dir" && cd $ac_top_builddir && pwd`
-ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
-ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
-
-    cd $ac_dir
-    # Check for guested configure; otherwise get Cygnus style configure.
-    if test -f $ac_srcdir/configure.gnu; then
-      echo
-      $SHELL $ac_srcdir/configure.gnu  --help=recursive
-    elif test -f $ac_srcdir/configure; then
-      echo
-      $SHELL $ac_srcdir/configure  --help=recursive
-    elif test -f $ac_srcdir/configure.ac ||
-           test -f $ac_srcdir/configure.in; then
-      echo
-      $ac_configure --help
-    else
-      echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
-    fi
-    cd $ac_popdir
-  done
-fi
-
-test -n "$ac_init_help" && exit 0
-if $ac_init_version; then
-  cat <<\_ACEOF
-RT configure 3.0.9
-generated by GNU Autoconf 2.53
-
-Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002
-Free Software Foundation, Inc.
-This configure script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it.
-_ACEOF
-  exit 0
-fi
-exec 5>config.log
-cat >&5 <<_ACEOF
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-
-It was created by RT $as_me 3.0.9, which was
-generated by GNU Autoconf 2.53.  Invocation command line was
-
-  $ $0 $@
-
-_ACEOF
-{
-cat <<_ASUNAME
-@%:@@%:@ --------- @%:@@%:@
-@%:@@%:@ Platform. @%:@@%:@
-@%:@@%:@ --------- @%:@@%:@
-
-hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
-
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
-/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
-
-/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
-/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
-hostinfo               = `(hostinfo) 2>/dev/null               || echo unknown`
-/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
-/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
-/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
-
-_ASUNAME
-
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  echo "PATH: $as_dir"
-done
-
-} >&5
-
-cat >&5 <<_ACEOF
-
-
-@%:@@%:@ ----------- @%:@@%:@
-@%:@@%:@ Core tests. @%:@@%:@
-@%:@@%:@ ----------- @%:@@%:@
-
-_ACEOF
-
-
-# Keep a trace of the command line.
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Also quote any args containing shell meta-characters.
-ac_configure_args=
-ac_sep=
-for ac_arg
-do
-  case $ac_arg in
-  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
-  | --no-cr | --no-c | -n ) continue ;;
-  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
-    continue ;;
-  *" "*|*"     "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
-    ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
-  esac
-  case " $ac_configure_args " in
-    *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
-    *) ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'"
-       ac_sep=" " ;;
-  esac
-  # Get rid of the leading space.
-done
-
-# When interrupted or exit'd, cleanup temporary files, and complete
-# config.log.  We remove comments because anyway the quotes in there
-# would cause problems or look ugly.
-# WARNING: Be sure not to use single quotes in there, as some shells,
-# such as our DU 5.0 friend, will then `close' the trap.
-trap 'exit_status=$?
-  # Save into config.log some information that might help in debugging.
-  {
-    echo
-    cat <<\_ASBOX
-@%:@@%:@ ---------------- @%:@@%:@
-@%:@@%:@ Cache variables. @%:@@%:@
-@%:@@%:@ ---------------- @%:@@%:@
-_ASBOX
-    echo
-    # The following way of writing the cache mishandles newlines in values,
-{
-  (set) 2>&1 |
-    case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in
-    *ac_space=\ *)
-      sed -n \
-        "s/'"'"'/'"'"'\\\\'"'"''"'"'/g;
-         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p"
-      ;;
-    *)
-      sed -n \
-        "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
-      ;;
-    esac;
-}
-    echo
-    if test -s confdefs.h; then
-      cat <<\_ASBOX
-@%:@@%:@ ----------- @%:@@%:@
-@%:@@%:@ confdefs.h. @%:@@%:@
-@%:@@%:@ ----------- @%:@@%:@
-_ASBOX
-      echo
-      sed "/^$/d" confdefs.h
-      echo
-    fi
-    test "$ac_signal" != 0 &&
-      echo "$as_me: caught signal $ac_signal"
-    echo "$as_me: exit $exit_status"
-  } >&5
-  rm -f core core.* *.core &&
-  rm -rf conftest* confdefs* conf$$* $ac_clean_files &&
-    exit $exit_status
-     ' 0
-for ac_signal in 1 2 13 15; do
-  trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
-done
-ac_signal=0
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -rf conftest* confdefs.h
-# AIX cpp loses on an empty file, so make sure it contains at least a newline.
-echo >confdefs.h
-
-# Predefined preprocessor variables.
-
-cat >>confdefs.h <<_ACEOF
-@%:@define PACKAGE_NAME "$PACKAGE_NAME"
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME"
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define PACKAGE_VERSION "$PACKAGE_VERSION"
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define PACKAGE_STRING "$PACKAGE_STRING"
-_ACEOF
-
-
-cat >>confdefs.h <<_ACEOF
-@%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
-_ACEOF
-
-
-# Let the site file select an alternate cache file if it wants to.
-# Prefer explicitly selected file to automatically selected ones.
-if test -z "$CONFIG_SITE"; then
-  if test "x$prefix" != xNONE; then
-    CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
-  else
-    CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
-  fi
-fi
-for ac_site_file in $CONFIG_SITE; do
-  if test -r "$ac_site_file"; then
-    { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
-echo "$as_me: loading site script $ac_site_file" >&6;}
-    sed 's/^/| /' "$ac_site_file" >&5
-    . "$ac_site_file"
-  fi
-done
-
-if test -r "$cache_file"; then
-  # Some versions of bash will fail to source /dev/null (special
-  # files actually), so we avoid doing that.
-  if test -f "$cache_file"; then
-    { echo "$as_me:$LINENO: loading cache $cache_file" >&5
-echo "$as_me: loading cache $cache_file" >&6;}
-    case $cache_file in
-      [\\/]* | ?:[\\/]* ) . $cache_file;;
-      *)                      . ./$cache_file;;
-    esac
-  fi
-else
-  { echo "$as_me:$LINENO: creating cache $cache_file" >&5
-echo "$as_me: creating cache $cache_file" >&6;}
-  >$cache_file
-fi
-
-# Check that the precious variables saved in the cache have kept the same
-# value.
-ac_cache_corrupted=false
-for ac_var in `(set) 2>&1 |
-               sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do
-  eval ac_old_set=\$ac_cv_env_${ac_var}_set
-  eval ac_new_set=\$ac_env_${ac_var}_set
-  eval ac_old_val="\$ac_cv_env_${ac_var}_value"
-  eval ac_new_val="\$ac_env_${ac_var}_value"
-  case $ac_old_set,$ac_new_set in
-    set,)
-      { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
-      ac_cache_corrupted=: ;;
-    ,set)
-      { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
-echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
-      ac_cache_corrupted=: ;;
-    ,);;
-    *)
-      if test "x$ac_old_val" != "x$ac_new_val"; then
-        { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
-echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
-        { echo "$as_me:$LINENO:   former value:  $ac_old_val" >&5
-echo "$as_me:   former value:  $ac_old_val" >&2;}
-        { echo "$as_me:$LINENO:   current value: $ac_new_val" >&5
-echo "$as_me:   current value: $ac_new_val" >&2;}
-        ac_cache_corrupted=:
-      fi;;
-  esac
-  # Pass precious variables to config.status.
-  if test "$ac_new_set" = set; then
-    case $ac_new_val in
-    *" "*|*"   "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*)
-      ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
-    *) ac_arg=$ac_var=$ac_new_val ;;
-    esac
-    case " $ac_configure_args " in
-      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
-      *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
-    esac
-  fi
-done
-if $ac_cache_corrupted; then
-  { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
-echo "$as_me: error: changes in the environment can compromise the build" >&2;}
-  { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
-echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
-   { (exit 1); exit 1; }; }
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-rt_version_major=3
-
-rt_version_minor=0
-
-rt_version_patch=9
-
-test "x$rt_version_major" = 'x' && rt_version_major=0
-test "x$rt_version_minor" = 'x' && rt_version_minor=0
-test "x$rt_version_patch" = 'x' && rt_version_patch=0
-
-ac_aux_dir=
-for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
-  if test -f $ac_dir/install-sh; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install-sh -c"
-    break
-  elif test -f $ac_dir/install.sh; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install.sh -c"
-    break
-  elif test -f $ac_dir/shtool; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/shtool install -c"
-    break
-  fi
-done
-if test -z "$ac_aux_dir"; then
-  { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5
-echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-ac_config_guess="$SHELL $ac_aux_dir/config.guess"
-ac_config_sub="$SHELL $ac_aux_dir/config.sub"
-ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure.
-
-# Find a good install program.  We prefer a C program (faster),
-# so one script is as good as another.  But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AmigaOS /C/install, which installs bootblocks on floppy discs
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# ./install, which can be erroneously created by make from ./install.sh.
-echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
-echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6
-if test -z "$INSTALL"; then
-if test "${ac_cv_path_install+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  # Account for people who put trailing slashes in PATH elements.
-case $as_dir/ in
-  ./ | .// | /cC/* | \
-  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
-  /usr/ucb/* ) ;;
-  *)
-    # OSF1 and SCO ODT 3.0 have their own names for install.
-    # Don't use installbsd from OSF since it installs stuff as root
-    # by default.
-    for ac_prog in ginstall scoinst install; do
-      for ac_exec_ext in '' $ac_executable_extensions; do
-        if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
-          if test $ac_prog = install &&
-            grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-            # AIX install.  It has an incompatible calling convention.
-            :
-          elif test $ac_prog = install &&
-            grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
-            # program-specific install script used by HP pwplus--don't use.
-            :
-          else
-            ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
-            break 3
-          fi
-        fi
-      done
-    done
-    ;;
-esac
-done
-
-
-fi
-  if test "${ac_cv_path_install+set}" = set; then
-    INSTALL=$ac_cv_path_install
-  else
-    # As a last resort, use the slow shell script.  We don't cache a
-    # path for INSTALL within a source directory, because that will
-    # break other packages using the cache if that directory is
-    # removed, or if the path is relative.
-    INSTALL=$ac_install_sh
-  fi
-fi
-echo "$as_me:$LINENO: result: $INSTALL" >&5
-echo "${ECHO_T}$INSTALL" >&6
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-
-# Extract the first word of "perl", so it can be a program name with args.
-set dummy perl; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_PERL+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  case $PERL in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_PERL="$PERL" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-  test -z "$ac_cv_path_PERL" && ac_cv_path_PERL="not found"
-  ;;
-esac
-fi
-PERL=$ac_cv_path_PERL
-
-if test -n "$PERL"; then
-  echo "$as_me:$LINENO: result: $PERL" >&5
-echo "${ECHO_T}$PERL" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-if test "$PERL" = 'not found'; then
-       { { echo "$as_me:$LINENO: error: cannot use $PACKAGE_NAME without perl" >&5
-echo "$as_me: error: cannot use $PACKAGE_NAME without perl" >&2;}
-   { (exit 1); exit 1; }; }
-fi
-
-# Check whether --with-speedycgi or --without-speedycgi was given.
-if test "${with_speedycgi+set}" = set; then
-  withval="$with_speedycgi"
-  SPEEDY_BIN=$withval
-else
-  SPEEDY_BIN=/usr/local/bin/speedy
-fi;  
-
-
-
-
-
-# Check whether --enable-layout or --disable-layout was given.
-if test "${enable_layout+set}" = set; then
-  enableval="$enable_layout"
-  LAYOUT=$enableval
-fi; 
-
-if test "x$LAYOUT" = "x"; then
-       LAYOUT="RT3"
-fi
-
-       if test ! -f $srcdir/config.layout; then
-               { echo "$as_me:$LINENO: WARNING: Layout file $srcdir/config.layout not found" >&5
-echo "$as_me: WARNING: Layout file $srcdir/config.layout not found" >&2;}
-               rt_layout_name=no
-       else
-               pldconf=./config.pld
-               $PERL  -0777 -p -e "\$layout = '$LAYOUT';"  -e '
-               s/.*<Layout\s+$layout>//gims; 
-               s/\<\/Layout\>.*//s; 
-               s/^#.*$//m;
-               s/^\s+//gim;
-               s/\s+$/\n/gim;
-               s/\+$/\/rt3/gim;
-               # m4 will not let us just use $srcdir/config.layout, we need @S|@1
-               s/^\s*((?:bin|sbin|libexec|data|sysconf|sharedstate|localstate|lib|include|oldinclude|info|man)dir)\s*:\s*(.*)$/@S|@1=@S|@2/gim;
-               s/^\s*(.*?)\s*:\s*(.*)$/\(test "x\@S|@@S|@1" = "xNONE" || test "x\@S|@@S|@1" = "x") && @S|@1=@S|@2/gim;
-                ' < $srcdir/config.layout > $pldconf
-
-               if test -s $pldconf; then
-                       rt_layout_name=$LAYOUT
-                       . $pldconf
-                       
-                       for var in prefix exec_prefix bindir sbindir \
-                                sysconfdir mandir libdir datadir htmldir \
-                                localstatedir logfiledir masonstatedir \
-                                sessionstatedir customdir custometcdir customhtmldir \
-                                customlexdir customlibdir manualdir; do
-                               eval "val=\"\$$var\""
-                               val=`echo $val | sed -e 's:\(.\)/*$:\1:'`
-                               val=`echo $val | 
-                                       sed -e 's:[\$]\([a-z_]*\):$\1:g'`
-                               eval "$var='$val'"
-                       done
-                       
-               else
-                       rt_layout_name=no
-               fi
-               #rm $pldconf
-       fi
-       
-       
-       ap_last=''
-       ap_cur='$prefix'
-       while test "x${ap_cur}" != "x${ap_last}"; do
-               ap_last="${ap_cur}"
-               ap_cur=`eval "echo ${ap_cur}"`
-       done
-       exp_prefix="${ap_cur}"
-
-       
-       
-
-       
-       
-       ap_last=''
-       ap_cur='$exec_prefix'
-       while test "x${ap_cur}" != "x${ap_last}"; do
-               ap_last="${ap_cur}"
-               ap_cur=`eval "echo ${ap_cur}"`
-       done
-       exp_exec_prefix="${ap_cur}"
-
-       
-       
-
-       
-       
-       ap_last=''
-       ap_cur='$bindir'
-       while test "x${ap_cur}" != "x${ap_last}"; do
-               ap_last="${ap_cur}"
-               ap_cur=`eval "echo ${ap_cur}"`
-       done
-       exp_bindir="${ap_cur}"
-
-       
-       
-
-       
-       
-       ap_last=''
-       ap_cur='$sbindir'
-       while test "x${ap_cur}" != "x${ap_last}"; do
-               ap_last="${ap_cur}"
-               ap_cur=`eval "echo ${ap_cur}"`
-       done
-       exp_sbindir="${ap_cur}"
-
-       
-       
-
-       
-       
-       ap_last=''
-       ap_cur='$sysconfdir'
-       while test "x${ap_cur}" != "x${ap_last}"; do
-               ap_last="${ap_cur}"
-               ap_cur=`eval "echo ${ap_cur}"`
-       done
-       exp_sysconfdir="${ap_cur}"
-
-       
-       
-
-       
-       
-       ap_last=''
-       ap_cur='$mandir'
-       while test "x${ap_cur}" != "x${ap_last}"; do
-               ap_last="${ap_cur}"
-               ap_cur=`eval "echo ${ap_cur}"`
-       done
-       exp_mandir="${ap_cur}"
-
-       
-       
-
-       
-       
-       ap_last=''
-       ap_cur='$libdir'
-       while test "x${ap_cur}" != "x${ap_last}"; do
-               ap_last="${ap_cur}"
-               ap_cur=`eval "echo ${ap_cur}"`
-       done
-       exp_libdir="${ap_cur}"
-
-       
-       
-
-       
-       
-       ap_last=''
-       ap_cur='$datadir'
-       while test "x${ap_cur}" != "x${ap_last}"; do
-               ap_last="${ap_cur}"
-               ap_cur=`eval "echo ${ap_cur}"`
-       done
-       exp_datadir="${ap_cur}"
-
-       
-       
-
-       
-       
-       ap_last=''
-       ap_cur='$htmldir'
-       while test "x${ap_cur}" != "x${ap_last}"; do
-               ap_last="${ap_cur}"
-               ap_cur=`eval "echo ${ap_cur}"`
-       done
-       exp_htmldir="${ap_cur}"
-
-       
-       
-
-       
-       
-       ap_last=''
-       ap_cur='$manualdir'
-       while test "x${ap_cur}" != "x${ap_last}"; do
-               ap_last="${ap_cur}"
-               ap_cur=`eval "echo ${ap_cur}"`
-       done
-       exp_manualdir="${ap_cur}"
-
-       
-       
-
-       
-       
-       ap_last=''
-       ap_cur='$localstatedir'
-       while test "x${ap_cur}" != "x${ap_last}"; do
-               ap_last="${ap_cur}"
-               ap_cur=`eval "echo ${ap_cur}"`
-       done
-       exp_localstatedir="${ap_cur}"
-
-       
-       
-
-       
-       
-       ap_last=''
-       ap_cur='$logfiledir'
-       while test "x${ap_cur}" != "x${ap_last}"; do
-               ap_last="${ap_cur}"
-               ap_cur=`eval "echo ${ap_cur}"`
-       done
-       exp_logfiledir="${ap_cur}"
-
-       
-       
-
-       
-       
-       ap_last=''
-       ap_cur='$masonstatedir'
-       while test "x${ap_cur}" != "x${ap_last}"; do
-               ap_last="${ap_cur}"
-               ap_cur=`eval "echo ${ap_cur}"`
-       done
-       exp_masonstatedir="${ap_cur}"
-
-       
-       
-
-       
-       
-       ap_last=''
-       ap_cur='$sessionstatedir'
-       while test "x${ap_cur}" != "x${ap_last}"; do
-               ap_last="${ap_cur}"
-               ap_cur=`eval "echo ${ap_cur}"`
-       done
-       exp_sessionstatedir="${ap_cur}"
-
-       
-       
-
-       
-       
-       ap_last=''
-       ap_cur='$customdir'
-       while test "x${ap_cur}" != "x${ap_last}"; do
-               ap_last="${ap_cur}"
-               ap_cur=`eval "echo ${ap_cur}"`
-       done
-       exp_customdir="${ap_cur}"
-
-       
-       
-
-       
-       
-       ap_last=''
-       ap_cur='$custometcdir'
-       while test "x${ap_cur}" != "x${ap_last}"; do
-               ap_last="${ap_cur}"
-               ap_cur=`eval "echo ${ap_cur}"`
-       done
-       exp_custometcdir="${ap_cur}"
-
-       
-       
-
-       
-       
-       ap_last=''
-       ap_cur='$customhtmldir'
-       while test "x${ap_cur}" != "x${ap_last}"; do
-               ap_last="${ap_cur}"
-               ap_cur=`eval "echo ${ap_cur}"`
-       done
-       exp_customhtmldir="${ap_cur}"
-
-       
-       
-
-       
-       
-       ap_last=''
-       ap_cur='$customlexdir'
-       while test "x${ap_cur}" != "x${ap_last}"; do
-               ap_last="${ap_cur}"
-               ap_cur=`eval "echo ${ap_cur}"`
-       done
-       exp_customlexdir="${ap_cur}"
-
-       
-       
-
-       
-       
-       ap_last=''
-       ap_cur='$customlibdir'
-       while test "x${ap_cur}" != "x${ap_last}"; do
-               ap_last="${ap_cur}"
-               ap_cur=`eval "echo ${ap_cur}"`
-       done
-       exp_customlibdir="${ap_cur}"
-
-       
-       
-
-
-echo "$as_me:$LINENO: checking for chosen layout" >&5
-echo $ECHO_N "checking for chosen layout... $ECHO_C" >&6
-if test "x$rt_layout_name" = "xno"; then
-       if test "x$LAYOUT" = "xno"; then
-               echo "$as_me:$LINENO: result: none" >&5
-echo "${ECHO_T}none" >&6
-       else
-               echo "$as_me:$LINENO: result: $LAYOUT" >&5
-echo "${ECHO_T}$LAYOUT" >&6
-       fi
-       { { echo "$as_me:$LINENO: error: a valid layout must be specified (or the default used)" >&5
-echo "$as_me: error: a valid layout must be specified (or the default used)" >&2;}
-   { (exit 1); exit 1; }; }
-else
-       
-       echo "$as_me:$LINENO: result: $rt_layout_name" >&5
-echo "${ECHO_T}$rt_layout_name" >&6
-fi
-
-
-
-# Check whether --with-rt-group or --without-rt-group was given.
-if test "${with_rt_group+set}" = set; then
-  withval="$with_rt_group"
-  RTGROUP=$withval
-else
-  RTGROUP=rt
-fi; 
-
-
-
-# Check whether --with-bin-owner or --without-bin-owner was given.
-if test "${with_bin_owner+set}" = set; then
-  withval="$with_bin_owner"
-  BIN_OWNER=$withval
-else
-  BIN_OWNER=root
-fi; 
-
-
-
-# Check whether --with-libs-owner or --without-libs-owner was given.
-if test "${with_libs_owner+set}" = set; then
-  withval="$with_libs_owner"
-  LIBS_OWNER=$withval
-else
-  LIBS_OWNER=root
-fi; 
-
-
-
-# Check whether --with-libs-group or --without-libs-group was given.
-if test "${with_libs_group+set}" = set; then
-  withval="$with_libs_group"
-  LIBS_GROUP=$withval
-else
-  LIBS_GROUP=bin
-fi; 
-
-
-
-# Check whether --with-db-type or --without-db-type was given.
-if test "${with_db_type+set}" = set; then
-  withval="$with_db_type"
-  DB_TYPE=$withval
-else
-  DB_TYPE=mysql
-fi; 
-if test "$DB_TYPE" != 'mysql' -a "$DB_TYPE" != 'Pg' -a "$DB_TYPE" != 'SQLite' -a "$DB_TYPE" != 'Oracle' -a "$DB_TYPE" != 'Informix' ; then
-       { { echo "$as_me:$LINENO: error: Only Oracle, Informix, Pg and mysql are valid db types" >&5
-echo "$as_me: error: Only Oracle, Informix, Pg and mysql are valid db types" >&2;}
-   { (exit 1); exit 1; }; }
-fi
-
-
-if test "$DB_TYPE" = 'Oracle'; then
-       test "x$ORACLE_HOME" = 'x' && { { echo "$as_me:$LINENO: error: Please declare the ORACLE_HOME environment variable" >&5
-echo "$as_me: error: Please declare the ORACLE_HOME environment variable" >&2;}
-   { (exit 1); exit 1; }; }
-       ORACLE_ENV_PREF="\$ENV{'ORACLE_HOME'} = '$ORACLE_HOME';"
-fi
-
-
-
-# Check whether --with-db-host or --without-db-host was given.
-if test "${with_db_host+set}" = set; then
-  withval="$with_db_host"
-  DB_HOST=$withval
-else
-  DB_HOST=localhost
-fi; 
-
-
-
-# Check whether --with-db-port or --without-db-port was given.
-if test "${with_db_port+set}" = set; then
-  withval="$with_db_port"
-  DB_PORT=$withval
-else
-  DB_PORT=
-fi; 
-
-
-
-# Check whether --with-db-rt-host or --without-db-rt-host was given.
-if test "${with_db_rt_host+set}" = set; then
-  withval="$with_db_rt_host"
-  DB_RT_HOST=$withval
-else
-  DB_RT_HOST=localhost
-fi; 
-
-
-
-# Check whether --with-db-dba or --without-db-dba was given.
-if test "${with_db_dba+set}" = set; then
-  withval="$with_db_dba"
-  DB_DBA=$withval
-else
-  DB_DBA=root
-fi; 
-
-
-
-# Check whether --with-db-database or --without-db-database was given.
-if test "${with_db_database+set}" = set; then
-  withval="$with_db_database"
-  DB_DATABASE=$withval
-else
-  DB_DATABASE=rt3
-fi; 
-
-
-
-# Check whether --with-db-rt-user or --without-db-rt-user was given.
-if test "${with_db_rt_user+set}" = set; then
-  withval="$with_db_rt_user"
-  DB_RT_USER=$withval
-else
-  DB_RT_USER=rt_user
-fi; 
-
-
-
-# Check whether --with-db-rt-pass or --without-db-rt-pass was given.
-if test "${with_db_rt_pass+set}" = set; then
-  withval="$with_db_rt_pass"
-  DB_RT_PASS=$withval
-else
-  DB_RT_PASS=rt_pass
-fi; 
-
-
-
-# Check whether --with-web-user or --without-web-user was given.
-if test "${with_web_user+set}" = set; then
-  withval="$with_web_user"
-  WEB_USER=$withval
-else
-  WEB_USER=www
-fi; 
-
-
-
-# Check whether --with-web-group or --without-web-group was given.
-if test "${with_web_group+set}" = set; then
-  withval="$with_web_group"
-  WEB_GROUP=$withval
-else
-  WEB_GROUP=www
-fi; 
-
-
-my_group=$(groups|cut -f1 -d' ')
-
-# Check whether --with-my-user-group or --without-my-user-group was given.
-if test "${with_my_user_group+set}" = set; then
-  withval="$with_my_user_group"
-  RTGROUP=$my_group
-            BIN_OWNER=$USER
-            LIBS_OWNER=$USER
-            LIBS_GROUP=$my_group
-            WEB_USER=$USER
-            WEB_GROUP=$my_group
-fi; 
-
-
-RT_VERSION_MAJOR=${rt_version_major}
-
-RT_VERSION_MINOR=${rt_version_minor}
-
-RT_VERSION_PATCH=${rt_version_patch}
-
-
-RT_PATH=${exp_prefix}
-
-RT_DOC_PATH=${exp_manualdir}
-
-RT_LOCAL_PATH=${exp_customdir}
-
-RT_LIB_PATH=${exp_libdir}
-
-RT_ETC_PATH=${exp_sysconfdir}
-
-CONFIG_FILE_PATH=${exp_sysconfdir}
-
-RT_BIN_PATH=${exp_bindir}
-
-RT_SBIN_PATH=${exp_sbindir}
-
-RT_VAR_PATH=${exp_localstatedir}
-
-RT_MAN_PATH=${exp_mandir}
-
-MASON_DATA_PATH=${exp_masonstatedir}
-
-MASON_SESSION_PATH=${exp_sessionstatedir}
-
-MASON_HTML_PATH=${exp_htmldir}
-
-LOCAL_ETC_PATH=${exp_custometcdir}
-
-MASON_LOCAL_HTML_PATH=${exp_customhtmldir}
-
-LOCAL_LEXICON_PATH=${exp_customlexdir}
-
-LOCAL_LIB_PATH=${exp_customlibdir}
-
-DESTDIR=${exp_prefix}
-
-RT_LOG_PATH=${exp_logfiledir}
-
-
-
-ac_config_files="$ac_config_files sbin/rt-setup-database sbin/rt-test-dependencies Makefile etc/RT_Config.pm lib/RT.pm lib/t/00smoke.t lib/t/01harness.t lib/t/02regression.t lib/t/03web.pl lib/t/04_send_email.pl bin/mason_handler.fcgi bin/mason_handler.scgi bin/mason_handler.svc bin/rt-commit-handler bin/rt-crontool bin/rt-mailgate bin/rt bin/webmux.pl"
-
-cat >confcache <<\_ACEOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs, see configure's option --config-cache.
-# It is not useful on other systems.  If it contains results you don't
-# want to keep, you may remove or edit it.
-#
-# config.status only pays attention to the cache file if you give it
-# the --recheck option to rerun configure.
-#
-# `ac_cv_env_foo' variables (set or unset) will be overriden when
-# loading this file, other *unset* `ac_cv_foo' will be assigned the
-# following values.
-
-_ACEOF
-
-# The following way of writing the cache mishandles newlines in values,
-# but we know of no workaround that is simple, portable, and efficient.
-# So, don't put newlines in cache variables' values.
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-{
-  (set) 2>&1 |
-    case `(ac_space=' '; set | grep ac_space) 2>&1` in
-    *ac_space=\ *)
-      # `set' does not quote correctly, so add quotes (double-quote
-      # substitution turns \\\\ into \\, and sed turns \\ into \).
-      sed -n \
-        "s/'/'\\\\''/g;
-         s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
-      ;;
-    *)
-      # `set' quotes correctly as required by POSIX, so do not add quotes.
-      sed -n \
-        "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p"
-      ;;
-    esac;
-} |
-  sed '
-     t clear
-     : clear
-     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
-     t end
-     /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
-     : end' >>confcache
-if cmp -s $cache_file confcache; then :; else
-  if test -w $cache_file; then
-    test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file"
-    cat confcache >$cache_file
-  else
-    echo "not updating unwritable cache $cache_file"
-  fi
-fi
-rm -f confcache
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-# VPATH may cause trouble with some makes, so we remove $(srcdir),
-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
-# trailing colons and then remove the whole line if VPATH becomes empty
-# (actually we leave an empty line to preserve line numbers).
-if test "x$srcdir" = x.; then
-  ac_vpsub='/^[        ]*VPATH[        ]*=/{
-s/:*\$(srcdir):*/:/;
-s/:*\${srcdir}:*/:/;
-s/:*@srcdir@:*/:/;
-s/^\([^=]*=[   ]*\):*/\1/;
-s/:*$//;
-s/^[^=]*=[     ]*$//;
-}'
-fi
-
-# Transform confdefs.h into DEFS.
-# Protect against shell expansion while executing Makefile rules.
-# Protect against Makefile macro expansion.
-#
-# If the first sed substitution is executed (which looks for macros that
-# take arguments), then we branch to the quote section.  Otherwise,
-# look for a macro that doesn't take arguments.
-cat >confdef2opt.sed <<\_ACEOF
-t clear
-: clear
-s,^[   ]*#[    ]*define[       ][      ]*\([^  (][^    (]*([^)]*)\)[   ]*\(.*\),-D\1=\2,g
-t quote
-s,^[   ]*#[    ]*define[       ][      ]*\([^  ][^     ]*\)[   ]*\(.*\),-D\1=\2,g
-t quote
-d
-: quote
-s,[    `~#$^&*(){}\\|;'"<>?],\\&,g
-s,\[,\\&,g
-s,\],\\&,g
-s,\$,$$,g
-p
-_ACEOF
-# We use echo to avoid assuming a particular line-breaking character.
-# The extra dot is to prevent the shell from consuming trailing
-# line-breaks from the sub-command output.  A line-break within
-# single-quotes doesn't work because, if this script is created in a
-# platform that uses two characters for line-breaks (e.g., DOS), tr
-# would break.
-ac_LF_and_DOT=`echo; echo .`
-DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'`
-rm -f confdef2opt.sed
-
-
-
-: ${CONFIG_STATUS=./config.status}
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
-echo "$as_me: creating $CONFIG_STATUS" >&6;}
-cat >$CONFIG_STATUS <<_ACEOF
-#! $SHELL
-# Generated by $as_me.
-# Run this file to recreate the current configuration.
-# Compiler output produced by configure, useful for debugging
-# configure, is in config.log if it exists.
-
-debug=false
-SHELL=\${CONFIG_SHELL-$SHELL}
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF
-
-## --------------------- ##
-## M4sh Initialization.  ##
-## --------------------- ##
-
-# Be Bourne compatible
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
-  emulate sh
-  NULLCMD=:
-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
-  set -o posix
-fi
-
-# NLS nuisances.
-# Support unset when possible.
-if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
-  as_unset=unset
-else
-  as_unset=false
-fi
-
-(set +x; test -n "`(LANG=C; export LANG) 2>&1`") &&
-    { $as_unset LANG || test "${LANG+set}" != set; } ||
-      { LANG=C; export LANG; }
-(set +x; test -n "`(LC_ALL=C; export LC_ALL) 2>&1`") &&
-    { $as_unset LC_ALL || test "${LC_ALL+set}" != set; } ||
-      { LC_ALL=C; export LC_ALL; }
-(set +x; test -n "`(LC_TIME=C; export LC_TIME) 2>&1`") &&
-    { $as_unset LC_TIME || test "${LC_TIME+set}" != set; } ||
-      { LC_TIME=C; export LC_TIME; }
-(set +x; test -n "`(LC_CTYPE=C; export LC_CTYPE) 2>&1`") &&
-    { $as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set; } ||
-      { LC_CTYPE=C; export LC_CTYPE; }
-(set +x; test -n "`(LANGUAGE=C; export LANGUAGE) 2>&1`") &&
-    { $as_unset LANGUAGE || test "${LANGUAGE+set}" != set; } ||
-      { LANGUAGE=C; export LANGUAGE; }
-(set +x; test -n "`(LC_COLLATE=C; export LC_COLLATE) 2>&1`") &&
-    { $as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set; } ||
-      { LC_COLLATE=C; export LC_COLLATE; }
-(set +x; test -n "`(LC_NUMERIC=C; export LC_NUMERIC) 2>&1`") &&
-    { $as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set; } ||
-      { LC_NUMERIC=C; export LC_NUMERIC; }
-(set +x; test -n "`(LC_MESSAGES=C; export LC_MESSAGES) 2>&1`") &&
-    { $as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set; } ||
-      { LC_MESSAGES=C; export LC_MESSAGES; }
-
-
-# Name of the executable.
-as_me=`(basename "$0") 2>/dev/null ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-        X"$0" : 'X\(//\)$' \| \
-        X"$0" : 'X\(/\)$' \| \
-        .     : '\(.\)' 2>/dev/null ||
-echo X/"$0" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
-         /^X\/\(\/\/\)$/{ s//\1/; q; }
-         /^X\/\(\/\).*/{ s//\1/; q; }
-         s/.*/./; q'`
-
-# PATH needs CR, and LINENO needs CR and PATH.
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  echo "#! /bin/sh" >conftest.sh
-  echo  "exit 0"   >>conftest.sh
-  chmod +x conftest.sh
-  if (PATH=".;."; conftest.sh) >/dev/null 2>&1; then
-    PATH_SEPARATOR=';'
-  else
-    PATH_SEPARATOR=:
-  fi
-  rm -f conftest.sh
-fi
-
-
-  as_lineno_1=$LINENO
-  as_lineno_2=$LINENO
-  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
-  test "x$as_lineno_1" != "x$as_lineno_2" &&
-  test "x$as_lineno_3"  = "x$as_lineno_2"  || {
-  # Find who we are.  Look in the path if we contain no path at all
-  # relative or not.
-  case $0 in
-    *[\\/]* ) as_myself=$0 ;;
-    *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-done
-
-       ;;
-  esac
-  # We did not find ourselves, most probably we were run as `sh COMMAND'
-  # in which case we are not to be found in the path.
-  if test "x$as_myself" = x; then
-    as_myself=$0
-  fi
-  if test ! -f "$as_myself"; then
-    { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
-echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
-   { (exit 1); exit 1; }; }
-  fi
-  case $CONFIG_SHELL in
-  '')
-    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for as_base in sh bash ksh sh5; do
-        case $as_dir in
-        /*)
-          if ("$as_dir/$as_base" -c '
-  as_lineno_1=$LINENO
-  as_lineno_2=$LINENO
-  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
-  test "x$as_lineno_1" != "x$as_lineno_2" &&
-  test "x$as_lineno_3"  = "x$as_lineno_2" ') 2>/dev/null; then
-            CONFIG_SHELL=$as_dir/$as_base
-            export CONFIG_SHELL
-            exec "$CONFIG_SHELL" "$0" ${1+"$@"}
-          fi;;
-        esac
-       done
-done
-;;
-  esac
-
-  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
-  # uniformly replaced by the line number.  The first 'sed' inserts a
-  # line-number line before each line; the second 'sed' does the real
-  # work.  The second script uses 'N' to pair each line-number line
-  # with the numbered line, and appends trailing '-' during
-  # substitution so that $LINENO is not a special case at line end.
-  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
-  # second 'sed' script.  Blame Lee E. McMahon for sed's syntax.  :-)
-  sed '=' <$as_myself |
-    sed '
-      N
-      s,$,-,
-      : loop
-      s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
-      t loop
-      s,-$,,
-      s,^['$as_cr_digits']*\n,,
-    ' >$as_me.lineno &&
-  chmod +x $as_me.lineno ||
-    { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
-echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
-   { (exit 1); exit 1; }; }
-
-  # Don't try to exec as it changes $[0], causing all sort of problems
-  # (the dirname of $[0] is not the place where we might find the
-  # original and so on.  Autoconf is especially sensible to this).
-  . ./$as_me.lineno
-  # Exit status is that of the last command.
-  exit
-}
-
-
-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
-  *c*,-n*) ECHO_N= ECHO_C='
-' ECHO_T='     ' ;;
-  *c*,*  ) ECHO_N=-n ECHO_C= ECHO_T= ;;
-  *)       ECHO_N= ECHO_C='\c' ECHO_T= ;;
-esac
-
-if expr a : '\(a\)' >/dev/null 2>&1; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-rm -f conf$$ conf$$.exe conf$$.file
-echo >conf$$.file
-if ln -s conf$$.file conf$$ 2>/dev/null; then
-  # We could just check for DJGPP; but this test a) works b) is more generic
-  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
-  if test -f conf$$.exe; then
-    # Don't use ln at all; we don't have any links
-    as_ln_s='cp -p'
-  else
-    as_ln_s='ln -s'
-  fi
-elif ln conf$$.file conf$$ 2>/dev/null; then
-  as_ln_s=ln
-else
-  as_ln_s='cp -p'
-fi
-rm -f conf$$ conf$$.exe conf$$.file
-
-as_executable_p="test -f"
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
-
-
-# IFS
-# We need space, tab and new line, in precisely that order.
-as_nl='
-'
-IFS="  $as_nl"
-
-# CDPATH.
-$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=$PATH_SEPARATOR; export CDPATH; }
-
-exec 6>&1
-
-# Open the log real soon, to keep \$[0] and so on meaningful, and to
-# report actual input values of CONFIG_FILES etc. instead of their
-# values after options handling.  Logging --version etc. is OK.
-exec 5>>config.log
-{
-  echo
-  sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX
-@%:@@%:@ Running $as_me. @%:@@%:@
-_ASBOX
-} >&5
-cat >&5 <<_CSEOF
-
-This file was extended by RT $as_me 3.0.9, which was
-generated by GNU Autoconf 2.53.  Invocation command line was
-
-  CONFIG_FILES    = $CONFIG_FILES
-  CONFIG_HEADERS  = $CONFIG_HEADERS
-  CONFIG_LINKS    = $CONFIG_LINKS
-  CONFIG_COMMANDS = $CONFIG_COMMANDS
-  $ $0 $@
-
-_CSEOF
-echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
-echo >&5
-_ACEOF
-
-# Files that config.status was made for.
-if test -n "$ac_config_files"; then
-  echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS
-fi
-
-if test -n "$ac_config_headers"; then
-  echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS
-fi
-
-if test -n "$ac_config_links"; then
-  echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS
-fi
-
-if test -n "$ac_config_commands"; then
-  echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS
-fi
-
-cat >>$CONFIG_STATUS <<\_ACEOF
-
-ac_cs_usage="\
-\`$as_me' instantiates files from templates according to the
-current configuration.
-
-Usage: $0 [OPTIONS] [FILE]...
-
-  -h, --help       print this help, then exit
-  -V, --version    print version number, then exit
-  -d, --debug      don't remove temporary files
-      --recheck    update $as_me by reconfiguring in the same conditions
-  --file=FILE[:TEMPLATE]
-                   instantiate the configuration file FILE
-
-Configuration files:
-$config_files
-
-Report bugs to <bug-autoconf@gnu.org>."
-_ACEOF
-
-cat >>$CONFIG_STATUS <<_ACEOF
-ac_cs_version="\\
-RT config.status 3.0.9
-configured by $0, generated by GNU Autoconf 2.53,
-  with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
-
-Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
-Free Software Foundation, Inc.
-This config.status script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it."
-srcdir=$srcdir
-INSTALL="$INSTALL"
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF
-# If no file are specified by the user, then we need to provide default
-# value.  By we need to know if files were specified by the user.
-ac_need_defaults=:
-while test $# != 0
-do
-  case $1 in
-  --*=*)
-    ac_option=`expr "x$1" : 'x\([^=]*\)='`
-    ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
-    shift
-    set dummy "$ac_option" "$ac_optarg" ${1+"$@"}
-    shift
-    ;;
-  -*);;
-  *) # This is not an option, so the user has probably given explicit
-     # arguments.
-     ac_need_defaults=false;;
-  esac
-
-  case $1 in
-  # Handling of the options.
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF
-  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
-    echo "running $SHELL $0 " $ac_configure_args " --no-create --no-recursion"
-    exec $SHELL $0 $ac_configure_args --no-create --no-recursion ;;
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
-  --version | --vers* | -V )
-    echo "$ac_cs_version"; exit 0 ;;
-  --he | --h)
-    # Conflict between --help and --header
-    { { echo "$as_me:$LINENO: error: ambiguous option: $1
-Try \`$0 --help' for more information." >&5
-echo "$as_me: error: ambiguous option: $1
-Try \`$0 --help' for more information." >&2;}
-   { (exit 1); exit 1; }; };;
-  --help | --hel | -h )
-    echo "$ac_cs_usage"; exit 0 ;;
-  --debug | --d* | -d )
-    debug=: ;;
-  --file | --fil | --fi | --f )
-    shift
-    CONFIG_FILES="$CONFIG_FILES $1"
-    ac_need_defaults=false;;
-  --header | --heade | --head | --hea )
-    shift
-    CONFIG_HEADERS="$CONFIG_HEADERS $1"
-    ac_need_defaults=false;;
-
-  # This is an error.
-  -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
-Try \`$0 --help' for more information." >&5
-echo "$as_me: error: unrecognized option: $1
-Try \`$0 --help' for more information." >&2;}
-   { (exit 1); exit 1; }; } ;;
-
-  *) ac_config_targets="$ac_config_targets $1" ;;
-
-  esac
-  shift
-done
-
-_ACEOF
-
-
-
-
-
-cat >>$CONFIG_STATUS <<\_ACEOF
-for ac_config_target in $ac_config_targets
-do
-  case "$ac_config_target" in
-  # Handling of arguments.
-  "sbin/rt-setup-database" ) CONFIG_FILES="$CONFIG_FILES sbin/rt-setup-database" ;;
-  "sbin/rt-test-dependencies" ) CONFIG_FILES="$CONFIG_FILES sbin/rt-test-dependencies" ;;
-  "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
-  "etc/RT_Config.pm" ) CONFIG_FILES="$CONFIG_FILES etc/RT_Config.pm" ;;
-  "lib/RT.pm" ) CONFIG_FILES="$CONFIG_FILES lib/RT.pm" ;;
-  "lib/t/00smoke.t" ) CONFIG_FILES="$CONFIG_FILES lib/t/00smoke.t" ;;
-  "lib/t/01harness.t" ) CONFIG_FILES="$CONFIG_FILES lib/t/01harness.t" ;;
-  "lib/t/02regression.t" ) CONFIG_FILES="$CONFIG_FILES lib/t/02regression.t" ;;
-  "lib/t/03web.pl" ) CONFIG_FILES="$CONFIG_FILES lib/t/03web.pl" ;;
-  "lib/t/04_send_email.pl" ) CONFIG_FILES="$CONFIG_FILES lib/t/04_send_email.pl" ;;
-  "bin/mason_handler.fcgi" ) CONFIG_FILES="$CONFIG_FILES bin/mason_handler.fcgi" ;;
-  "bin/mason_handler.scgi" ) CONFIG_FILES="$CONFIG_FILES bin/mason_handler.scgi" ;;
-  "bin/mason_handler.svc" ) CONFIG_FILES="$CONFIG_FILES bin/mason_handler.svc" ;;
-  "bin/rt-commit-handler" ) CONFIG_FILES="$CONFIG_FILES bin/rt-commit-handler" ;;
-  "bin/rt-crontool" ) CONFIG_FILES="$CONFIG_FILES bin/rt-crontool" ;;
-  "bin/rt-mailgate" ) CONFIG_FILES="$CONFIG_FILES bin/rt-mailgate" ;;
-  "bin/rt" ) CONFIG_FILES="$CONFIG_FILES bin/rt" ;;
-  "bin/webmux.pl" ) CONFIG_FILES="$CONFIG_FILES bin/webmux.pl" ;;
-  *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
-echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
-   { (exit 1); exit 1; }; };;
-  esac
-done
-
-# If the user did not use the arguments to specify the items to instantiate,
-# then the envvar interface is used.  Set only those that are not.
-# We use the long form for the default assignment because of an extremely
-# bizarre bug on SunOS 4.1.3.
-if $ac_need_defaults; then
-  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
-fi
-
-# Create a temporary directory, and hook for its removal unless debugging.
-$debug ||
-{
-  trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
-  trap '{ (exit 1); exit 1; }' 1 2 13 15
-}
-
-# Create a (secure) tmp directory for tmp files.
-: ${TMPDIR=/tmp}
-{
-  tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` &&
-  test -n "$tmp" && test -d "$tmp"
-}  ||
-{
-  tmp=$TMPDIR/cs$$-$RANDOM
-  (umask 077 && mkdir $tmp)
-} ||
-{
-   echo "$me: cannot create a temporary directory in $TMPDIR" >&2
-   { (exit 1); exit 1; }
-}
-
-_ACEOF
-
-cat >>$CONFIG_STATUS <<_ACEOF
-
-#
-# CONFIG_FILES section.
-#
-
-# No need to generate the scripts if there are no CONFIG_FILES.
-# This happens for instance when ./config.status config.h
-if test -n "\$CONFIG_FILES"; then
-  # Protect against being on the right side of a sed subst in config.status.
-  sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g;
-   s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF
-s,@SHELL@,$SHELL,;t t
-s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t
-s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t
-s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t
-s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t
-s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t
-s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t
-s,@exec_prefix@,$exec_prefix,;t t
-s,@prefix@,$prefix,;t t
-s,@program_transform_name@,$program_transform_name,;t t
-s,@bindir@,$bindir,;t t
-s,@sbindir@,$sbindir,;t t
-s,@libexecdir@,$libexecdir,;t t
-s,@datadir@,$datadir,;t t
-s,@sysconfdir@,$sysconfdir,;t t
-s,@sharedstatedir@,$sharedstatedir,;t t
-s,@localstatedir@,$localstatedir,;t t
-s,@libdir@,$libdir,;t t
-s,@includedir@,$includedir,;t t
-s,@oldincludedir@,$oldincludedir,;t t
-s,@infodir@,$infodir,;t t
-s,@mandir@,$mandir,;t t
-s,@build_alias@,$build_alias,;t t
-s,@host_alias@,$host_alias,;t t
-s,@target_alias@,$target_alias,;t t
-s,@DEFS@,$DEFS,;t t
-s,@ECHO_C@,$ECHO_C,;t t
-s,@ECHO_N@,$ECHO_N,;t t
-s,@ECHO_T@,$ECHO_T,;t t
-s,@LIBS@,$LIBS,;t t
-s,@rt_version_major@,$rt_version_major,;t t
-s,@rt_version_minor@,$rt_version_minor,;t t
-s,@rt_version_patch@,$rt_version_patch,;t t
-s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
-s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
-s,@INSTALL_DATA@,$INSTALL_DATA,;t t
-s,@PERL@,$PERL,;t t
-s,@SPEEDY_BIN@,$SPEEDY_BIN,;t t
-s,@exp_prefix@,$exp_prefix,;t t
-s,@exp_exec_prefix@,$exp_exec_prefix,;t t
-s,@exp_bindir@,$exp_bindir,;t t
-s,@exp_sbindir@,$exp_sbindir,;t t
-s,@exp_sysconfdir@,$exp_sysconfdir,;t t
-s,@exp_mandir@,$exp_mandir,;t t
-s,@exp_libdir@,$exp_libdir,;t t
-s,@exp_datadir@,$exp_datadir,;t t
-s,@htmldir@,$htmldir,;t t
-s,@exp_htmldir@,$exp_htmldir,;t t
-s,@manualdir@,$manualdir,;t t
-s,@exp_manualdir@,$exp_manualdir,;t t
-s,@exp_localstatedir@,$exp_localstatedir,;t t
-s,@logfiledir@,$logfiledir,;t t
-s,@exp_logfiledir@,$exp_logfiledir,;t t
-s,@masonstatedir@,$masonstatedir,;t t
-s,@exp_masonstatedir@,$exp_masonstatedir,;t t
-s,@sessionstatedir@,$sessionstatedir,;t t
-s,@exp_sessionstatedir@,$exp_sessionstatedir,;t t
-s,@customdir@,$customdir,;t t
-s,@exp_customdir@,$exp_customdir,;t t
-s,@custometcdir@,$custometcdir,;t t
-s,@exp_custometcdir@,$exp_custometcdir,;t t
-s,@customhtmldir@,$customhtmldir,;t t
-s,@exp_customhtmldir@,$exp_customhtmldir,;t t
-s,@customlexdir@,$customlexdir,;t t
-s,@exp_customlexdir@,$exp_customlexdir,;t t
-s,@customlibdir@,$customlibdir,;t t
-s,@exp_customlibdir@,$exp_customlibdir,;t t
-s,@rt_layout_name@,$rt_layout_name,;t t
-s,@RTGROUP@,$RTGROUP,;t t
-s,@BIN_OWNER@,$BIN_OWNER,;t t
-s,@LIBS_OWNER@,$LIBS_OWNER,;t t
-s,@LIBS_GROUP@,$LIBS_GROUP,;t t
-s,@DB_TYPE@,$DB_TYPE,;t t
-s,@ORACLE_ENV_PREF@,$ORACLE_ENV_PREF,;t t
-s,@DB_HOST@,$DB_HOST,;t t
-s,@DB_PORT@,$DB_PORT,;t t
-s,@DB_RT_HOST@,$DB_RT_HOST,;t t
-s,@DB_DBA@,$DB_DBA,;t t
-s,@DB_DATABASE@,$DB_DATABASE,;t t
-s,@DB_RT_USER@,$DB_RT_USER,;t t
-s,@DB_RT_PASS@,$DB_RT_PASS,;t t
-s,@WEB_USER@,$WEB_USER,;t t
-s,@WEB_GROUP@,$WEB_GROUP,;t t
-s,@RT_VERSION_MAJOR@,$RT_VERSION_MAJOR,;t t
-s,@RT_VERSION_MINOR@,$RT_VERSION_MINOR,;t t
-s,@RT_VERSION_PATCH@,$RT_VERSION_PATCH,;t t
-s,@RT_PATH@,$RT_PATH,;t t
-s,@RT_DOC_PATH@,$RT_DOC_PATH,;t t
-s,@RT_LOCAL_PATH@,$RT_LOCAL_PATH,;t t
-s,@RT_LIB_PATH@,$RT_LIB_PATH,;t t
-s,@RT_ETC_PATH@,$RT_ETC_PATH,;t t
-s,@CONFIG_FILE_PATH@,$CONFIG_FILE_PATH,;t t
-s,@RT_BIN_PATH@,$RT_BIN_PATH,;t t
-s,@RT_SBIN_PATH@,$RT_SBIN_PATH,;t t
-s,@RT_VAR_PATH@,$RT_VAR_PATH,;t t
-s,@RT_MAN_PATH@,$RT_MAN_PATH,;t t
-s,@MASON_DATA_PATH@,$MASON_DATA_PATH,;t t
-s,@MASON_SESSION_PATH@,$MASON_SESSION_PATH,;t t
-s,@MASON_HTML_PATH@,$MASON_HTML_PATH,;t t
-s,@LOCAL_ETC_PATH@,$LOCAL_ETC_PATH,;t t
-s,@MASON_LOCAL_HTML_PATH@,$MASON_LOCAL_HTML_PATH,;t t
-s,@LOCAL_LEXICON_PATH@,$LOCAL_LEXICON_PATH,;t t
-s,@LOCAL_LIB_PATH@,$LOCAL_LIB_PATH,;t t
-s,@DESTDIR@,$DESTDIR,;t t
-s,@RT_LOG_PATH@,$RT_LOG_PATH,;t t
-CEOF
-
-_ACEOF
-
-  cat >>$CONFIG_STATUS <<\_ACEOF
-  # Split the substitutions into bite-sized pieces for seds with
-  # small command number limits, like on Digital OSF/1 and HP-UX.
-  ac_max_sed_lines=48
-  ac_sed_frag=1 # Number of current file.
-  ac_beg=1 # First line for current file.
-  ac_end=$ac_max_sed_lines # Line after last line for current file.
-  ac_more_lines=:
-  ac_sed_cmds=
-  while $ac_more_lines; do
-    if test $ac_beg -gt 1; then
-      sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
-    else
-      sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
-    fi
-    if test ! -s $tmp/subs.frag; then
-      ac_more_lines=false
-    else
-      # The purpose of the label and of the branching condition is to
-      # speed up the sed processing (if there are no `@' at all, there
-      # is no need to browse any of the substitutions).
-      # These are the two extra sed commands mentioned above.
-      (echo ':t
-  /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
-      if test -z "$ac_sed_cmds"; then
-       ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
-      else
-       ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
-      fi
-      ac_sed_frag=`expr $ac_sed_frag + 1`
-      ac_beg=$ac_end
-      ac_end=`expr $ac_end + $ac_max_sed_lines`
-    fi
-  done
-  if test -z "$ac_sed_cmds"; then
-    ac_sed_cmds=cat
-  fi
-fi # test -n "$CONFIG_FILES"
-
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
-for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
-  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
-  case $ac_file in
-  - | *:- | *:-:* ) # input from stdin
-        cat >$tmp/stdin
-        ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
-        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
-  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
-        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
-  * )   ac_file_in=$ac_file.in ;;
-  esac
-
-  # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
-  ac_dir=`(dirname "$ac_file") 2>/dev/null ||
-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-         X"$ac_file" : 'X\(//\)[^/]' \| \
-         X"$ac_file" : 'X\(//\)$' \| \
-         X"$ac_file" : 'X\(/\)' \| \
-         .     : '\(.\)' 2>/dev/null ||
-echo X"$ac_file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-         /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-         /^X\(\/\/\)$/{ s//\1/; q; }
-         /^X\(\/\).*/{ s//\1/; q; }
-         s/.*/./; q'`
-  { case "$ac_dir" in
-  [\\/]* | ?:[\\/]* ) as_incr_dir=;;
-  *)                      as_incr_dir=.;;
-esac
-as_dummy="$ac_dir"
-for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do
-  case $as_mkdir_dir in
-    # Skip DOS drivespec
-    ?:) as_incr_dir=$as_mkdir_dir ;;
-    *)
-      as_incr_dir=$as_incr_dir/$as_mkdir_dir
-      test -d "$as_incr_dir" ||
-        mkdir "$as_incr_dir" ||
-       { { echo "$as_me:$LINENO: error: cannot create \"$ac_dir\"" >&5
-echo "$as_me: error: cannot create \"$ac_dir\"" >&2;}
-   { (exit 1); exit 1; }; }
-    ;;
-  esac
-done; }
-
-  ac_builddir=.
-
-if test "$ac_dir" != .; then
-  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
-  # A "../" for each directory in $ac_dir_suffix.
-  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
-else
-  ac_dir_suffix= ac_top_builddir=
-fi
-
-case $srcdir in
-  .)  # No --srcdir option.  We are building in place.
-    ac_srcdir=.
-    if test -z "$ac_top_builddir"; then
-       ac_top_srcdir=.
-    else
-       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
-    fi ;;
-  [\\/]* | ?:[\\/]* )  # Absolute path.
-    ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir ;;
-  *) # Relative path.
-    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_builddir$srcdir ;;
-esac
-# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
-# absolute.
-ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
-ac_abs_top_builddir=`cd "$ac_dir" && cd $ac_top_builddir && pwd`
-ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
-ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
-
-
-  case $INSTALL in
-  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
-  *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
-  esac
-
-  if test x"$ac_file" != x-; then
-    { echo "$as_me:$LINENO: creating $ac_file" >&5
-echo "$as_me: creating $ac_file" >&6;}
-    rm -f "$ac_file"
-  fi
-  # Let's still pretend it is `configure' which instantiates (i.e., don't
-  # use $as_me), people would be surprised to read:
-  #    /* config.h.  Generated by config.status.  */
-  if test x"$ac_file" = x-; then
-    configure_input=
-  else
-    configure_input="$ac_file.  "
-  fi
-  configure_input=$configure_input"Generated from `echo $ac_file_in |
-                                     sed 's,.*/,,'` by configure."
-
-  # First look for the input files in the build tree, otherwise in the
-  # src tree.
-  ac_file_inputs=`IFS=:
-    for f in $ac_file_in; do
-      case $f in
-      -) echo $tmp/stdin ;;
-      [\\/$]*)
-         # Absolute (can't be DOS-style, as IFS=:)
-         test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
-echo "$as_me: error: cannot find input file: $f" >&2;}
-   { (exit 1); exit 1; }; }
-         echo $f;;
-      *) # Relative
-         if test -f "$f"; then
-           # Build tree
-           echo $f
-         elif test -f "$srcdir/$f"; then
-           # Source tree
-           echo $srcdir/$f
-         else
-           # /dev/null tree
-           { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
-echo "$as_me: error: cannot find input file: $f" >&2;}
-   { (exit 1); exit 1; }; }
-         fi;;
-      esac
-    done` || { (exit 1); exit 1; }
-_ACEOF
-cat >>$CONFIG_STATUS <<_ACEOF
-  sed "$ac_vpsub
-$extrasub
-_ACEOF
-cat >>$CONFIG_STATUS <<\_ACEOF
-:t
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-s,@configure_input@,$configure_input,;t t
-s,@srcdir@,$ac_srcdir,;t t
-s,@abs_srcdir@,$ac_abs_srcdir,;t t
-s,@top_srcdir@,$ac_top_srcdir,;t t
-s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t
-s,@builddir@,$ac_builddir,;t t
-s,@abs_builddir@,$ac_abs_builddir,;t t
-s,@top_builddir@,$ac_top_builddir,;t t
-s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
-s,@INSTALL@,$ac_INSTALL,;t t
-" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
-  rm -f $tmp/stdin
-  if test x"$ac_file" != x-; then
-    mv $tmp/out $ac_file
-  else
-    cat $tmp/out
-    rm -f $tmp/out
-  fi
-
-done
-_ACEOF
-
-cat >>$CONFIG_STATUS <<\_ACEOF
-
-{ (exit 0); exit 0; }
-_ACEOF
-chmod +x $CONFIG_STATUS
-ac_clean_files=$ac_clean_files_save
-
-
-# configure is writing to config.log, and then calls config.status.
-# config.status does its own redirection, appending to config.log.
-# Unfortunately, on DOS this fails, as config.log is still kept open
-# by configure, so config.status won't be able to write to it; its
-# output is simply discarded.  So we exec the FD to /dev/null,
-# effectively closing config.log, so it can be properly (re)opened and
-# appended to by config.status.  When coming back to configure, we
-# need to make the FD available again.
-if test "$no_create" != yes; then
-  ac_cs_success=:
-  exec 5>/dev/null
-  $SHELL $CONFIG_STATUS || ac_cs_success=false
-  exec 5>>config.log
-  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
-  # would make configure fail if this is the last instruction.
-  $ac_cs_success || { (exit 1); exit 1; }
-fi
-
diff --git a/rt/autom4te.cache/requests b/rt/autom4te.cache/requests
deleted file mode 100644 (file)
index fad7b54..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-# This file was created by autom4te.
-# It contains the lists of macros which have been traced.
-# It can be safely removed.
-
-@request = (
-             bless( [
-                      '0',
-                      1,
-                      [
-                        '/usr/share/autoconf'
-                      ],
-                      [
-                        '--reload-state=/usr/share/autoconf/autoconf/autoconf.m4f',
-                        'aclocal.m4',
-                        'configure.ac'
-                      ],
-                      {
-                        'AC_HEADER_STAT' => 1,
-                        'AC_FUNC_STRFTIME' => 1,
-                        'AC_PROG_RANLIB' => 1,
-                        'AC_FUNC_WAIT3' => 1,
-                        'AC_FUNC_SETPGRP' => 1,
-                        'AC_HEADER_TIME' => 1,
-                        'AC_FUNC_SETVBUF_REVERSED' => 1,
-                        'AC_HEADER_SYS_WAIT' => 1,
-                        'AC_TYPE_UID_T' => 1,
-                        'AM_CONDITIONAL' => 1,
-                        'AC_CHECK_LIB' => 1,
-                        'AC_PROG_LN_S' => 1,
-                        'AC_FUNC_MEMCMP' => 1,
-                        'AC_FUNC_FORK' => 1,
-                        'AC_FUNC_GETGROUPS' => 1,
-                        'AC_HEADER_MAJOR' => 1,
-                        'AC_FUNC_STRTOD' => 1,
-                        'AC_HEADER_DIRENT' => 1,
-                        'AC_FUNC_UTIME_NULL' => 1,
-                        'AC_CONFIG_FILES' => 1,
-                        'AC_FUNC_ALLOCA' => 1,
-                        'AC_C_CONST' => 1,
-                        'include' => 1,
-                        'AC_FUNC_OBSTACK' => 1,
-                        'AC_FUNC_LSTAT' => 1,
-                        'AC_STRUCT_TIMEZONE' => 1,
-                        'AC_FUNC_GETPGRP' => 1,
-                        'AC_DEFINE_TRACE_LITERAL' => 1,
-                        'AC_CHECK_HEADERS' => 1,
-                        'AC_TYPE_MODE_T' => 1,
-                        'AC_CHECK_TYPES' => 1,
-                        'AC_PROG_YACC' => 1,
-                        'AC_TYPE_PID_T' => 1,
-                        'AC_FUNC_STRERROR_R' => 1,
-                        'AC_STRUCT_ST_BLOCKS' => 1,
-                        'AC_PROG_GCC_TRADITIONAL' => 1,
-                        'AC_TYPE_SIGNAL' => 1,
-                        'AC_FUNC_FNMATCH' => 1,
-                        'AC_PROG_CPP' => 1,
-                        'AM_PROG_LIBTOOL' => 1,
-                        'AC_FUNC_STAT' => 1,
-                        'AC_PROG_INSTALL' => 1,
-                        'AM_GNU_GETTEXT' => 1,
-                        'AC_FUNC_STRCOLL' => 1,
-                        'AC_LIBSOURCE' => 1,
-                        'AC_C_INLINE' => 1,
-                        'AC_FUNC_CHOWN' => 1,
-                        'AC_PROG_LEX' => 1,
-                        'AH_OUTPUT' => 1,
-                        'AC_HEADER_STDC' => 1,
-                        'AC_FUNC_GETLOADAVG' => 1,
-                        'AC_CHECK_FUNCS' => 1,
-                        'AC_TYPE_SIZE_T' => 1,
-                        'AC_DECL_SYS_SIGLIST' => 1,
-                        'AC_FUNC_MKTIME' => 1,
-                        'AC_PROG_MAKE_SET' => 1,
-                        'AC_PROG_CXX' => 1,
-                        'm4_pattern_allow' => 1,
-                        'm4_include' => 1,
-                        'm4_pattern_forbid' => 1,
-                        'AC_PROG_AWK' => 1,
-                        'AC_FUNC_VPRINTF' => 1,
-                        'AC_CONFIG_HEADERS' => 1,
-                        'AC_PATH_X' => 1,
-                        'AC_TYPE_OFF_T' => 1,
-                        'AC_FUNC_MALLOC' => 1,
-                        'AC_FUNC_ERROR_AT_LINE' => 1,
-                        'AC_FUNC_FSEEKO' => 1,
-                        'AC_FUNC_MMAP' => 1,
-                        'AC_STRUCT_TM' => 1,
-                        'AC_SUBST' => 1,
-                        'AC_PROG_CC' => 1,
-                        'AC_PROG_LIBTOOL' => 1
-                      }
-                    ], 'Request' )
-           );
-
diff --git a/rt/autom4te.cache/traces.0 b/rt/autom4te.cache/traces.0
deleted file mode 100644 (file)
index f132762..0000000
+++ /dev/null
@@ -1,158 +0,0 @@
-m4trace:configure.ac:9: -1- m4_pattern_forbid([^_?A[CHUM]_])
-m4trace:configure.ac:9: -1- m4_pattern_forbid([_AC_])
-m4trace:configure.ac:9: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs. LIBOBJS'])
-m4trace:configure.ac:9: -1- m4_pattern_allow([^AS_FLAGS$])
-m4trace:configure.ac:9: -1- m4_pattern_forbid([^_?m4_])
-m4trace:configure.ac:9: -1- m4_pattern_forbid([^dnl$])
-m4trace:configure.ac:9: -1- m4_pattern_forbid([^_?AS_])
-m4trace:configure.ac:9: -1- AC_SUBST([SHELL], [${CONFIG_SHELL-/bin/sh}])
-m4trace:configure.ac:9: -1- AC_SUBST([PATH_SEPARATOR])
-m4trace:configure.ac:9: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME],      ['AC_PACKAGE_NAME'])])
-m4trace:configure.ac:9: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME],   ['AC_PACKAGE_TARNAME'])])
-m4trace:configure.ac:9: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION],   ['AC_PACKAGE_VERSION'])])
-m4trace:configure.ac:9: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING],    ['AC_PACKAGE_STRING'])])
-m4trace:configure.ac:9: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])])
-m4trace:configure.ac:9: -1- AC_SUBST([exec_prefix], [NONE])
-m4trace:configure.ac:9: -1- AC_SUBST([prefix], [NONE])
-m4trace:configure.ac:9: -1- AC_SUBST([program_transform_name], [s,x,x,])
-m4trace:configure.ac:9: -1- AC_SUBST([bindir], ['${exec_prefix}/bin'])
-m4trace:configure.ac:9: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin'])
-m4trace:configure.ac:9: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec'])
-m4trace:configure.ac:9: -1- AC_SUBST([datadir], ['${prefix}/share'])
-m4trace:configure.ac:9: -1- AC_SUBST([sysconfdir], ['${prefix}/etc'])
-m4trace:configure.ac:9: -1- AC_SUBST([sharedstatedir], ['${prefix}/com'])
-m4trace:configure.ac:9: -1- AC_SUBST([localstatedir], ['${prefix}/var'])
-m4trace:configure.ac:9: -1- AC_SUBST([libdir], ['${exec_prefix}/lib'])
-m4trace:configure.ac:9: -1- AC_SUBST([includedir], ['${prefix}/include'])
-m4trace:configure.ac:9: -1- AC_SUBST([oldincludedir], ['/usr/include'])
-m4trace:configure.ac:9: -1- AC_SUBST([infodir], ['${prefix}/info'])
-m4trace:configure.ac:9: -1- AC_SUBST([mandir], ['${prefix}/man'])
-m4trace:configure.ac:9: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME])
-m4trace:configure.ac:9: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */
-#undef PACKAGE_NAME])
-m4trace:configure.ac:9: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME])
-m4trace:configure.ac:9: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */
-#undef PACKAGE_TARNAME])
-m4trace:configure.ac:9: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION])
-m4trace:configure.ac:9: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */
-#undef PACKAGE_VERSION])
-m4trace:configure.ac:9: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING])
-m4trace:configure.ac:9: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */
-#undef PACKAGE_STRING])
-m4trace:configure.ac:9: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT])
-m4trace:configure.ac:9: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */
-#undef PACKAGE_BUGREPORT])
-m4trace:configure.ac:9: -1- AC_SUBST([build_alias])
-m4trace:configure.ac:9: -1- AC_SUBST([host_alias])
-m4trace:configure.ac:9: -1- AC_SUBST([target_alias])
-m4trace:configure.ac:9: -1- AC_SUBST([DEFS])
-m4trace:configure.ac:9: -1- AC_SUBST([ECHO_C])
-m4trace:configure.ac:9: -1- AC_SUBST([ECHO_N])
-m4trace:configure.ac:9: -1- AC_SUBST([ECHO_T])
-m4trace:configure.ac:9: -1- AC_SUBST([LIBS])
-m4trace:configure.ac:14: -1- AC_SUBST([rt_version_major], [3])
-m4trace:configure.ac:16: -1- AC_SUBST([rt_version_minor], [0])
-m4trace:configure.ac:18: -1- AC_SUBST([rt_version_patch], [9])
-m4trace:configure.ac:24: -1- AC_PROG_INSTALL
-m4trace:configure.ac:24: -1- AC_SUBST([INSTALL_PROGRAM])
-m4trace:configure.ac:24: -1- AC_SUBST([INSTALL_SCRIPT])
-m4trace:configure.ac:24: -1- AC_SUBST([INSTALL_DATA])
-m4trace:configure.ac:25: -1- AC_SUBST([PERL])
-m4trace:configure.ac:26: -1- AC_SUBST([PERL], [$ac_cv_path_PERL])
-m4trace:configure.ac:36: -1- AC_SUBST([SPEEDY_BIN])
-m4trace:configure.ac:41: -1- AC_SUBST([prefix])
-m4trace:configure.ac:41: -1- AC_SUBST([exp_prefix])
-m4trace:configure.ac:41: -1- AC_SUBST([exec_prefix])
-m4trace:configure.ac:41: -1- AC_SUBST([exp_exec_prefix])
-m4trace:configure.ac:41: -1- AC_SUBST([bindir])
-m4trace:configure.ac:41: -1- AC_SUBST([exp_bindir])
-m4trace:configure.ac:41: -1- AC_SUBST([sbindir])
-m4trace:configure.ac:41: -1- AC_SUBST([exp_sbindir])
-m4trace:configure.ac:41: -1- AC_SUBST([sysconfdir])
-m4trace:configure.ac:41: -1- AC_SUBST([exp_sysconfdir])
-m4trace:configure.ac:41: -1- AC_SUBST([mandir])
-m4trace:configure.ac:41: -1- AC_SUBST([exp_mandir])
-m4trace:configure.ac:41: -1- AC_SUBST([libdir])
-m4trace:configure.ac:41: -1- AC_SUBST([exp_libdir])
-m4trace:configure.ac:41: -1- AC_SUBST([datadir])
-m4trace:configure.ac:41: -1- AC_SUBST([exp_datadir])
-m4trace:configure.ac:41: -1- AC_SUBST([htmldir])
-m4trace:configure.ac:41: -1- AC_SUBST([exp_htmldir])
-m4trace:configure.ac:41: -1- AC_SUBST([manualdir])
-m4trace:configure.ac:41: -1- AC_SUBST([exp_manualdir])
-m4trace:configure.ac:41: -1- AC_SUBST([localstatedir])
-m4trace:configure.ac:41: -1- AC_SUBST([exp_localstatedir])
-m4trace:configure.ac:41: -1- AC_SUBST([logfiledir])
-m4trace:configure.ac:41: -1- AC_SUBST([exp_logfiledir])
-m4trace:configure.ac:41: -1- AC_SUBST([masonstatedir])
-m4trace:configure.ac:41: -1- AC_SUBST([exp_masonstatedir])
-m4trace:configure.ac:41: -1- AC_SUBST([sessionstatedir])
-m4trace:configure.ac:41: -1- AC_SUBST([exp_sessionstatedir])
-m4trace:configure.ac:41: -1- AC_SUBST([customdir])
-m4trace:configure.ac:41: -1- AC_SUBST([exp_customdir])
-m4trace:configure.ac:41: -1- AC_SUBST([custometcdir])
-m4trace:configure.ac:41: -1- AC_SUBST([exp_custometcdir])
-m4trace:configure.ac:41: -1- AC_SUBST([customhtmldir])
-m4trace:configure.ac:41: -1- AC_SUBST([exp_customhtmldir])
-m4trace:configure.ac:41: -1- AC_SUBST([customlexdir])
-m4trace:configure.ac:41: -1- AC_SUBST([exp_customlexdir])
-m4trace:configure.ac:41: -1- AC_SUBST([customlibdir])
-m4trace:configure.ac:41: -1- AC_SUBST([exp_customlibdir])
-m4trace:configure.ac:41: -1- AC_SUBST([rt_layout_name])
-m4trace:configure.ac:49: -1- AC_SUBST([RTGROUP])
-m4trace:configure.ac:57: -1- AC_SUBST([BIN_OWNER])
-m4trace:configure.ac:65: -1- AC_SUBST([LIBS_OWNER])
-m4trace:configure.ac:73: -1- AC_SUBST([LIBS_GROUP])
-m4trace:configure.ac:84: -1- AC_SUBST([DB_TYPE])
-m4trace:configure.ac:91: -1- AC_SUBST([ORACLE_ENV_PREF])
-m4trace:configure.ac:99: -1- AC_SUBST([DB_HOST])
-m4trace:configure.ac:107: -1- AC_SUBST([DB_PORT])
-m4trace:configure.ac:115: -1- AC_SUBST([DB_RT_HOST])
-m4trace:configure.ac:123: -1- AC_SUBST([DB_DBA])
-m4trace:configure.ac:131: -1- AC_SUBST([DB_DATABASE])
-m4trace:configure.ac:139: -1- AC_SUBST([DB_RT_USER])
-m4trace:configure.ac:147: -1- AC_SUBST([DB_RT_PASS])
-m4trace:configure.ac:155: -1- AC_SUBST([WEB_USER])
-m4trace:configure.ac:163: -1- AC_SUBST([WEB_GROUP])
-m4trace:configure.ac:182: -1- AC_SUBST([RT_VERSION_MAJOR], [${rt_version_major}])
-m4trace:configure.ac:183: -1- AC_SUBST([RT_VERSION_MINOR], [${rt_version_minor}])
-m4trace:configure.ac:184: -1- AC_SUBST([RT_VERSION_PATCH], [${rt_version_patch}])
-m4trace:configure.ac:187: -1- AC_SUBST([RT_PATH], [${exp_prefix}])
-m4trace:configure.ac:188: -1- AC_SUBST([RT_DOC_PATH], [${exp_manualdir}])
-m4trace:configure.ac:189: -1- AC_SUBST([RT_LOCAL_PATH], [${exp_customdir}])
-m4trace:configure.ac:190: -1- AC_SUBST([RT_LIB_PATH], [${exp_libdir}])
-m4trace:configure.ac:191: -1- AC_SUBST([RT_ETC_PATH], [${exp_sysconfdir}])
-m4trace:configure.ac:192: -1- AC_SUBST([CONFIG_FILE_PATH], [${exp_sysconfdir}])
-m4trace:configure.ac:193: -1- AC_SUBST([RT_BIN_PATH], [${exp_bindir}])
-m4trace:configure.ac:194: -1- AC_SUBST([RT_SBIN_PATH], [${exp_sbindir}])
-m4trace:configure.ac:195: -1- AC_SUBST([RT_VAR_PATH], [${exp_localstatedir}])
-m4trace:configure.ac:196: -1- AC_SUBST([RT_MAN_PATH], [${exp_mandir}])
-m4trace:configure.ac:197: -1- AC_SUBST([MASON_DATA_PATH], [${exp_masonstatedir}])
-m4trace:configure.ac:198: -1- AC_SUBST([MASON_SESSION_PATH], [${exp_sessionstatedir}])
-m4trace:configure.ac:199: -1- AC_SUBST([MASON_HTML_PATH], [${exp_htmldir}])
-m4trace:configure.ac:200: -1- AC_SUBST([LOCAL_ETC_PATH], [${exp_custometcdir}])
-m4trace:configure.ac:201: -1- AC_SUBST([MASON_LOCAL_HTML_PATH], [${exp_customhtmldir}])
-m4trace:configure.ac:202: -1- AC_SUBST([LOCAL_LEXICON_PATH], [${exp_customlexdir}])
-m4trace:configure.ac:203: -1- AC_SUBST([LOCAL_LIB_PATH], [${exp_customlibdir}])
-m4trace:configure.ac:204: -1- AC_SUBST([DESTDIR], [${exp_prefix}])
-m4trace:configure.ac:205: -1- AC_SUBST([RT_LOG_PATH], [${exp_logfiledir}])
-m4trace:configure.ac:228: -1- AC_CONFIG_FILES([
-                sbin/rt-setup-database
-                 sbin/rt-test-dependencies
-                 Makefile
-                etc/RT_Config.pm
-                lib/RT.pm
-                 lib/t/00smoke.t
-                 lib/t/01harness.t
-                 lib/t/02regression.t
-                 lib/t/03web.pl
-                 lib/t/04_send_email.pl
-                bin/mason_handler.fcgi
-                bin/mason_handler.scgi
-                bin/mason_handler.svc
-                bin/rt-commit-handler
-                bin/rt-crontool
-                bin/rt-mailgate
-                bin/rt
-                bin/webmux.pl
-                ])
diff --git a/rt/bin/mason_handler.fcgi b/rt/bin/mason_handler.fcgi
deleted file mode 100755 (executable)
index 93d1f88..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-#!/usr/bin/perl
-# BEGIN LICENSE BLOCK
-# 
-# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com>
-# 
-# (Except where explictly superceded by other copyright notices)
-# 
-# This work is made available to you under the terms of Version 2 of
-# the GNU General Public License. A copy of that license should have
-# been provided with this software, but in any event can be snarfed
-# from www.gnu.org.
-# 
-# This work is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-# 
-# Unless otherwise specified, all modifications, corrections or
-# extensions to this work which alter its source code become the
-# property of Best Practical Solutions, LLC when submitted for
-# inclusion in the work.
-# 
-# 
-# END LICENSE BLOCK
-
-use strict;
-use File::Basename;
-require ('/opt/rt3/bin/webmux.pl');
-
-my $h = &RT::Interface::Web::NewCGIHandler(@RT::MasonParameters);
-
-# Enter CGI::Fast mode, which should also work as a vanilla CGI script.
-require CGI::Fast;
-
-RT::Init();
-
-# Response loop
-while ( my $cgi = CGI::Fast->new ) {
-    # the whole point of fastcgi requires the env to get reset here..
-    # So we must squash it again
-    $ENV{'PATH'}   = '/bin:/usr/bin';
-    $ENV{'CDPATH'} = '' if defined $ENV{'CDPATH'};
-    $ENV{'SHELL'}  = '/bin/sh' if defined $ENV{'SHELL'};
-    $ENV{'ENV'}    = '' if defined $ENV{'ENV'};
-    $ENV{'IFS'}    = '' if defined $ENV{'IFS'};
-
-    RT::ConnectToDatabase();
-
-    if ( ( !$h->interp->comp_exists( $cgi->path_info ) )
-        && ( $h->interp->comp_exists( $cgi->path_info . "/index.html" ) ) ) {
-        $cgi->path_info( $cgi->path_info . "/index.html" );
-    }
-
-    eval { $h->handle_cgi_object($cgi); };
-    if ($@) {
-        $RT::Logger->crit($@);
-    }
-
-
-    if ($RT::Handle->TransactionDepth) {
-        $RT::Handle->ForceRollback;
-        $RT::Logger->crit("Transaction not committed. Usually indicates a software fault. Data loss may have occurred") ;
-    }
-
-
-}
-
-1;
diff --git a/rt/bin/mason_handler.scgi b/rt/bin/mason_handler.scgi
deleted file mode 100755 (executable)
index 7774189..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/usr/local/bin/speedy
-# BEGIN LICENSE BLOCK
-# 
-# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com>
-# 
-# (Except where explictly superceded by other copyright notices)
-# 
-# This work is made available to you under the terms of Version 2 of
-# the GNU General Public License. A copy of that license should have
-# been provided with this software, but in any event can be snarfed
-# from www.gnu.org.
-# 
-# This work is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-# 
-# Unless otherwise specified, all modifications, corrections or
-# extensions to this work which alter its source code become the
-# property of Best Practical Solutions, LLC when submitted for
-# inclusion in the work.
-# 
-# 
-# END LICENSE BLOCK
-
-use strict;
-require ('/opt/rt3/bin/webmux.pl');
-
-my $h = &RT::Interface::Web::NewCGIHandler(@RT::MasonParameters);
-
-require CGI;
-
-RT::Init();
-
-my $cgi = CGI->new;
-if ( ( !$h->interp->comp_exists( $cgi->path_info ) )
-    && ( $h->interp->comp_exists( $cgi->path_info . "/index.html" ) ) ) {
-    $cgi->path_info( $cgi->path_info . "/index.html" );
-}
-
-$h->handle_cgi_object($cgi);
-
-1;
diff --git a/rt/bin/mason_handler.svc b/rt/bin/mason_handler.svc
deleted file mode 100644 (file)
index c05d21e..0000000
+++ /dev/null
@@ -1,234 +0,0 @@
-#!/usr/bin/perl
-# BEGIN LICENSE BLOCK
-# 
-# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com>
-# 
-# (Except where explictly superceded by other copyright notices)
-# 
-# This work is made available to you under the terms of Version 2 of
-# the GNU General Public License. A copy of that license should have
-# been provided with this software, but in any event can be snarfed
-# from www.gnu.org.
-# 
-# This work is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-# 
-# Unless otherwise specified, all modifications, corrections or
-# extensions to this work which alter its source code become the
-# property of Best Practical Solutions, LLC when submitted for
-# inclusion in the work.
-# 
-# 
-# END LICENSE BLOCK
-
-=head1 NAME
-
-mason_handler.svc - Win32 IIS Service handler for RT
-
-=head1 SYNOPSIS
-
-    perl mason_handler.svc --install   # install as service
-    perl mason_handler.svc --deinstall # deinstall this service
-    perl mason_handler.svc --help      # show this help
-    perl mason_handler.svc             # launch handler from command line
-
-=head1 DESCRIPTION
-
-This script manages a stand-alone FastCGI server, and populates the necessary
-registry settings to run it with Microsoft IIS Server 4.0 or above.
-
-Before running it, you need to install the B<FCGI> module from CPAN, as well as
-B<Win32::Daemon> from L<http://www.roth.net/perl/Daemon/> if you want to install
-itself as a service.
-
-This script will automatically create a virtual directory under the IIS root;
-its name is taken from C<$WebPath> in the F<RT_Config.pm> file.  Additionally,
-please install the ISAPI binary from L<http://www.caraveo.com/fastcgi/> and set
-up an ISAPI Script Map that maps F<.html> files to F<isapi_fcgi.dll>.
-
-Once the service is launched (either via C<net start RTFastCGI> or by running
-C<perl mason_handler.svc>), a FCGI server will start and bind to port C<8284>
-(mnemonics: the ASCII value of C<R> and C<T>); the ISAPI handler's C<BindPath>
-registry setting will also be automatically populated.
-
-=cut
-
-use strict;
-use File::Basename;
-require (dirname(__FILE__) . '/webmux.pl');
-
-use Cwd;
-use File::Spec;
-
-use Win32;
-use Win32::Process;
-use Win32::Service;
-use Win32::TieRegistry;
-
-my $ProcessObj;
-
-BEGIN {
-    my $runsvc = sub {
-       Win32::Process::Create(
-           $ProcessObj, $^X, "$^X $0 --run", 0, NORMAL_PRIORITY_CLASS, "."
-       ) or do {
-           die Win32::FormatMessage( Win32::GetLastError() );
-       };
-
-       chdir File::Basename::dirname($0);
-       my $path = Cwd::cwd();
-       $path =~ s|/|\\|g;
-       $path =~ s|bin$|share\\html|;
-
-       $Win32::TieRegistry::Registry->{
-           'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\\'.
-           'W3SVC\Parameters\Virtual Roots\\'
-       }->{$RT::WebPath || '/'} = "$path,,205";
-           
-       $Win32::TieRegistry::Registry->{
-           'HKEY_LOCAL_MACHINE\Software\FASTCGI\.html\\'
-       }->{'BindPath'} = $ENV{'FCGI_SOCKET_PATH'};
-
-       Win32::Service::StartService(Win32::NodeName, 'W3SVC');
-    };
-    
-    if ($ARGV[0] eq '--deinstall') {
-       chdir File::Basename::dirname($0);
-       my $path = Cwd::cwd();
-       $path =~ s|/|\\|g;
-
-       require Win32::Daemon;
-       Win32::Daemon::DeleteService('RTFastCGI');
-       warn "Service 'RTFastCGI' successfully deleted.\n";
-       exit;
-    }
-    elsif ($ARGV[0] eq '--install') {
-       chdir File::Basename::dirname($0);
-       my $path = Cwd::cwd();
-       $path =~ s|/|\\|g;
-
-       require Win32::Daemon;
-       Win32::Daemon::DeleteService('RTFastCGI');
-       
-       my $rv = Win32::Daemon::CreateService( {
-           machine =>  '',
-           name    =>  'RTFastCGI',
-           display =>  'RT FastCGI Handler',
-           path    =>  $^X,
-           user    =>  '',
-           pwd     =>  $path,
-           description => 'Enables port 8284 as the RT FastCGI handler.',
-           parameters  => File::Spec->catfile(
-                   $path, File::Basename::basename($0)
-           ) . ' --service',
-       } );
-    
-       if ($rv) {
-           warn "Service 'RTFastCGI' successfully created.\n";
-       }
-       else {
-           warn "Failed to add service: " . Win32::FormatMessage(
-               Win32::Daemon::GetLastError()
-           ) . "\n";
-       }
-       exit;
-    }
-    elsif ($ARGV[0] eq '--service') {
-       require Win32::Daemon;
-
-       my $PrevState = Win32::Daemon::SERVICE_START_PENDING();
-       Win32::Daemon::StartService() or die $^E;
-
-       while ( 1 ) {
-           my $State = Win32::Daemon::State();
-           last if $State == Win32::Daemon::SERVICE_STOPPED();
-           
-           if ( $State == Win32::Daemon::SERVICE_START_PENDING() ) {
-               $runsvc->();
-               Win32::Daemon::State( Win32::Daemon::SERVICE_RUNNING() );
-               $PrevState = Win32::Daemon::SERVICE_RUNNING();
-           }
-           elsif ( $State == Win32::Daemon::SERVICE_CONTINUE_PENDING() ) {
-               $ProcessObj->Resume;
-               Win32::Daemon::State( Win32::Daemon::SERVICE_RUNNING() );
-               $PrevState = Win32::Daemon::SERVICE_RUNNING();
-           }
-           elsif ( $State == Win32::Daemon::SERVICE_STOP_PENDING() ) {
-           $ProcessObj->Kill(0);
-               Win32::Daemon::State( Win32::Daemon::SERVICE_STOPPED() );
-               $PrevState = Win32::Daemon::SERVICE_STOPPED();
-           }
-           elsif ( $State == Win32::Daemon::SERVICE_RUNNING() ) {
-               my $Message = Win32::Daemon::QueryLastMessage(1);
-               if ( $Message == Win32::Daemon::SERVICE_CONTROL_INTERROGATE() ) {
-                   Win32::Daemon::State( $PrevState );
-               }
-               elsif ( $Message == Win32::Daemon::SERVICE_CONTROL_SHUTDOWN() ) {
-                   Win32::Daemon::State( Win32::Daemon::SERVICE_STOP_PENDING(), 15000 );
-               }
-               elsif ( $Message != Win32::Daemon::SERVICE_CONTROL_NONE() ) {
-                   Win32::Daemon::State( $PrevState );
-               }
-           }
-           
-           Win32::Sleep( 1000 );
-       }
-               
-       Win32::Daemon::StopService();
-       exit;
-    }
-    elsif ($ARGV[0] eq '--help') {
-       system("perldoc $0");
-       exit;
-    }
-    elsif ($ARGV[0] ne '--run') {
-       $SIG{__DIE__} = sub { $ProcessObj->Kill(0) if $ProcessObj };
-       $runsvc->();
-       warn "RT FastCGI Handler launched. Press [Enter] to terminate...\n";
-       <STDIN>;
-       exit;
-    }
-}
-
-###############################################################################
-
-warn "Begin listening on $ENV{'FCGI_SOCKET_PATH'}\n";
-
-require CGI::Fast;
-my $h = &RT::Interface::Web::NewCGIHandler(@RT::MasonParameters);
-
-RT::Init();
-
-# Response loop
-while( my $cgi = CGI::Fast->new ) {
-    my $comp = $ENV{'PATH_INFO'};
-
-    $comp = $1 if ($comp =~ /^(.*)$/);
-    $comp =~ s|^$RT::WebPath\b||i;
-    $comp .= "index.html" if ($comp =~ /\/$/);
-    $comp =~ s/.pl$/.html/g;
-    
-    warn "Serving $comp\n";
-
-    $h->handle_cgi($comp);
-    # _should_ always be tied
-}
-
-1;
-
-=head1 AUTHORS
-
-Autrijus Tang E<lt>autrijus@autrijus.orgE<gt>
-
-=head1 COPYRIGHT
-
-Copyright 2002 by Autrijus Tang E<lt>autrijus@autrijus.orgE<gt>.
-
-This program is free software; you can redistribute it and/or 
-modify it under the same terms as Perl itself.
-
-See L<http://www.perl.com/perl/misc/Artistic.html>
-
-=cut
diff --git a/rt/bin/rt b/rt/bin/rt
deleted file mode 100755 (executable)
index d9f8a3f..0000000
--- a/rt/bin/rt
+++ /dev/null
@@ -1,1816 +0,0 @@
-#!/usr/bin/perl -w
-# BEGIN LICENSE BLOCK
-# 
-# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com>
-# 
-# (Except where explictly superceded by other copyright notices)
-# 
-# This work is made available to you under the terms of Version 2 of
-# the GNU General Public License. A copy of that license should have
-# been provided with this software, but in any event can be snarfed
-# from www.gnu.org.
-# 
-# This work is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-# 
-# Unless otherwise specified, all modifications, corrections or
-# extensions to this work which alter its source code become the
-# property of Best Practical Solutions, LLC when submitted for
-# inclusion in the work.
-# 
-# 
-# END LICENSE BLOCK
-
-use strict;
-
-# This program is intentionally written to have as few non-core module
-# dependencies as possible. It should stay that way.
-
-use Cwd;
-use LWP;
-use HTTP::Request::Common;
-
-# We derive configuration information from hardwired defaults, dotfiles,
-# and the RT* environment variables (in increasing order of precedence).
-# Session information is stored in ~/.rt_sessions.
-
-my $VERSION = 0.02;
-my $HOME = eval{(getpwuid($<))[7]}
-           || $ENV{HOME} || $ENV{LOGDIR} || $ENV{HOMEPATH}
-           || ".";
-my %config = (
-    (
-        debug   => 0,
-        user    => eval{(getpwuid($<))[0]} || $ENV{USER} || $ENV{USERNAME},
-        passwd  => undef,
-        server  => 'http://localhost/rt/',
-    ),
-    config_from_file($ENV{RTCONFIG} || ".rtrc"),
-    config_from_env()
-);
-my $session = new Session("$HOME/.rt_sessions");
-my $REST = "$config{server}/REST/1.0";
-
-sub whine;
-sub DEBUG { warn @_ if $config{debug} >= shift }
-
-# These regexes are used by command handlers to parse arguments.
-# (XXX: Ask Autrijus how i18n changes these definitions.)
-
-my $name   = '[\w.-]+';
-my $field  = '[a-zA-Z][a-zA-Z0-9_-]*';
-my $label  = '[a-zA-Z0-9@_.+-]+';
-my $labels = "(?:$label,)*$label";
-my $idlist = '(?:(?:\d+-)?\d+,)*(?:\d+-)?\d+';
-
-# Our command line looks like this:
-#
-#     rt <action> [options] [arguments]
-#
-# We'll parse just enough of it to decide upon an action to perform, and
-# leave the rest to per-action handlers to interpret appropriately.
-
-my %handlers = (
-#   handler     => [ ...aliases... ],
-    version     => ["version", "ver"],
-    logout      => ["logout"],
-    help        => ["help", "man"],
-    show        => ["show", "cat"],
-    edit        => ["create", "edit", "new", "ed"],
-    list        => ["search", "list", "ls"],
-    comment     => ["comment", "correspond"],
-    link        => ["link", "ln"],
-    merge       => ["merge"],
-    grant       => ["grant", "revoke"],
-);
-
-# Once we find and call an appropriate handler, we're done.
-
-my (%actions, $action);
-foreach my $fn (keys %handlers) {
-    foreach my $alias (@{ $handlers{$fn} }) {
-        $actions{$alias} = \&{"$fn"};
-    }
-}
-if (@ARGV && exists $actions{$ARGV[0]}) {
-    $action = shift @ARGV;
-}
-$actions{$action || "help"}->($action || ());
-exit;
-
-# Handler functions.
-# ------------------
-#
-# The following subs are handlers for each entry in %actions.
-
-sub version {
-    print "rt $VERSION\n";
-}
-
-sub logout {
-    submit("$REST/logout") if defined $session->cookie;
-}
-
-sub help {
-    my ($action, $type) = @_;
-    my (%help, $key);
-
-    # What help topics do we know about?
-    local $/ = undef;
-    foreach my $item (@{ Form::parse(<DATA>) }) {
-        my $title = $item->[2]{Title};
-        my @titles = ref $title eq 'ARRAY' ? @$title : $title;
-
-        foreach $title (grep $_, @titles) {
-            $help{$title} = $item->[2]{Text};
-        }
-    }
-
-    # What does the user want help with?
-    undef $action if ($action && $actions{$action} eq \&help);
-    unless ($action || $type) {
-        # If we don't know, we'll look for clues in @ARGV.
-        foreach (@ARGV) {
-            if (exists $help{$_}) { $key = $_; last; }
-        }
-        unless ($key) {
-            # Tolerate possibly plural words.
-            foreach (@ARGV) {
-                if ($_ =~ s/s$// && exists $help{$_}) { $key = $_; last; }
-            }
-        }
-    }
-
-    if ($type && $action) {
-        $key = "$type.$action";
-    }
-    $key ||= $type || $action || "introduction";
-
-    # Find a suitable topic to display.
-    while (!exists $help{$key}) {
-        if ($type && $action) {
-            if ($key eq "$type.$action") { $key = $action;        }
-            elsif ($key eq $action)      { $key = $type;          }
-            else                         { $key = "introduction"; }
-        }
-        else {
-            $key = "introduction";
-        }
-    }
-
-    print STDERR $help{$key}, "\n\n";
-}
-
-# Displays a list of objects that match some specified condition.
-
-sub list {
-    my ($q, $type, %data, $orderby);
-    my $bad = 0;
-
-    while (@ARGV) {
-        $_ = shift @ARGV;
-
-        if (/^-t$/) {
-            $bad = 1, last unless defined($type = get_type_argument());
-        }
-        elsif (/^-S$/) {
-            $bad = 1, last unless get_var_argument(\%data);
-        }
-        elsif (/^-o$/) {
-            $orderby = shift @ARGV;
-        }
-        elsif (/^-([isl])$/) {
-            $data{format} = $1;
-        }
-        elsif (/^-f$/) {
-            if ($ARGV[0] !~ /^(?:(?:$field,)*$field)$/) {
-                whine "No valid field list in '-f $ARGV[0]'.";
-                $bad = 1; last;
-            }
-            $data{fields} = shift @ARGV;
-        }
-        elsif (!defined $q && !/^-/) {
-            $q = $_;
-        }
-        else {
-            my $datum = /^-/ ? "option" : "argument";
-            whine "Unrecognised $datum '$_'.";
-            $bad = 1; last;
-        }
-    }
-
-    $type ||= "ticket";
-    unless ($type && defined $q) {
-        my $item = $type ? "query string" : "object type";
-        whine "No $item specified.";
-        $bad = 1;
-    }
-    return help("list", $type) if $bad;
-
-    my $r = submit("$REST/search/$type", { query => $q, %data, orderby => $orderby || "" });
-    print $r->content;
-}
-
-# Displays selected information about a single object.
-
-sub show {
-    my ($type, @objects, %data);
-    my $slurped = 0;
-    my $bad = 0;
-
-    while (@ARGV) {
-        $_ = shift @ARGV;
-
-        if (/^-t$/) {
-            $bad = 1, last unless defined($type = get_type_argument());
-        }
-        elsif (/^-S$/) {
-            $bad = 1, last unless get_var_argument(\%data);
-        }
-        elsif (/^-([isl])$/) {
-            $data{format} = $1;
-        }
-        elsif (/^-$/ && !$slurped) {
-            chomp(my @lines = <STDIN>);
-            foreach (@lines) {
-                unless (is_object_spec($_, $type)) {
-                    whine "Invalid object on STDIN: '$_'.";
-                    $bad = 1; last;
-                }
-                push @objects, $_;
-            }
-            $slurped = 1;
-        }
-        elsif (/^-f$/) {
-            if ($ARGV[0] !~ /^(?:(?:$field,)*$field)$/) {
-                whine "No valid field list in '-f $ARGV[0]'.";
-                $bad = 1; last;
-            }
-            $data{fields} = shift @ARGV;
-        }
-        elsif (my $spec = is_object_spec($_, $type)) {
-            push @objects, $spec;
-        }
-        else {
-            my $datum = /^-/ ? "option" : "argument";
-            whine "Unrecognised $datum '$_'.";
-            $bad = 1; last;
-        }
-    }
-
-    unless (@objects) {
-        whine "No objects specified.";
-        $bad = 1;
-    }
-    return help("show", $type) if $bad;
-
-    my $r = submit("$REST/show", { id => \@objects, %data });
-    print $r->content;
-}
-
-# To create a new object, we ask the server for a form with the defaults
-# filled in, allow the user to edit it, and send the form back.
-#
-# To edit an object, we must ask the server for a form representing that
-# object, make changes requested by the user (either on the command line
-# or interactively via $EDITOR), and send the form back.
-
-sub edit {
-    my ($action) = @_;
-    my (%data, $type, @objects);
-    my ($cl, $text, $edit, $input, $output);
-
-    use vars qw(%set %add %del);
-    %set = %add = %del = ();
-    my $slurped = 0;
-    my $bad = 0;
-    
-    while (@ARGV) {
-        $_ = shift @ARGV;
-
-        if    (/^-e$/) { $edit = 1 }
-        elsif (/^-i$/) { $input = 1 }
-        elsif (/^-o$/) { $output = 1 }
-        elsif (/^-t$/) {
-            $bad = 1, last unless defined($type = get_type_argument());
-        }
-        elsif (/^-S$/) {
-            $bad = 1, last unless get_var_argument(\%data);
-        }
-        elsif (/^-$/ && !($slurped || $input)) {
-            chomp(my @lines = <STDIN>);
-            foreach (@lines) {
-                unless (is_object_spec($_, $type)) {
-                    whine "Invalid object on STDIN: '$_'.";
-                    $bad = 1; last;
-                }
-                push @objects, $_;
-            }
-            $slurped = 1;
-        }
-        elsif (/^set$/i) {
-            my $vars = 0;
-
-            while (@ARGV && $ARGV[0] =~ /^($field)([+-]?=)(.*)$/) {
-                my ($key, $op, $val) = ($1, $2, $3);
-                my $hash = ($op eq '=') ? \%set : ($op =~ /^\+/) ? \%add : \%del;
-
-                vpush($hash, lc $key, $val);
-                shift @ARGV;
-                $vars++;
-            }
-            unless ($vars) {
-                whine "No variables to set.";
-                $bad = 1; last;
-            }
-            $cl = $vars;
-        }
-        elsif (/^(?:add|del)$/i) {
-            my $vars = 0;
-            my $hash = ($_ eq "add") ? \%add : \%del;
-
-            while (@ARGV && $ARGV[0] =~ /^($field)=(.*)$/) {
-                my ($key, $val) = ($1, $2);
-
-                vpush($hash, lc $key, $val);
-                shift @ARGV;
-                $vars++;
-            }
-            unless ($vars) {
-                whine "No variables to set.";
-                $bad = 1; last;
-            }
-            $cl = $vars;
-        }
-        elsif (my $spec = is_object_spec($_, $type)) {
-            push @objects, $spec;
-        }
-        else {
-            my $datum = /^-/ ? "option" : "argument";
-            whine "Unrecognised $datum '$_'.";
-            $bad = 1; last;
-        }
-    }
-
-    if ($action =~ /^ed(?:it)?$/) {
-        unless (@objects) {
-            whine "No objects specified.";
-            $bad = 1;
-        }
-    }
-    else {
-        if (@objects) {
-            whine "You shouldn't specify objects as arguments to $action.";
-            $bad = 1;
-        }
-        unless ($type) {
-            whine "What type of object do you want to create?";
-            $bad = 1;
-        }
-        @objects = ("$type/new");
-    }
-    return help($action, $type) if $bad;
-
-    # We need a form to make changes to. We usually ask the server for
-    # one, but we can avoid that if we are fed one on STDIN, or if the
-    # user doesn't want to edit the form by hand, and the command line
-    # specifies only simple variable assignments.
-
-    if ($input) {
-        local $/ = undef;
-        $text = <STDIN>;
-    }
-    elsif ($edit || %add || %del || !$cl) {
-        my $r = submit("$REST/show", { id => \@objects, format => 'l' });
-        $text = $r->content;
-    }
-
-    # If any changes were specified on the command line, apply them.
-    if ($cl) {
-        if ($text) {
-            # We're updating forms from the server.
-            my $forms = Form::parse($text);
-
-            foreach my $form (@$forms) {
-                my ($c, $o, $k, $e) = @$form;
-                my ($key, $val);
-
-                next if ($e || !@$o);
-
-                local %add = %add;
-                local %del = %del;
-                local %set = %set;
-
-                # Make changes to existing fields.
-                foreach $key (@$o) {
-                    if (exists $add{lc $key}) {
-                        $val = delete $add{lc $key};
-                        vpush($k, $key, $val);
-                        $k->{$key} = vsplit($k->{$key}) if $val =~ /[,\n]/;
-                    }
-                    if (exists $del{lc $key}) {
-                        $val = delete $del{lc $key};
-                        my %val = map {$_=>1} @{ vsplit($val) };
-                        $k->{$key} = vsplit($k->{$key});
-                        @{$k->{$key}} = grep {!exists $val{$_}} @{$k->{$key}};
-                    }
-                    if (exists $set{lc $key}) {
-                        $k->{$key} = delete $set{lc $key};
-                    }
-                }
-                
-                # Then update the others.
-                foreach $key (keys %set) { vpush($k, $key, $set{$key}) }
-                foreach $key (keys %add) {
-                    vpush($k, $key, $add{$key});
-                    $k->{$key} = vsplit($k->{$key});
-                }
-                push @$o, (keys %add, keys %set);
-            }
-
-            $text = Form::compose($forms);
-        }
-        else {
-            # We're rolling our own set of forms.
-            my @forms;
-            foreach (@objects) {
-                my ($type, $ids, $args) =
-                    m{^($name)/($idlist|$labels)(?:(/.*))?$}o;
-
-                $args ||= "";
-                foreach my $obj (expand_list($ids)) {
-                    my %set = (%set, id => "$type/$obj$args");
-                    push @forms, ["", [keys %set], \%set];
-                }
-            }
-            $text = Form::compose(\@forms);
-        }
-    }
-
-    if ($output) {
-        print $text;
-        exit;
-    }
-
-    my $synerr = 0;
-
-EDIT:
-    # We'll let the user edit the form before sending it to the server,
-    # unless we have enough information to submit it non-interactively.
-    if ($edit || (!$input && !$cl)) {
-        my $newtext = vi($text);
-        # We won't resubmit a bad form unless it was changed.
-        $text = ($synerr && $newtext eq $text) ? undef : $newtext;
-    }
-
-    if ($text) {
-        my $r = submit("$REST/edit", {content => $text, %data});
-        if ($r->code == 409) {
-            # If we submitted a bad form, we'll give the user a chance
-            # to correct it and resubmit.
-            if ($edit || (!$input && !$cl)) {
-                $text = $r->content;
-                $synerr = 1;
-                goto EDIT;
-            }
-            else {
-                print $r->content;
-                exit -1;
-            }
-        }
-        print $r->content;
-    }
-}
-
-# We roll "comment" and "correspond" into the same handler.
-
-sub comment {
-    my ($action) = @_;
-    my (%data, $id, @files, @bcc, @cc, $msg, $wtime, $edit);
-    my $bad = 0;
-
-    while (@ARGV) {
-        $_ = shift @ARGV;
-
-        if (/^-e$/) {
-            $edit = 1;
-        }
-        elsif (/^-[abcmw]$/) {
-            unless (@ARGV) {
-                whine "No argument specified with $_.";
-                $bad = 1; last;
-            }
-
-            if (/-a/) {
-                unless (-f $ARGV[0] && -r $ARGV[0]) {
-                    whine "Cannot read attachment: '$ARGV[0]'.";
-                    exit -1;
-                }
-                push @files, shift @ARGV;
-            }
-            elsif (/-([bc])/) {
-                my $a = $_ eq "-b" ? \@bcc : \@cc;
-                @$a = split /\s*,\s*/, shift @ARGV;
-            }
-            elsif (/-m/) { $msg = shift @ARGV }
-            elsif (/-w/) { $wtime = shift @ARGV }
-        }
-        elsif (!$id && m|^(?:ticket/)?($idlist)$|) {
-            $id = $1;
-        }
-        else {
-            my $datum = /^-/ ? "option" : "argument";
-            whine "Unrecognised $datum '$_'.";
-            $bad = 1; last;
-        }
-    }
-
-    unless ($id) {
-        whine "No object specified.";
-        $bad = 1;
-    }
-    return help($action, "ticket") if $bad;
-
-    my $form = [
-        "",
-        [ "Ticket", "Action", "Cc", "Bcc", "Attachment", "TimeWorked", "Text" ],
-        {
-            Ticket     => $id,
-            Action     => $action,
-            Cc         => [ @cc ],
-            Bcc        => [ @bcc ],
-            Attachment => [ @files ],
-            TimeWorked => $wtime || '',
-            Text       => $msg || '',
-        }
-    ];
-
-    my $text = Form::compose([ $form ]);
-
-    if ($edit || !$msg) {
-        my $error = 0;
-        my ($c, $o, $k, $e);
-
-        do {
-            my $ntext = vi($text);
-            exit if ($error && $ntext eq $text);
-            $text = $ntext;
-            $form = Form::parse($text);
-            $error = 0;
-
-            ($c, $o, $k, $e) = @{ $form->[0] };
-            if ($e) {
-                $error = 1;
-                $c = "# Syntax error.";
-                goto NEXT;
-            }
-            elsif (!@$o) {
-                exit;
-            }
-            @files = @{ vsplit($k->{Attachment}) };
-
-        NEXT:
-            $text = Form::compose([[$c, $o, $k, $e]]);
-        } while ($error);
-    }
-
-    my $i = 1;
-    foreach my $file (@files) {
-        $data{"attachment_$i"} = bless([ $file ], "Attachment");
-        $i++;
-    }
-    $data{content} = $text;
-
-    my $r = submit("$REST/ticket/comment/$id", \%data);
-    print $r->content;
-}
-
-# Merge one ticket into another.
-
-sub merge {
-    my @id;
-    my $bad = 0;
-
-    while (@ARGV) {
-        $_ = shift @ARGV;
-
-        if (/^\d+$/) {
-            push @id, $_;
-        }
-        else {
-            whine "Unrecognised argument: '$_'.";
-            $bad = 1; last;
-        }
-    }
-
-    unless (@id == 2) {
-        my $evil = @id > 2 ? "many" : "few";
-        whine "Too $evil arguments specified.";
-        $bad = 1;
-    }
-    return help("merge", "ticket") if $bad;
-
-    my $r = submit("$REST/ticket/merge/$id[0]", {into => $id[1]});
-    print $r->content;
-}
-
-# Link one ticket to another.
-
-sub link {
-    my ($bad, $del, %data) = (0, 0, ());
-    my %ltypes = map { lc $_ => $_ } qw(DependsOn DependedOnBy RefersTo
-                                        ReferredToBy HasMember MemberOf);
-
-    while (@ARGV && $ARGV[0] =~ /^-/) {
-        $_ = shift @ARGV;
-
-        if (/^-d$/) {
-            $del = 1;
-        }
-        else {
-            whine "Unrecognised option: '$_'.";
-            $bad = 1; last;
-        }
-    }
-
-    if (@ARGV == 3) {
-        my ($from, $rel, $to) = @ARGV;
-        if ($from !~ /^\d+$/ || $to !~ /^\d+$/) {
-            my $bad = $from =~ /^\d+$/ ? $to : $from;
-            whine "Invalid ticket ID '$bad' specified.";
-            $bad = 1;
-        }
-        unless (exists $ltypes{lc $rel}) {
-            whine "Invalid relationship '$rel' specified.";
-            $bad = 1;
-        }
-        %data = (id => $from, rel => $rel, to => $to, del => $del);
-    }
-    else {
-        my $bad = @ARGV < 3 ? "few" : "many";
-        whine "Too $bad arguments specified.";
-        $bad = 1;
-    }
-    return help("link", "ticket") if $bad;
-
-    my $r = submit("$REST/ticket/link", \%data);
-    print $r->content;
-}
-
-# Grant/revoke a user's rights.
-
-sub grant {
-    my ($cmd) = @_;
-
-    my $revoke = 0;
-    while (@ARGV) {
-    }
-
-    $revoke = 1 if $cmd->{action} eq 'revoke';
-}
-
-# Client <-> Server communication.
-# --------------------------------
-#
-# This function composes and sends an HTTP request to the RT server, and
-# interprets the response. It takes a request URI, and optional request
-# data (a string, or a reference to a set of key-value pairs).
-
-sub submit {
-    my ($uri, $content) = @_;
-    my ($req, $data);
-    my $ua = new LWP::UserAgent(agent => "RT/3.0b", env_proxy => 1);
-
-    # Did the caller specify any data to send with the request?
-    $data = [];
-    if (defined $content) {
-        unless (ref $content) {
-            # If it's just a string, make sure LWP handles it properly.
-            # (By pretending that it's a file!)
-            $content = [ content => [undef, "", Content => $content] ];
-        }
-        elsif (ref $content eq 'HASH') {
-            my @data;
-            foreach my $k (keys %$content) {
-                if (ref $content->{$k} eq 'ARRAY') {
-                    foreach my $v (@{ $content->{$k} }) {
-                        push @data, $k, $v;
-                    }
-                }
-                else { push @data, $k, $content->{$k} }
-            }
-            $content = \@data;
-        }
-        $data = $content;
-    }
-
-    # Should we send authentication information to start a new session?
-    if (!defined $session->cookie) {
-        push @$data, ( user => $config{user} );
-        push @$data, ( pass => $config{passwd} || read_passwd() );
-    }
-
-    # Now, we construct the request.
-    if (@$data) {
-        $req = POST($uri, $data, Content_Type => 'form-data');
-    }
-    else {
-        $req = GET($uri);
-    }
-    $session->add_cookie_header($req);
-
-    # Then we send the request and parse the response.
-    DEBUG(3, $req->as_string);
-    my $res = $ua->request($req);
-    DEBUG(3, $res->as_string);
-
-    if ($res->is_success) {
-        # The content of the response we get from the RT server consists
-        # of an HTTP-like status line followed by optional header lines,
-        # a blank line, and arbitrary text.
-
-        my ($head, $text) = split /\n\n/, $res->content, 2;
-        my ($status, @headers) = split /\n/, $head;
-        $text =~ s/\n*$/\n/;
-
-        # "RT/3.0.1 401 Credentials required"
-        if ($status !~ m#^RT/\d+(?:\.\d+)+(?:-?\w+)? (\d+) ([\w\s]+)$#) {
-            warn "rt: Malformed RT response from $config{server}.\n";
-            warn "(Rerun with RTDEBUG=3 for details.)\n" if $config{debug} < 3;
-            exit -1;
-        }
-
-        # Our caller can pretend that the server returned a custom HTTP
-        # response code and message. (Doing that directly is apparently
-        # not sufficiently portable and uncomplicated.)
-        $res->code($1);
-        $res->message($2);
-        $res->content($text);
-        $session->update($res) if ($res->is_success || $res->code != 401);
-
-        if (!$res->is_success) {
-            # We can deal with authentication failures ourselves. Either
-            # we sent invalid credentials, or our session has expired.
-            if ($res->code == 401) {
-                my %d = @$data;
-                if (exists $d{user}) {
-                    warn "rt: Incorrect username or password.\n";
-                    exit -1;
-                }
-                elsif ($req->header("Cookie")) {
-                    # We'll retry the request with credentials, unless
-                    # we only wanted to logout in the first place.
-                    $session->delete;
-                    return submit(@_) unless $uri eq "$REST/logout";
-                }
-            }
-            # Conflicts should be dealt with by the handler and user.
-            # For anything else, we just die.
-            elsif ($res->code != 409) {
-                warn "rt: ", $res->content;
-                exit;
-            }
-        }
-    }
-    else {
-        warn "rt: Server error: ", $res->message, " (", $res->code, ")\n";
-        exit -1;
-    }
-
-    return $res;
-}
-
-# Session management.
-# -------------------
-#
-# Maintains a list of active sessions in the ~/.rt_sessions file.
-{
-    package Session;
-    my ($s, $u);
-
-    # Initialises the session cache.
-    sub new {
-        my ($class, $file) = @_;
-        my $self = {
-            file => $file || "$HOME/.rt_sessions",
-            sids => { }
-        };
-       
-        # The current session is identified by the currently configured
-        # server and user.
-        ($s, $u) = @config{"server", "user"};
-
-        bless $self, $class;
-        $self->load();
-
-        return $self;
-    }
-
-    # Returns the current session cookie.
-    sub cookie {
-        my ($self) = @_;
-        my $cookie = $self->{sids}{$s}{$u};
-        return defined $cookie ? "RT_SID=$cookie" : undef;
-    }
-
-    # Deletes the current session cookie.
-    sub delete {
-        my ($self) = @_;
-        delete $self->{sids}{$s}{$u};
-    }
-
-    # Adds a Cookie header to an outgoing HTTP request.
-    sub add_cookie_header {
-        my ($self, $request) = @_;
-        my $cookie = $self->cookie();
-
-        $request->header(Cookie => $cookie) if defined $cookie;
-    }
-
-    # Extracts the Set-Cookie header from an HTTP response, and updates
-    # session information accordingly.
-    sub update {
-        my ($self, $response) = @_;
-        my $cookie = $response->header("Set-Cookie");
-
-        if (defined $cookie && $cookie =~ /^RT_SID=([0-9A-Fa-f]+);/) {
-            $self->{sids}{$s}{$u} = $1;
-        }
-    }
-
-    # Loads the session cache from the specified file.
-    sub load {
-        my ($self, $file) = @_;
-        $file ||= $self->{file};
-        local *F;
-
-        open(F, $file) && do {
-            $self->{file} = $file;
-            my $sids = $self->{sids} = {};
-            while (<F>) {
-                chomp;
-                next if /^$/ || /^#/;
-                next unless m#^https?://[^ ]+ \w+ [0-9A-Fa-f]+$#;
-                my ($server, $user, $cookie) = split / /, $_;
-                $sids->{$server}{$user} = $cookie;
-            }
-            return 1;
-        };
-        return 0;
-    }
-
-    # Writes the current session cache to the specified file.
-    sub save {
-        my ($self, $file) = shift;
-        $file ||= $self->{file};
-        local *F;
-
-        open(F, ">$file") && do {
-            my $sids = $self->{sids};
-            foreach my $server (keys %$sids) {
-                foreach my $user (keys %{ $sids->{$server} }) {
-                    my $sid = $sids->{$server}{$user};
-                    if (defined $sid) {
-                        print F "$server $user $sid\n";
-                    }
-                }
-            }
-            close(F);
-            chmod 0600, $file;
-            return 1;
-        };
-        return 0;
-    }
-
-    sub DESTROY {
-        my $self = shift;
-        $self->save;
-    }
-}
-
-# Form handling.
-# --------------
-#
-# Forms are RFC822-style sets of (field, value) specifications with some
-# initial comments and interspersed blank lines allowed for convenience.
-# Sets of forms are separated by --\n (in a cheap parody of MIME).
-#
-# Each form is parsed into an array with four elements: commented text
-# at the start of the form, an array with the order of keys, a hash with
-# key/value pairs, and optional error text if the form syntax was wrong.
-
-# Returns a reference to an array of parsed forms.
-sub Form::parse {
-    my $state = 0;
-    my @forms = ();
-    my @lines = split /\n/, $_[0];
-    my ($c, $o, $k, $e) = ("", [], {}, "");
-
-    LINE:
-    while (@lines) {
-        my $line = shift @lines;
-
-        next LINE if $line eq '';
-
-        if ($line eq '--') {
-            # We reached the end of one form. We'll ignore it if it was
-            # empty, and store it otherwise, errors and all.
-            if ($e || $c || @$o) {
-                push @forms, [ $c, $o, $k, $e ];
-                $c = ""; $o = []; $k = {}; $e = "";
-            }
-            $state = 0;
-        }
-        elsif ($state != -1) {
-            if ($state == 0 && $line =~ /^#/) {
-                # Read an optional block of comments (only) at the start
-                # of the form.
-                $state = 1;
-                $c = $line;
-                while (@lines && $lines[0] =~ /^#/) {
-                    $c .= "\n".shift @lines;
-                }
-                $c .= "\n";
-            }
-            elsif ($state <= 1 && $line =~ /^($field):(?:\s+(.*))?$/) {
-                # Read a field: value specification.
-                my $f  = $1;
-                my @v  = ($2 || ());
-
-                # Read continuation lines, if any.
-                while (@lines && ($lines[0] eq '' || $lines[0] =~ /^\s+/)) {
-                    push @v, shift @lines;
-                }
-                pop @v while (@v && $v[-1] eq '');
-
-                # Strip longest common leading indent from text.
-                my $ws = "";
-                foreach my $ls (map {/^(\s+)/} @v[1..$#v]) {
-                    $ws = $ls if (!$ws || length($ls) < length($ws));
-                }
-                s/^$ws// foreach @v;
-
-                push(@$o, $f) unless exists $k->{$f};
-                vpush($k, $f, join("\n", @v));
-
-                $state = 1;
-            }
-            elsif ($line !~ /^#/) {
-                # We've found a syntax error, so we'll reconstruct the
-                # form parsed thus far, and add an error marker. (>>)
-                $state = -1;
-                $e = Form::compose([[ "", $o, $k, "" ]]);
-                $e.= $line =~ /^>>/ ? "$line\n" : ">> $line\n";
-            }
-        }
-        else {
-            # We saw a syntax error earlier, so we'll accumulate the
-            # contents of this form until the end.
-            $e .= "$line\n";
-        }
-    }
-    push(@forms, [ $c, $o, $k, $e ]) if ($e || $c || @$o);
-
-    foreach my $l (keys %$k) {
-        $k->{$l} = vsplit($k->{$l}) if (ref $k->{$l} eq 'ARRAY');
-    }
-
-    return \@forms;
-}
-
-# Returns text representing a set of forms.
-sub Form::compose {
-    my ($forms) = @_;
-    my @text;
-
-    foreach my $form (@$forms) {
-        my ($c, $o, $k, $e) = @$form;
-        my $text = "";
-
-        if ($c) {
-            $c =~ s/\n*$/\n/;
-            $text = "$c\n";
-        }
-        if ($e) {
-            $text .= $e;
-        }
-        elsif ($o) {
-            my @lines;
-
-            foreach my $key (@$o) {
-                my ($line, $sp);
-                my $v = $k->{$key};
-                my @values = ref $v eq 'ARRAY' ? @$v : $v;
-
-                $sp = " "x(length("$key: "));
-                $sp = " "x4 if length($sp) > 16;
-
-                foreach $v (@values) {
-                    if ($v =~ /\n/) {
-                        $v =~ s/^/$sp/gm;
-                        $v =~ s/^$sp//;
-
-                        if ($line) {
-                            push @lines, "$line\n\n";
-                            $line = "";
-                        }
-                        elsif (@lines && $lines[-1] !~ /\n\n$/) {
-                            $lines[-1] .= "\n";
-                        }
-                        push @lines, "$key: $v\n\n";
-                    }
-                    elsif ($line &&
-                           length($line)+length($v)-rindex($line, "\n") >= 70)
-                    {
-                        $line .= ",\n$sp$v";
-                    }
-                    else {
-                        $line = $line ? "$line, $v" : "$key: $v";
-                    }
-                }
-
-                $line = "$key:" unless @values;
-                if ($line) {
-                    if ($line =~ /\n/) {
-                        if (@lines && $lines[-1] !~ /\n\n$/) {
-                            $lines[-1] .= "\n";
-                        }
-                        $line .= "\n";
-                    }
-                    push @lines, "$line\n";
-                }
-            }
-
-            $text .= join "", @lines;
-        }
-        else {
-            chomp $text;
-        }
-        push @text, $text;
-    }
-
-    return join "\n--\n\n", @text;
-}
-
-# Configuration.
-# --------------
-
-# Returns configuration information from the environment.
-sub config_from_env {
-    my %env;
-
-    foreach my $k ("DEBUG", "USER", "PASSWD", "SERVER") {
-        if (exists $ENV{"RT$k"}) {
-            $env{lc $k} = $ENV{"RT$k"};
-        }
-    }
-
-    return %env;
-}
-
-# Finds a suitable configuration file and returns information from it.
-sub config_from_file {
-    my ($rc) = @_;
-
-    if ($rc =~ m#^/#) {
-        # We'll use an absolute path if we were given one.
-        return parse_config_file($rc);
-    }
-    else {
-        # Otherwise we'll use the first file we can find in the current
-        # directory, or in one of its (increasingly distant) ancestors.
-
-        my @dirs = split /\//, cwd;
-        while (@dirs) {
-            my $file = join('/', @dirs, $rc);
-            if (-r $file) {
-                return parse_config_file($file);
-            }
-
-            # Remove the last directory component each time.
-            pop @dirs;
-        }
-
-        # Still nothing? We'll fall back to some likely defaults.
-        for ("$HOME/$rc", "/etc/rt.conf") {
-            return parse_config_file($_) if (-r $_);
-        }
-    }
-
-    return ();
-}
-
-# Makes a hash of the specified configuration file.
-sub parse_config_file {
-    my %cfg;
-    my ($file) = @_;
-
-    open(CFG, $file) && do {
-        while (<CFG>) {
-            chomp;
-            next if (/^#/ || /^\s*$/);
-
-            if (/^(user|passwd|server)\s+([^ ]+)$/) {
-                $cfg{$1} = $2;
-            }
-            else {
-                die "rt: $file:$.: unknown configuration directive.\n";
-            }
-        }
-    };
-
-    return %cfg;
-}
-
-# Helper functions.
-# -----------------
-
-sub whine {
-    my $sub = (caller(1))[3];
-    $sub =~ s/^main:://;
-    warn "rt: $sub: @_\n";
-    return;
-}
-
-sub read_passwd {
-    eval 'require Term::ReadKey';
-    if ($@) {
-        die "No password specified (and Term::ReadKey not installed).\n";
-    }
-
-    print "Password: ";
-    Term::ReadKey::ReadMode('noecho');
-    chomp(my $passwd = Term::ReadKey::ReadLine(0));
-    Term::ReadKey::ReadMode('restore');
-    print "\n";
-
-    return $passwd;
-}
-
-sub vi {
-    my ($text) = @_;
-    my $file = "/tmp/rt.form.$$";
-    my $editor = $ENV{EDITOR} || $ENV{VISUAL} || "vi";
-
-    local *F;
-    local $/ = undef;
-
-    open(F, ">$file") || die "$file: $!\n"; print F $text; close(F);
-    system($editor, $file) && die "Couldn't run $editor.\n";
-    open(F, $file) || die "$file: $!\n"; $text = <F>; close(F);
-    unlink($file);
-
-    return $text;
-}
-
-# Add a value to a (possibly multi-valued) hash key.
-sub vpush {
-    my ($hash, $key, $val) = @_;
-    my @val = ref $val eq 'ARRAY' ? @$val : $val;
-
-    if (exists $hash->{$key}) {
-        unless (ref $hash->{$key} eq 'ARRAY') {
-            my @v = $hash->{$key} ne '' ? $hash->{$key} : ();
-            $hash->{$key} = \@v;
-        }
-        push @{ $hash->{$key} }, @val;
-    }
-    else {
-        $hash->{$key} = $val;
-    }
-}
-
-# "Normalise" a hash key that's known to be multi-valued.
-sub vsplit {
-    my ($val) = @_;
-    my ($word, @words);
-    my @values = ref $val eq 'ARRAY' ? @$val : $val;
-
-    foreach my $line (map {split /\n/} @values) {
-        # XXX: This should become a real parser, à la Text::ParseWords.
-        $line =~ s/^\s+//;
-        $line =~ s/\s+$//;
-        push @words, split /\s*,\s*/, $line;
-    }
-
-    return \@words;
-}
-
-sub expand_list {
-    my ($list) = @_;
-    my ($elt, @elts, %elts);
-
-    foreach $elt (split /,/, $list) {
-        if ($elt =~ /^(\d+)-(\d+)$/) { push @elts, ($1..$2) }
-        else                         { push @elts, $elt }
-    }
-
-    @elts{@elts}=();
-    return sort {$a<=>$b} keys %elts;
-}
-
-sub get_type_argument {
-    my $type;
-
-    if (@ARGV) {
-        $type = shift @ARGV;
-        unless ($type =~ /^[A-Za-z0-9_.-]+$/) {
-            # We want whine to mention our caller, not us.
-            @_ = ("Invalid type '$type' specified.");
-            goto &whine;
-        }
-    }
-    else {
-        @_ = ("No type argument specified with -t.");
-        goto &whine;
-    }
-
-    $type =~ s/s$//; # "Plural". Ugh.
-    return $type;
-}
-
-sub get_var_argument {
-    my ($data) = @_;
-
-    if (@ARGV) {
-        my $kv = shift @ARGV;
-        if (my ($k, $v) = $kv =~ /^($field)=(.*)$/) {
-            push @{ $data->{$k} }, $v;
-        }
-        else {
-            @_ = ("Invalid variable specification: '$kv'.");
-            goto &whine;
-        }
-    }
-    else {
-        @_ = ("No variable argument specified with -S.");
-        goto &whine;
-    }
-}
-
-sub is_object_spec {
-    my ($spec, $type) = @_;
-
-    $spec =~ s|^(?:$type/)?|$type/| if defined $type;
-    return $spec if ($spec =~ m{^$name/(?:$idlist|$labels)(?:/.*)?$}o);
-    return;
-}
-
-__DATA__
-
-Title: intro
-Title: introduction
-Text:
-
-    ** THIS IS AN UNSUPPORTED PREVIEW RELEASE **
-    ** PLEASE REPORT BUGS TO rt-bugs@fsck.com **
-
-    This is a command-line interface to RT 3.
-
-    It allows you to interact with an RT server over HTTP, and offers an
-    interface to RT's functionality that is better-suited to automation
-    and integration with other tools.
-
-    In general, each invocation of this program should specify an action
-    to perform on one or more objects, and any other arguments required
-    to complete the desired action.
-
-    For more information:
-
-        - rt help actions       (a list of possible actions)
-        - rt help objects       (how to specify objects)
-        - rt help usage         (syntax information)
-
-        - rt help config        (configuration details)
-        - rt help examples      (a few useful examples)
-        - rt help topics        (a list of help topics)
-
---
-
-Title: usage
-Title: syntax
-Text:
-
-    Syntax:
-
-        rt <action> [options] [arguments]
-
-    Each invocation of this program must specify an action (e.g. "edit",
-    "create"), options to modify behaviour, and other arguments required
-    by the specified action. (For example, most actions expect a list of
-    numeric object IDs to act upon.)
-
-    The details of the syntax and arguments for each action are given by
-    "rt help <action>". Some actions may be referred to by more than one
-    name ("create" is the same as "new", for example).  
-
-    Objects are identified by a type and an ID (which can be a name or a
-    number, depending on the type). For some actions, the object type is
-    implied (you can only comment on tickets); for others, the user must
-    specify it explicitly. See "rt help objects" for details.
-
-    In syntax descriptions, mandatory arguments that must be replaced by
-    appropriate value are enclosed in <>, and optional arguments are
-    indicated by [] (for example, <action> and [options] above).
-
-    For more information:
-
-        - rt help objects       (how to specify objects)
-        - rt help actions       (a list of actions)
-        - rt help types         (a list of object types)
-
---
-
-Title: conf
-Title: config
-Title: configuration
-Text:
-
-    This program has two major sources of configuration information: its
-    configuration files, and the environment.
-
-    The program looks for configuration directives in a file named .rtrc
-    (or $RTCONFIG; see below) in the current directory, and then in more
-    distant ancestors, until it reaches /. If no suitable configuration
-    files are found, it will also check for ~/.rtrc and /etc/rt.conf.
-
-    Configuration directives:
-
-        The following directives may occur, one per line:
-
-        - server <URL>          URL to RT server.
-        - user <username>       RT username.
-        - passwd <passwd>       RT user's password.
-
-        Blank and #-commented lines are ignored.
-
-    Environment variables:
-
-        The following environment variables override any corresponding
-        values defined in configuration files:
-
-        - RTUSER
-        - RTPASSWD
-        - RTSERVER
-        - RTDEBUG       Numeric debug level. (Set to 3 for full logs.)
-        - RTCONFIG      Specifies a name other than ".rtrc" for the
-                        configuration file.
-
---
-
-Title: objects
-Text:
-
-    Syntax:
-
-        <type>/<id>[/<attributes>]
-
-    Every object in RT has a type (e.g. "ticket", "queue") and a numeric
-    ID. Some types of objects can also be identified by name (like users
-    and queues). Furthermore, objects may have named attributes (such as
-    "ticket/1/history").
-
-    An object specification is like a path in a virtual filesystem, with
-    object types as top-level directories, object IDs as subdirectories,
-    and named attributes as further subdirectories.
-
-    A comma-separated list of names, numeric IDs, or numeric ranges can
-    be used to specify more than one object of the same type. Note that
-    the list must be a single argument (i.e., no spaces). For example,
-    "user/root,1-3,5,7-10,ams" is a list of ten users; the same list
-    can also be written as "user/ams,root,1,2,3,5,7,8-20".
-    
-    Examples:
-
-        ticket/1
-        ticket/1/attachments
-        ticket/1/attachments/3
-        ticket/1/attachments/3/content
-        ticket/1-3/links
-        ticket/1-3,5-7/history
-
-        user/ams
-        user/ams/rights
-        user/ams,rai,1/rights
-
-    For more information:
-
-        - rt help <action>      (action-specific details)
-        - rt help <type>        (type-specific details)
-
---
-
-Title: actions
-Title: commands
-Text:
-
-    You can currently perform the following actions on all objects:
-
-        - list          (list objects matching some condition)
-        - show          (display object details)
-        - edit          (edit object details)
-        - create        (create a new object)
-
-    Each type may define actions specific to itself; these are listed in
-    the help item about that type.
-
-    For more information:
-
-        - rt help <action>      (action-specific details)
-        - rt help types         (a list of possible types)
-
---
-
-Title: types
-Text:
-
-    You can currently operate on the following types of objects:
-
-        - tickets
-        - users
-        - groups
-        - queues
-
-    For more information:
-
-        - rt help <type>        (type-specific details)
-        - rt help objects       (how to specify objects)
-        - rt help actions       (a list of possible actions)
-
---
-
-Title: ticket
-Text:
-
-    Tickets are identified by a numeric ID.
-
-    The following generic operations may be performed upon tickets:
-
-        - list
-        - show
-        - edit
-        - create
-
-    In addition, the following ticket-specific actions exist:
-
-        - link
-        - merge
-        - comment
-        - correspond
-
-    Attributes:
-
-        The following attributes can be used with "rt show" or "rt edit"
-        to retrieve or edit other information associated with tickets:
-
-        links                      A ticket's relationships with others.
-        history                    All of a ticket's transactions.
-        history/type/<type>        Only a particular type of transaction.
-        history/id/<id>            Only the transaction of the specified id.
-        attachments                A list of attachments.
-        attachments/<id>           The metadata for an individual attachment.
-        attachments/<id>/content   The content of an individual attachment.
-
---
-
-Title: user
-Title: group
-Text:
-
-    Users and groups are identified by name or numeric ID.
-
-    The following generic operations may be performed upon them:
-
-        - list
-        - show
-        - edit
-        - create
-
-    In addition, the following type-specific actions exist:
-
-        - grant
-        - revoke
-
-    Attributes:
-
-        The following attributes can be used with "rt show" or "rt edit"
-        to retrieve or edit other information associated with users and
-        groups:
-
-        rights                  Global rights granted to this user.
-        rights/<queue>          Queue rights for this user.
-
---
-
-Title: queue
-Text:
-
-    Queues are identified by name or numeric ID.
-
-    Currently, they can be subjected to the following actions:
-
-        - show
-        - edit
-        - create
-
---
-
-Title: logout
-Text:
-
-    Syntax:
-
-        rt logout
-
-    Terminates the currently established login session. You will need to
-    provide authentication credentials before you can continue using the
-    server. (See "rt help config" for details about authentication.)
-
---
-
-Title: ls
-Title: list
-Title: search
-Text:
-
-    Syntax:
-
-        rt <ls|list|search> [options] "query string"
-
-    Displays a list of objects matching the specified conditions.
-    ("ls", "list", and "search" are synonyms.)
-
-    Conditions are expressed in the SQL-like syntax used internally by
-    RT3. (For more information, see "rt help query".) The query string
-    must be supplied as one argument.
-
-    (Right now, the server doesn't support listing anything but tickets.
-    Other types will be supported in future; this client will be able to
-    take advantage of that support without any changes.)
-
-    Options:
-
-        The following options control how much information is displayed
-        about each matching object:
-
-        -i      Numeric IDs only. (Useful for |rt edit -; see examples.)
-        -s      Short description.
-        -l      Longer description.
-
-        In addition,
-        
-        -o +/-<field>   Orders the returned list by the specified field.
-        -S var=val      Submits the specified variable with the request.
-        -t type         Specifies the type of object to look for. (The
-                        default is "ticket".)
-
-    Examples:
-
-        rt ls "Priority > 5 and Status='new'"
-        rt ls -o +Subject "Priority > 5 and Status='new'"
-        rt ls -o -Created "Priority > 5 and Status='new'"
-        rt ls -i "Priority > 5"|rt edit - set status=resolved
-        rt ls -t ticket "Subject like '[PATCH]%'"
-
---
-
-Title: show
-Text:
-
-    Syntax:
-
-        rt show [options] <object-ids>
-
-    Displays details of the specified objects.
-
-    For some types, object information is further classified into named
-    attributes (for example, "1-3/links" is a valid ticket specification
-    that refers to the links for tickets 1-3). Consult "rt help <type>"
-    and "rt help objects" for further details.
-
-    This command writes a set of forms representing the requested object
-    data to STDOUT.
-
-    Options:
-
-        -               Read IDs from STDIN instead of the command-line.
-        -t type         Specifies object type.
-        -f a,b,c        Restrict the display to the specified fields.
-        -S var=val      Submits the specified variable with the request.
-
-    Examples:
-
-        rt show -t ticket -f id,subject,status 1-3
-        rt show ticket/3/attachments/29
-        rt show ticket/3/attachments/29/content
-        rt show ticket/1-3/links
-        rt show -t user 2
-
---
-
-Title: new
-Title: edit
-Title: create
-Text:
-
-    Syntax:
-
-        rt edit [options] <object-ids> set field=value [field=value] ...
-                                       add field=value [field=value] ...
-                                       del field=value [field=value] ...
-
-    Edits information corresponding to the specified objects.
-
-    If, instead of "edit", an action of "new" or "create" is specified,
-    then a new object is created. In this case, no numeric object IDs
-    may be specified, but the syntax and behaviour remain otherwise
-    unchanged.
-
-    This command typically starts an editor to allow you to edit object
-    data in a form for submission. If you specified enough information
-    on the command-line, however, it will make the submission directly.
-
-    The command line may specify field-values in three different ways.
-    "set" sets the named field to the given value, "add" adds a value
-    to a multi-valued field, and "del" deletes the corresponding value.
-    Each "field=value" specification must be given as a single argument.
-
-    For some types, object information is further classified into named
-    attributes (for example, "1-3/links" is a valid ticket specification
-    that refers to the links for tickets 1-3). These attributes may also
-    be edited. Consult "rt help <type>" and "rt help object" for further
-    details.
-
-    Options:
-
-        -       Read numeric IDs from STDIN instead of the command-line.
-                (Useful with rt ls ... | rt edit -; see examples below.)
-        -i      Read a completed form from STDIN before submitting.
-        -o      Dump the completed form to STDOUT instead of submitting.
-        -e      Allows you to edit the form even if the command-line has
-                enough information to make a submission directly.
-        -S var=val
-                Submits the specified variable with the request.
-        -t type Specifies object type.
-
-    Examples:
-
-        # Interactive (starts $EDITOR with a form).
-        rt edit ticket/3
-        rt create -t ticket
-
-        # Non-interactive.
-        rt edit ticket/1-3 add cc=foo@example.com set priority=3
-        rt ls -t tickets -i 'Priority > 5' | rt edit - set status=resolved
-        rt edit ticket/4 set priority=3 owner=bar@example.com \
-                         add cc=foo@example.com bcc=quux@example.net
-        rt create -t ticket subject='new ticket' priority=10 \
-                            add cc=foo@example.com
-
---
-
-Title: comment
-Title: correspond
-Text:
-
-    Syntax:
-
-        rt <comment|correspond> [options] <ticket-id>
-
-    Adds a comment (or correspondence) to the specified ticket (the only
-    difference being that comments aren't sent to the requestors.)
-
-    This command will typically start an editor and allow you to type a
-    comment into a form. If, however, you specified all the necessary
-    information on the command line, it submits the comment directly.
-
-    (See "rt help forms" for more information about forms.)
-
-    Options:
-
-        -m <text>       Specify comment text.
-        -a <file>       Attach a file to the comment. (May be used more
-                        than once to attach multiple files.)
-        -c <addrs>      A comma-separated list of Cc addresses.
-        -b <addrs>      A comma-separated list of Bcc addresses.
-        -w <time>       Specify the time spent working on this ticket.
-        -e              Starts an editor before the submission, even if
-                        arguments from the command line were sufficient.
-
-    Examples:
-
-        rt comment -t 'Not worth fixing.' -a stddisclaimer.h 23
-
---
-
-Title: merge
-Text:
-
-    Syntax:
-
-        rt merge <from-id> <to-id>
-
-    Merges the two specified tickets.
-
---
-
-Title: link
-Text:
-
-    Syntax:
-
-        rt link [-d] <id-A> <relationship> <id-B>
-
-    Creates (or, with -d, deletes) a link between the specified tickets.
-    The relationship can (irrespective of case) be any of:
-
-        DependsOn/DependedOnBy:     A depends upon B (or vice versa).
-        RefersTo/ReferredToBy:      A refers to B (or vice versa).
-        MemberOf/HasMember:         A is a member of B (or vice versa).
-
-    To view a ticket's relationships, use "rt show ticket/3/links". (See
-    "rt help ticket" and "rt help show".)
-
-    Options:
-
-        -d      Deletes the specified link.
-
-    Examples:
-
-        rt link 2 dependson 3
-        rt link -d 4 referredtoby 6     # 6 no longer refers to 4
-
---
-
-Title: grant
-Title: revoke
-Text:
-
---
-
-Title: query
-Text:
-
-    RT3 uses an SQL-like syntax to specify object selection constraints.
-    See the <RT:...> documentation for details.
-    
-    (XXX: I'm going to have to write it, aren't I?)
-
---
-
-Title: form
-Title: forms
-Text:
-
-    This program uses RFC822 header-style forms to represent object data
-    in a form that's suitable for processing both by humans and scripts.
-
-    A form is a set of (field, value) specifications, with some initial
-    commented text and interspersed blank lines allowed for convenience.
-    Field names may appear more than once in a form; a comma-separated
-    list of multiple field values may also be specified directly.
-    
-    Field values can be wrapped as in RFC822, with leading whitespace.
-    The longest sequence of leading whitespace common to all the lines
-    is removed (preserving further indentation). There is no limit on
-    the length of a value.
-
-    Multiple forms are separated by a line containing only "--\n".
-
-    (XXX: A more detailed specification will be provided soon. For now,
-    the server-side syntax checking will suffice.)
-
---
-
-Title: topics
-Text:
-
-    Use "rt help <topic>" for help on any of the following subjects:
-
-        - tickets, users, groups, queues.
-        - show, edit, ls/list/search, new/create.
-
-        - query                                 (search query syntax)
-        - forms                                 (form specification)
-
-        - objects                               (how to specify objects)
-        - types                                 (a list of object types)
-        - actions/commands                      (a list of actions)
-        - usage/syntax                          (syntax details)
-        - conf/config/configuration             (configuration details)
-        - examples                              (a few useful examples)
-
---
-
-Title: example
-Title: examples
-Text:
-
-    This section will be filled in with useful examples, once it becomes
-    more clear what examples may be useful.
-
-    For the moment, please consult examples provided with each action.
-
---
diff --git a/rt/bin/rt-commit-handler b/rt/bin/rt-commit-handler
deleted file mode 100644 (file)
index 29e443e..0000000
+++ /dev/null
@@ -1,846 +0,0 @@
-#!/usr/bin/perl -w
-# BEGIN LICENSE BLOCK
-# 
-# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com>
-# 
-# (Except where explictly superceded by other copyright notices)
-# 
-# This work is made available to you under the terms of Version 2 of
-# the GNU General Public License. A copy of that license should have
-# been provided with this software, but in any event can be snarfed
-# from www.gnu.org.
-# 
-# This work is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-# 
-# Unless otherwise specified, all modifications, corrections or
-# extensions to this work which alter its source code become the
-# property of Best Practical Solutions, LLC when submitted for
-# inclusion in the work.
-# 
-# 
-# END LICENSE BLOCK
-
-# {{{ Docs
-# -*-Perl-*-
-#
-#ident "@(#)ccvs/contrib:$Name:  $:$Id: rt-commit-handler,v 1.1 2003-07-15 13:16:15 ivan Exp $"
-#
-# Perl filter to handle the log messages from the checkin of files in multiple
-# directories.  This script will group the lists of files by log message, and
-# send one piece of mail per unique message, no matter how many files are
-# committed.
-
-=head1 NAME rt-commit-handler
-
-=head1 USAGE
-
-
-
-=head2 Regular use
-
-Stick the following in in CVSROOT/commitinfo
-
- ALL     /opt/rt3/bin/rt-commit-handler --record-last-dir
-
-Stick the following  in CVSROOT/loginfo
-
- ALL     /opt/rt3/bin/rt-commit-handler --cvs-root /pathtocvs/root --rt %{Vvts}
-
-=head2 Invocation (advanced use)
-
-rt-commit-handler --cvs-root /path/to/cvs/root [-d] [-D] [-r] [-M module] \
-                [[-m mailto] ...] [[-R replyto] ...] [-f logfile] 
-
-
-       -d              - turn on debugging
-       -m mailto       - send mail to "mailto" (multiple)
-       -R replyto      - set the "Reply-To:" to "replyto" (multiple)
-       -M modulename   - set module name to "modulename"
-       -f logfile      - write commit messages to logfile too
-       -D              - generate diff commands
-        --rt              - invoke RT commit handler
-        --cvs-root       - specify your CVS root 
-
-        --record-last-dir -  Record the last directory with changes in
-                             pre-commit (commitinfo) mode
-
-
-=cut
-
-# }}}
-
-use strict;
-use Carp;
-use Getopt::Long;
-use Text::Wrap;
-use Digest::MD5;
-use MIME::Entity;
-
-use lib ("/opt/rt3/lib", "/opt/rt3/local/lib");
-
-use RT::Interface::CLI qw(CleanEnv GetCurrentUser GetMessageContent loc);
-
-use vars
-  qw(@MAILER $TMPDIR $FILE_PREFIX $LASTDIR_FILE $HASH_FILE $VERSION_FILE             $MESSAGE_FILE $MAIL_FILE $DEBUG $MAILTO $REPLYTO $id $MODULE_NAME
-  $LOGIN $COMMITLOG $CVS_ROOT $RT_HANDLER);
-
-#Clean out all the nasties from the environment
-CleanEnv();
-
-#Load etc/config.pm and drop privs
-RT::LoadConfig();
-
-#Drop setgid permissions
-RT::DropSetGIDPermissions();
-
-# {{{ Variable setup
-$TMPDIR      = '/tmp';
-$FILE_PREFIX = $TMPDIR . '/#cvs.';
-
-# The root of your CVS install. we should get this from some smarter place.
-# It needs a trailing /
-
-$LASTDIR_FILE = $FILE_PREFIX . "lastdir";
-$HASH_FILE    = $FILE_PREFIX . "hash";
-$VERSION_FILE = $FILE_PREFIX . "version";
-$MESSAGE_FILE = $FILE_PREFIX . "message";
-$MAIL_FILE    = $FILE_PREFIX . "mail";
-
-$DEBUG      = 0;
-$RT_HANDLER = 1;
-
-$MAILTO = '';
-
-my @files = ();
-my (@log_lines);
-my $do_diff = 0;
-my $id      = getpgrp();    # note, you *must* use a shell which does setpgrp()
-$LOGIN = getpwuid($<);
-
-# }}}
-
-die "User could not be found" unless ($LOGIN);
-
-# {{{ parse command line arguments (file list is seen as one arg)
-#
-while ( my $arg = shift @ARGV ) {
-
-    if ( $arg eq '-d' ) {
-        $DEBUG = 1;
-        warn "Debug turned on...\n";
-    }
-    elsif ( $arg =~ /^--record-last-dir$/i ) {
-        record_last_dir( $id, $ARGV[0] );
-        exit(0);
-    }
-    elsif ( $arg eq '-m' ) {
-        $MAILTO .= ", " if $MAILTO;
-        $MAILTO .= shift @ARGV;
-    }
-    elsif ( $arg eq '--rt' ) {
-        $RT_HANDLER = 1;
-    }
-    elsif ( $arg eq '-R' ) {
-        $REPLYTO .= ", " if $REPLYTO;
-        $REPLYTO .= shift @ARGV;
-    }
-    elsif ( $arg eq '-M' ) {
-        die ("too many '-M' args\n") if $MODULE_NAME;
-        $MODULE_NAME = shift @ARGV;
-    }
-    elsif ( $arg eq '--cvs-root' ) {
-        $CVS_ROOT = shift @ARGV;
-        $CVS_ROOT .= "/" unless ( $CVS_ROOT =~ /\/$/ );
-    }
-    elsif ( $arg eq '-f' ) {
-        die ("too many '-f' args\n") if $COMMITLOG;
-        $COMMITLOG = shift @ARGV;
-
-        # This is a disgusting hack to untaint $COMMITLOG if we're running from
-        # setgid cvs.
-        $COMMITLOG = untaint($COMMITLOG);
-    }
-    elsif ( $arg eq '-D' ) {
-        $do_diff = 1;
-    }
-    else {
-        @files = split ( ' ', $arg );
-        last;
-    }
-}
-
-# }}}
-
-$REPLYTO = $LOGIN unless ($REPLYTO);
-
-# for now, the first "file" is the repository directory being committed,
-# relative to the $CVSROOT location
-#
-my $dir = shift @files;
-
-# XXX there are some ugly assumptions in here about module names and
-# XXX directories relative to the $CVSROOT location -- really should
-# XXX read $CVSROOT/CVSROOT/modules, but that's not so easy to do, since
-# XXX we have to parse it backwards.
-#
-# XXX For now we set the `module' name to the top-level directory name.
-#
-unless ($MODULE_NAME) {
-    ($MODULE_NAME) = split ( '/', $dir, 2 );
-}
-
-if ($DEBUG) {
-    warn "module - ", $MODULE_NAME, "\n";
-    warn "dir    - ", $dir,         "\n";
-    warn "files  - ", join ( " ", @files ), "\n";
-    warn "id     - ", $id, "\n";
-}
-
-# {{{ Check for a new directory or an import command.
-
-#
-#    files[0] - "-"
-#    files[1] - "New"
-#    files[2] - "directory"
-#
-#    files[0] - "-"
-#    files[1] - "Imported"
-#    files[2] - "sources"
-#
-if ( $files[0] eq "-" ) {
-
-    #we just don't care about  New Directory notes
-    unless ( $files[1] eq "New" && $files[2] eq "directory" ) {
-
-        my @text = ();
-
-        push @text, build_header();
-        push @text, "";
-
-        while ( my $line = <STDIN> ) {
-            chop $line;    # Drop the newline
-            push @text, $line;
-        }
-
-        append_logfile( $COMMITLOG, @text ) if ($COMMITLOG);
-
-        mail_notification( $id, @text );
-    }
-
-    exit 0;
-}
-
-# }}}
-
-# {{{ Collect just the log message from stdin.
-#
-
-while ( my $line = <STDIN> ) {
-    chop $line;    # strip the newline
-    last if ( $line =~ /^Log Message:$/ );
-}
-while ( my $line = <STDIN> ) {
-    chop $line;    # strip the newline
-    $line =~ s/\s+$//;    # strip trailing white space
-    push @log_lines, $line;
-}
-
-my $md5 = Digest::MD5->new();
-foreach my $line (@log_lines) {
-    $md5->add( $line . "\n" );
-}
-my $hash = $md5->hexdigest();
-
-warn "hash = $hash\n" if ($DEBUG);
-
-if ( !-e "$MESSAGE_FILE.$id.$hash" ) {
-    append_logfile( "$HASH_FILE.$id",      $hash );
-    write_file( "$MESSAGE_FILE.$id.$hash", @log_lines );
-}
-
-# }}}
-
-# Spit out the information gathered in this pass.
-
-append_logfile( "$VERSION_FILE.$id.$hash", $dir . '/', @files );
-
-# {{{ Check whether this is the last directory.  If not, quit.
-
-warn "Checking current dir against last dir $LASTDIR_FILE.$id\n" if ($DEBUG);
-
-my @last_dir = read_file("$LASTDIR_FILE.$id");
-
-unless ($CVS_ROOT) {
-    die "No cvs root specified with --cvs-root. Can't continue.";
-}
-
-if ( $last_dir[0] ne $CVS_ROOT . $dir ) {
-    warn "Current directory $CVS_ROOT$dir is not last directory $last_dir[0].\n"
-      if ($DEBUG);
-    exit 0;
-}
-
-# }}}
-
-# {{{ End Of Commits!
-#
-
-# This is it.  The commits are all finished.  Lump everything together
-# into a single message, fire a copy off to the mailing list, and drop
-# it on the end of the Changes file.
-#
-
-#
-# Produce the final compilation of the log messages
-#
-
-my @hashes = read_file("$HASH_FILE.$id");
-my (@text);
-
-push @text, build_header();
-push @text, "";
-
-my ( @added_files, @modified_files, @removed_files );
-
-foreach my $hash (@hashes) {
-
-    # In case we're running setgid, make sure the hash file hasn't been hacked.
-    $hash =~ m/([a-z0-9]*)/ || die "*** Hacking attempt detected\n";
-    $hash = $1;
-
-    my @files     = read_file("$VERSION_FILE.$id.$hash");
-    my @log_lines = read_file("$MESSAGE_FILE.$id.$hash");
-
-    my $working_on_dir;    # gets set as we iterate through the files.
-    foreach my $file (@files) {
-
-        #If we've entered a new directory, make a note of that and remove the trailing /
-
-        if ( $file =~ s'\/$'' ) {
-            $working_on_dir = $file;
-            next;
-        }
-
-        my @file_entry = ( split ( ',', $file, 4 ), $working_on_dir );
-
-        # file_entry looks like ths:
-
-        # 0        1          2      3        4
-        # Old rev : new rev : tag:   file    :directory        
-        my $entry = {};
-        $entry->{'old'}  = $file_entry[0];
-        $entry->{'new'}  = $file_entry[1];
-        $entry->{'tag'}  = $file_entry[2];
-        $entry->{'file'} = $file_entry[3];
-        $entry->{'dir'}  = $file_entry[4];
-
-        if ( $file_entry[0] eq 'NONE' ) {
-            $entry->{'old'} = '0';
-            push @added_files, $entry;
-        }
-        elsif ( $file_entry[1] eq 'NONE' ) {
-            $entry->{'new'} = '0';
-            push @removed_files, $entry;
-        }
-        else {
-            push @modified_files, $entry;
-        }
-    }
-}
-
-# }}}
-
-# {{{ start building up the body
-
-# Strip leading and trailing blank lines from the log message.  Also
-# compress multiple blank lines in the body of the message down to a
-# single blank line.
-#
-
-my $blank = 1;
-@log_lines = map {
-    my $wasblank = $blank;
-    $blank = $_ eq '';
-    $blank && $wasblank ? () : $_;
-} @log_lines;
-
-pop @log_lines if $blank;
-
-@modified_files = order_and_summarize_diffs(@modified_files);
-@added_files    = order_and_summarize_diffs(@added_files);
-@removed_files  = order_and_summarize_diffs(@removed_files);
-
-push @text, "Modified Files:", format_lists(@modified_files)
-  if (@modified_files);
-
-push @text, "Added Files:", format_lists(@added_files) if (@added_files);
-
-push @text, "Removed Files:", format_lists(@removed_files) if (@removed_files);
-
-push @text, "", "Log Message", @log_lines if (@log_lines);
-
-push @text, "";
-
-if ($RT_HANDLER) {
-    rt_handler(
-        @log_lines,                             "\n",
-        loc("To generate a diff of this commit:\n"), "\n",
-        format_diffs( @modified_files, @added_files, @removed_files )
-    );
-}
-
-if ($COMMITLOG) {
-    append_logfile( $COMMITLOG, @text );
-}
-
-if ($do_diff) {
-    push @text, "";
-    push @text, loc("To generate a diff of this commit:");
-    push @text, format_diffs( @modified_files, @added_files, @removed_files );
-    push @text, "";
-}
-
-# }}}
-
-# {{{ Mail out the notification.
-
-mail_notification( $id, @text );
-
-# }}} 
-
-# {{{ clean up
-
-unless ($DEBUG) {
-    $hash = untaint($hash);
-    $id   = untaint($id);
-    unlink "$VERSION_FILE.$id.$hash";
-    unlink "$MESSAGE_FILE.$id.$hash";
-    unlink "$MAIL_FILE.$id";
-    unlink "$LASTDIR_FILE.$id";
-    unlink "$HASH_FILE.$id";
-}
-
-# }}}
-
-exit 0;
-
-# {{{ Subroutines
-#
-
-# {{{ append_logfile
-sub append_logfile {
-    my $filename = shift;
-    my (@lines) = @_;
-
-    $filename = untaint($filename);
-
-    open( FILE, ">>$filename" )
-      || die ("Cannot open file $filename for append.\n");
-    foreach my $line (@lines) {
-        print FILE $line . "\n";
-    }
-    close(FILE);
-}
-
-# }}}
-
-# {{{ write_file
-sub write_file {
-    my $filename = shift;
-    my (@lines) = @_;
-
-    $filename = untaint($filename);
-
-    open( FILE, ">$filename" )
-      || die ("Cannot open file $filename for write.\n");
-    foreach my $line (@lines) {
-        print FILE $line . "\n";
-    }
-    close(FILE);
-}
-
-# }}}
-
-# {{{ read_file
-sub read_file {
-    my $filename = shift;
-    my (@lines);
-
-    open( FILE, "<$filename" )
-      || die ("Cannot open file $filename for read.\n");
-    while ( my $line = <FILE> ) {
-        chop $line;
-        push @lines, $line;
-    }
-    close(FILE);
-
-    return (@lines);
-}
-
-# }}}
-
-# {{{ sub format_lists
-
-sub format_lists {
-    my @items = (@_);
-
-    my $files = "";
-    map {
-        $_->{'files'} && ( $files .= ' ' . join ( ' ', @{ $_->{'files'} } ) );
-    } @items;
-
-    my @lines = wrap( "\t", "\t\t", $files );
-    return (@lines);
-
-}
-
-# }}}
-
-# {{{ sub format_diffs
-
-sub format_diffs {
-    my @items = (@_);
-
-    my @lines;
-    foreach my $item (@items) {
-        next unless ( $item->{'files'} );
-        push ( @lines,
-            "cvs diff -r"
-              . $item->{'old'} . " -r"
-              . $item->{'new'} . " "
-              . join ( " ", @{ $item->{'files'} } ) . "\n" );
-
-    }
-
-    @lines = fill( "\t", "\t\t", @lines );
-
-    return (@lines);
-}
-
-# }}}
-
-# {{{ sub order_and_summarize_diffs {
-
-# takes an array of file items
-# returns a sorted array of fileset items, which are like file items, except they can have an array of files, rather than 
-# a singleton file.
-
-sub order_and_summarize_diffs {
-
-    my @files = (@_);
-
-    # Sort by tag, dir, file.
-    @files = sort {
-        $a->{'tag'} cmp $b->{'tag'}
-          || $a->{'dir'} cmp $b->{'dir'}
-          || $a->{'file'} cmp $b->{'file'};
-    } @files;
-
-    # Combine adjacent rows that are the same modulo the file name.
-
-    my @items = (undef);
-
-    foreach my $file (@files) {
-        if ( $#items == -1    #if it's empty
-            || ( !defined $items[-1]->{'old'}
-                || $items[-1]->{'old'} ne $file->{'old'} )
-            || ( !defined $items[-1]->{'new'}
-                || $items[-1]->{'new'} ne $file->{'new'} )
-            || ( !defined $items[-1]->{'tag'}
-                || $items[-1]->{'tag'} ne $file->{'tag'} ) )
-        {
-
-            push ( @items, $file );
-        }
-        push ( @{ $items[-1]->{'files'} },
-            $file->{'dir'} . "/" . $file->{'file'} );
-    }
-
-    return (@items);
-}
-
-# }}}
-
-# {{{ build_header
-
-sub build_header {
-    my $now    = gmtime;
-    my $header =
-      sprintf( "Module Name:\t%s\nCommitted By:\t%s\nDate:\t\t%s %s %s",
-        $MODULE_NAME, $LOGIN, substr( $now, 0, 19 ), "UTC",
-        substr( $now, 20, 4 ) );
-    return ($header);
-}
-
-# }}}
-
-# {{{ mail_notification
-sub mail_notification {
-    my $id = shift;
-    my (@text) = @_;
-    write_file( "$MAIL_FILE.$id", "From: " . $LOGIN,
-        "Subject: CVS commit: " . $MODULE_NAME, "To: " . $MAILTO,
-        "Reply-To: " . $REPLYTO,                "", "", @text );
-
-    my $entity = MIME::Entity->build(
-        From       => $LOGIN,
-        To         => $MAILTO,
-        Subject    => "CVS commit: " . $MODULE_NAME,
-        'Reply-To' => $REPLYTO,
-        Data       => join ( "\n", @text )
-    );
-    if ( $RT::MailCommand eq 'sendmailpipe' ) {
-        open( MAIL, "|$RT::SendmailPath $RT::SendmailArguments" )
-          || die "Couldn't send mail: " . $@ . "\n";
-        print MAIL $entity->as_string;
-        close(MAIL);
-    }
-    else {
-        $entity->send( $RT::MailCommand, $RT::MailParams );
-    }
-
-}
-
-# }}}
-
-# {{{ sub record_last_dir
-
-sub record_last_dir {
-    my $id  = shift;
-    my $dir = shift;
-
-    # make a note of this directory. later, we'll use this to 
-    # figure out if we've gone through the whole commit,
-    # for something that is a bad mockery of attomic commits.
-
-    warn "about to write $dir to $LASTDIR_FILE.$id" if ($DEBUG);
-
-    write_file( "$LASTDIR_FILE.$id", $dir );
-}
-
-# }}}
-
-# {{{ Get the RT stuff set up
-
-# {{{ sub rt_handler 
-
-sub rt_handler {
-    my (@LogMessage) = (@_);
-
-    #Connect to the database and get RT::SystemUser and RT::Nobody loaded
-    RT::Init;
-
-    require RT::Ticket;
-
-    #Get the current user all loaded
-    my $CurrentUser = GetCurrentUser();
-
-    if ( !$CurrentUser->Id ) {
-        print
-loc("No valid RT user found. RT cvs handler disengaged. Please consult your RT administrator.\n");
-        return;
-    }
-
-    my (@commands) = find_commands( \@LogMessage );
-
-    my ( @tickets, @errors );
-
-    # Get the list of tickets we're working with out of commands
-    grep { $_ =~ /^RT-Ticket:\s*(.*?)$/i && push ( @tickets, $1 ) } @commands;
-
-    my $message = new MIME::Entity;
-    $message->build(
-        From    => $CurrentUser->EmailAddress,
-        Subject => 'CVS Commit',
-        Data    => \@LogMessage
-    );
-
-    # {{{ comment or correspond, as needed
-
-    foreach my $ticket (@tickets) {
-        my $TicketObj = RT::Ticket->new($CurrentUser);
-        $TicketObj->Load($ticket);
-        my ( $id, $msg );
-        unless ( $TicketObj->Id ) {
-            push ( @errors,
-"Couldn't load ticket #$ticket. Not adding commit log to ticket history.\n"
-            );
-        }
-
-        if ( $LogMessage[0] =~ /^(comment|private)$/ ) {
-            ( $id, $msg ) = $TicketObj->Comment( MIMEObj => $message );
-
-        }
-        else {
-            ( $id, $msg ) = $TicketObj->Correspond( MIMEObj => $message );
-        }
-
-        push ( @errors, ">> Log message",
-            "Ticket #" . $TicketObj->Id . ": " . $msg );
-
-    }
-
-    # }}}
-
-    my ($reply) = ActOnPseudoHeaders( $CurrentUser, @commands );
-    print "$reply\n" if ($reply);
-    print join ( "\n", @errors );
-    print "\n";
-
-}
-
-# }}}
-
-# {{{ sub find_commands
-
-sub find_commands {
-    my $lines = shift;
-    my (@pseudoheaders);
-
-    while ( my $line = shift @{$lines} ) {
-        next if $line =~ /^\s*?$/;
-        if ( $line =~ /^RT-/i ) {
-
-            push ( @pseudoheaders, $line );
-        }
-
-        #If we find a line that's not a command, get out.
-        else {
-            unshift ( @{$lines}, $line );
-            last;
-        }
-    }
-
-    return (@pseudoheaders);
-
-}
-
-# }}}
-
-# {{{ sub ActOnPseudoHeaders
-
-=item ActOnPseudoHeaders $PseudoHeaders
-
-Takes a string of pseudo-headers, iterates through them and does what they tell it to.
-
-=cut
-
-sub ActOnPseudoHeaders {
-    my $CurrentUser = shift;
-    my (@actions) = (@_);
-
-    my $ResultsMessage = '';
-    my $Ticket         = RT::Ticket->new($CurrentUser);
-
-    foreach my $action (@actions) {
-        my ($val);
-        my $msg = '';
-
-        $ResultsMessage .= ">>> $action\n";
-
-        if ( $action =~ /^RT-(.*?):\s*(.*)$/i ) {
-            my $command = $1;
-            my $args    = $2;
-
-            if ( $command =~ /^ticket$/i ) {
-
-                $val = $Ticket->Load($args);
-                unless ($val) {
-                    $ResultsMessage .=
-                      loc("ERROR: Couldn't load ticket '[_1]': [_2].\n", $1, $msg);
-                      . loc("Aborting to avoid unintended ticket modifications.\n")
-                      . loc("The following commands were not proccessed:\n\n")
-                      . join ( "\n", @actions );
-                    return ($ResultsMessage);
-                }
-                $ResultsMessage .= loc("Ticket [_1] loaded\n", $Ticket->Id);
-            }
-            else {
-                unless ( $Ticket->Id ) {
-                    $ResultsMessage .= loc("No Ticket specified. Aborting ticket ")
-                      . loc("modifications\n\n")
-                      . loc("The following commands were not proccessed:\n\n")
-                      . join ( "\n", @actions );
-                    return ($ResultsMessage);
-                }
-
-                # Deal with the basics
-                if ( $command =~ /^(Subject|Owner|Status|Queue)$/i ) {
-                    my $method = 'Set' . ucfirst( lc($1) );
-                    ( $val, $msg ) = $Ticket->$method($args);
-                }
-
-                # Deal with the dates
-                elsif ( $command =~ /^(due|starts|started|resolved)$/i ) {
-                    my $method = 'Set' . ucfirst( lc($1) );
-                    my $date   = new RT::Date($CurrentUser);
-                    $date->Set( Format => 'unknown', Value => $args );
-                    ( $val, $msg ) = $Ticket->$method( $date->ISO );
-                }
-
-                # Deal with the watchers
-                elsif ( $command =~ /^(requestor|requestors|cc|admincc)$/i ) {
-                    my $operator = "+";
-                    my ($type);
-                    if ( $args =~ /^(\+|\-)(.*)$/ ) {
-                        $operator = $1;
-                        $args     = $2;
-                    }
-                    $type = 'Requestor' if ( $command =~ /^requestor/i );
-                    $type = 'Cc'        if ( $command =~ /^cc/i );
-                    $type = 'AdminCc'   if ( $command =~ /^admincc/i );
-
-                       my $user = RT::User->new($CurrentUser);
-                    $user->Load($args);
-
-                    if ($operator eq '+') {
-                        ($val, $msg) = $Ticket->AddWatcher( Type => $type,
-                                                            PrincipalId => $user->PrincipalId);
-                    } elsif ($operator eq '-') {
-                        ($val, $msg) = $Ticket->DeleteWatcher( Type => $type,
-                                                               PrincipalId => $user->PrincipalId);
-                    }
-
-            }
-            $ResultsMessage .= $msg . "\n";
-        }
-
-    }
-    return ($ResultsMessage);
-
-}
-
-# }}}
-
-# {{{ sub untaint 
-sub untaint {
-    my $val = shift;
-
-    if ( $val =~ /^([-\#\/\w.]+)$/ ) {
-        $val = $1;    # $data now untainted
-    }
-    else {
-        die loc("Bad data in [_1]", $val);    # log this somewhere
-    }
-    return ($val);
-}
-
-# }}}
-
-=head1 AUTHOR
-
-
-
-  rt-commit-handler is a rewritten version of the NetBSD commit handler,
-  which was placed in the public domain by Charles Hannum. It bore the following
-  authors statement:
-
- Contributed by David Hampton <hampton@cisco.com>
- Hacked greatly by Greg A. Woods <woods@planix.com>
- Rewritten by Charles M. Hannum <mycroft@netbsd.org>
-
-=cut
-
diff --git a/rt/bin/rt-crontool b/rt/bin/rt-crontool
deleted file mode 100644 (file)
index cdbc3cb..0000000
+++ /dev/null
@@ -1,220 +0,0 @@
-#!/usr/bin/perl
-# BEGIN LICENSE BLOCK
-# 
-# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com>
-# 
-# (Except where explictly superceded by other copyright notices)
-# 
-# This work is made available to you under the terms of Version 2 of
-# the GNU General Public License. A copy of that license should have
-# been provided with this software, but in any event can be snarfed
-# from www.gnu.org.
-# 
-# This work is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-# 
-# Unless otherwise specified, all modifications, corrections or
-# extensions to this work which alter its source code become the
-# property of Best Practical Solutions, LLC when submitted for
-# inclusion in the work.
-# 
-# 
-# END LICENSE BLOCK
-
-use strict;
-use Carp;
-
-use lib ("/opt/rt3/lib", "/opt/rt3/local/lib");
-
-package RT;
-
-use Getopt::Long;
-
-use RT::Interface::CLI qw(CleanEnv GetCurrentUser GetMessageContent loc);
-use RT::Tickets;
-use RT::Template;
-
-#Clean out all the nasties from the environment
-CleanEnv();
-
-# Load the config file
-RT::LoadConfig();
-
-#Connect to the database and get RT::SystemUser and RT::Nobody loaded
-RT::Init();
-
-#Drop setgid permissions
-RT::DropSetGIDPermissions();
-
-#Get the current user all loaded
-my $CurrentUser = GetCurrentUser();
-
-unless ( $CurrentUser->Id ) {
-    print loc("No RT user found. Please consult your RT administrator.\n");
-    exit(1);
-}
-
-my ( $search, $condition, $action, $search_arg, $condition_arg, $action_arg,
-     $template_id, $help, $verbose );
-GetOptions( "search=s"        => \$search,
-            "search-arg=s"    => \$search_arg,
-            "condition=s"     => \$condition,
-            "condition-arg=s" => \$condition_arg,
-            "action-arg=s"    => \$action_arg,
-            "action=s"        => \$action,
-           "template-id=s"   => \$template_id,
-            "help"            => \$help,
-            "verbose|v"       => \$verbose );
-
-help() if $help;
-
-# We _must_ have a search object
-load_module($search);
-load_module($action)    if ($action);
-load_module($condition) if ($condition);
-
-# load template if specified
-my $template_obj;
-if ($template_id) {
-    $template_obj = RT::Template->new($RT::Nobody);
-    $template_obj->LoadById($template_id);
-}
-
-#At the appointed time:
-
-#find a bunch of tickets
-my $tickets = RT::Tickets->new($CurrentUser);
-my $search  = $search->new( TicketsObj => $tickets, Argument => $search_arg );
-
-$search->Prepare();
-
-# TicketsFound is an RT::Tickets object
-my $tickets = $search->TicketsObj;
-
-#for each ticket we've found
-while ( my $ticket = $tickets->Next() ) {
-    print "\n" . $ticket->Id() . ": " if ($verbose);
-
-    # perform some more advanced check
-    if ($condition) {
-        my $condition_obj = $condition->new( TicketObj => $ticket,
-                                             Argument  => $condition_arg );
-
-        # if the condition doesn't apply, get out of here
-
-        next unless ( $condition_obj->IsApplicable );
-        print loc("Condition matches...") if ($verbose);
-    }
-
-    #prepare our action
-    my $action_obj = $action->new( TicketObj => $ticket,
-                                  TemplateObj => $template_obj,
-                                   Argument  => $action_arg );
-
-    #if our preparation, move onto the next ticket
-    next unless ( $action_obj->Prepare );
-    print loc("Action prepared...") if ($verbose);
-
-    #commit our action.
-    next unless ( $action_obj->Commit );
-    print loc("Action committed.") if ($verbose);
-}
-
-# {{{ load_module 
-
-=head2 load_module
-
-Loads a perl module, dying nicely if it can't find it.
-
-=cut
-
-sub load_module {
-    my $modname = shift;
-    eval "require $modname";
-    if ($@) {
-        die loc( "Failed to load module [_1]. ([_2])", $modname, $@ );
-    }
-
-}
-
-# }}}
-
-# {{{ loc 
-
-=head2 loc LIST
-
-Localize this string, with the current user's currentuser object
-
-=cut
-
-sub loc {
-    $CurrentUser->loc(@_);
-}
-
-# }}}
-
-sub help {
-
-    print loc( "[_1] is a tool to act on tickets from an external scheduling tool, such as cron.", $0 )
-      . "\n";
-    print loc("It takes several arguments:") . "\n\n";
-
-    print "    "
-      . loc( "[_1] - Specify the search module you want to use", "--search" )
-      . "\n";
-    print "    "
-      . loc( "[_1] - An argument to pass to [_2]", "--search-argument", "--search" )
-      . "\n";
-
-    print "    "
-      . loc( "[_1] - Specify the condition module you want to use", "--condition" )
-      . "\n";
-    print "    "
-      . loc( "[_1] - An argument to pass to [_2]", "--condition-argument", "--condition" )
-      . "\n";
-    print "    "
-      . loc( "[_1] - Specify the action module you want to use", "--action" )
-      . "\n";
-    print "    "
-      . loc( "[_1] - An argument to pass to [_2]", "--action-argument", "--action" )
-      . "\n";
-    print "    "
-      . loc( "[_1] - Output status updates to STDOUT", "--verbose" ) . "\n";
-    print "\n";
-    print "\n";
-    print loc("Security:")."\n";
-    print loc("This tool allows the user to run arbitrary perl modules from within RT.")." ". 
-        loc("If this tool were setgid, a hostile local user could use this tool to gain administrative access to RT.")." ".
-        loc("It is incredibly important that nonprivileged users not be allowed to run this tool."). " " . 
-        loc("It is suggested that you create a non-privileged unix user with the correct group membership and RT access to run this tool.")."\n";
-    print "\n";
-    print loc("Example:");
-    print "\n";
-    print " "
-      . loc( "The following command will find all active tickets in the queue 'general' and set their priority to 99 if they haven't been touched in 4 hours:"
-      )
-      . "\n\n";
-
-    print " bin/rt-cron-tool \\\n";
-    print
-      "  --search RT::Search::ActiveTicketsInQueue  --search-arg general \\\n";
-    print
-      "  --condition RT::Condition::UntouchedInHours --condition-arg 4 \\\n";
-    print "  --action RT::Action::SetPriority --action-arg 99 \\\n";
-    print "  --verbose\n";
-
-    print "\n";
-    print loc("Escalate tickets");
-    print "rt-crontool \\\n";
-    print " --search RT::Search::ActiveTicketsInQueue  --search-arg thequeuename \\\n";
-    print " --action RT::Action::EscalatePriority \\\n";
-
-
-
-    exit(0);
-}
diff --git a/rt/bin/rt-mailgate b/rt/bin/rt-mailgate
deleted file mode 100755 (executable)
index 8af8002..0000000
+++ /dev/null
@@ -1,648 +0,0 @@
-#!/usr/bin/perl -w
-# BEGIN LICENSE BLOCK
-# 
-# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com>
-# 
-# (Except where explictly superceded by other copyright notices)
-# 
-# This work is made available to you under the terms of Version 2 of
-# the GNU General Public License. A copy of that license should have
-# been provided with this software, but in any event can be snarfed
-# from www.gnu.org.
-# 
-# This work is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-# 
-# Unless otherwise specified, all modifications, corrections or
-# extensions to this work which alter its source code become the
-# property of Best Practical Solutions, LLC when submitted for
-# inclusion in the work.
-# 
-# 
-# END LICENSE BLOCK
-
-=head1 NAME
-
-rt-mailgate - Mail interface to RT3.
-
-=begin testing
-
-use RT::I18N;
-
-# Make sure that when we call the mailgate wrong, it tempfails
-
-ok(open(MAIL, "|/opt/rt3/bin/rt-mailgate --url http://bad.address"), "Opened the mailgate - The error below is expected - $@");
-print MAIL <<EOF;
-From: root\@localhost
-To: rt\@example.com
-Subject: This is a test of new ticket creation
-
-Foob!
-EOF
-close (MAIL);
-
-# Check the return value
-is ( $? >> 8, 75, "The error message above is expected The mail gateway exited with a failure. yay");
-
-
-# {{{ Test new ticket creation by root who is privileged and superuser
-
-ok(open(MAIL, "|/opt/rt3/bin/rt-mailgate --url http://localhost".$RT::WebPath."/ --queue general --action correspond"), "Opened the mailgate - $@");
-print MAIL <<EOF;
-From: root\@localhost
-To: rt\@example.com
-Subject: This is a test of new ticket creation
-
-Blah!
-Foob!
-EOF
-close (MAIL);
-
-#Check the return value
-is ($? >> 8, 0, "The mail gateway exited normally. yay");
-
-use RT::Tickets;
-my $tickets = RT::Tickets->new($RT::SystemUser);
-$tickets->OrderBy(FIELD => 'id', ORDER => 'DESC');
-$tickets->Limit(FIELD => 'id', OPERATOR => '>', VALUE => '0');
-my $tick = $tickets->First();
-ok (UNIVERSAL::isa($tick,'RT::Ticket'));
-ok ($tick->Id, "found ticket ".$tick->Id);
-ok ($tick->Subject eq 'This is a test of new ticket creation', "Created the ticket");
-
-# }}}
-
-
-# {{{This is a test of new ticket creation as an unknown user
-
-ok(open(MAIL, "|/opt/rt3/bin/rt-mailgate --url http://localhost".$RT::WebPath."/ --queue general --action correspond"), "Opened the mailgate - $@");
-print MAIL <<EOF;
-From: doesnotexist\@example.com
-To: rt\@example.com
-Subject: This is a test of new ticket creation as an unknown user
-
-Blah!
-Foob!
-EOF
-close (MAIL);
-#Check the return value
-is ($? >> 8, 0, "The mail gateway exited normally. yay");
-
-$tickets = RT::Tickets->new($RT::SystemUser);
-$tickets->OrderBy(FIELD => 'id', ORDER => 'DESC');
-$tickets->Limit(FIELD => 'id' ,OPERATOR => '>', VALUE => '0');
-$tick = $tickets->First();
-ok ($tick->Id, "found ticket ".$tick->Id);
-ok ($tick->Subject ne 'This is a test of new ticket creation as an unknown user', "failed to create the new ticket from an unprivileged account");
-my $u = RT::User->new($RT::SystemUser);
-$u->Load('doesnotexist@example.com');
-ok( $u->Id == 0, " user does not exist and was not created by failed ticket submission");
-
-
-# }}}
-
-# {{{ now everybody can create tickets.  can a random unkown user create tickets?
-
-my $g = RT::Group->new($RT::SystemUser);
-$g->LoadSystemInternalGroup('Everyone');
-ok( $g->Id, "Found 'everybody'");
-
-my ($val,$msg) = $g->PrincipalObj->GrantRight(Right => 'CreateTicket');
-ok ($val, "Granted everybody the right to create tickets - $msg");
-
-sleep(60); # gotta sleep so the remote process' ACL cache times out
-
-ok(open(MAIL, "|/opt/rt3/bin/rt-mailgate --url http://localhost".$RT::WebPath."/ --queue general --action correspond"), "Opened the mailgate - $@");
-print MAIL <<EOF;
-From: doesnotexist\@example.com
-To: rt\@example.com
-Subject: This is a test of new ticket creation as an unknown user
-
-Blah!
-Foob!
-EOF
-close (MAIL);
-#Check the return value
-is ($? >> 8, 0, "The mail gateway exited normally. yay");
-
-
-$tickets = RT::Tickets->new($RT::SystemUser);
-$tickets->OrderBy(FIELD => 'id', ORDER => 'DESC');
-$tickets->Limit(FIELD => 'id' ,OPERATOR => '>', VALUE => '0');
-$tick = $tickets->First();
-ok ($tick->Id, "found ticket ".$tick->Id);
-ok ($tick->Subject eq 'This is a test of new ticket creation as an unknown user', "failed to create the new ticket from an unprivileged account");
-my $u = RT::User->new($RT::SystemUser);
-$u->Load('doesnotexist@example.com');
-ok( $u->Id != 0, " user does not exist and was created by ticket submission");
-
-# }}}
-
-
-# {{{  can another random reply to a ticket without being granted privs? answer should be no.
-
-
-#($val,$msg) = $g->PrincipalObj->GrantRight(Right => 'CreateTicket');
-#ok ($val, "Granted everybody the right to create tickets - $msg");
-#sleep(60); # gotta sleep so the remote process' ACL cache times out
-
-ok(open(MAIL, "|/opt/rt3/bin/rt-mailgate --url http://localhost".$RT::WebPath."/ --queue general --action correspond"), "Opened the mailgate - $@");
-print MAIL <<EOF;
-From: doesnotexist-2\@example.com
-To: rt\@example.com
-Subject: [example.com #@{[$tick->Id]}] This is a test of a reply as an unknown user
-
-Blah!
-Foob!
-EOF
-close (MAIL);
-#Check the return value
-is ($? >> 8, 0, "The mail gateway exited normally. yay");
-
-$u = RT::User->new($RT::SystemUser);
-$u->Load('doesnotexist-2@example.com');
-ok( $u->Id == 0, " user does not exist and was not created by ticket correspondence submission");
-# }}}
-# {{{  can another random reply to a ticket after being granted privs? answer should be yes
-
-
-($val,$msg) = $g->PrincipalObj->GrantRight(Right => 'ReplyToTicket');
-ok ($val, "Granted everybody the right to reply to  tickets - $msg");
-sleep(60); # gotta sleep so the remote process' ACL cache times out
-
-ok(open(MAIL, "|/opt/rt3/bin/rt-mailgate --url http://localhost".$RT::WebPath."/ --queue general --action correspond"), "Opened the mailgate - $@");
-print MAIL <<EOF;
-From: doesnotexist-2\@example.com
-To: rt\@example.com
-Subject: [example.com #@{[$tick->Id]}] This is a test of a reply as an unknown user
-
-Blah!
-Foob!
-EOF
-close (MAIL);
-#Check the return value
-is ($? >> 8, 0, "The mail gateway exited normally. yay");
-
-
-$u = RT::User->new($RT::SystemUser);
-$u->Load('doesnotexist-2@example.com');
-ok( $u->Id != 0, " user exists and was created by ticket correspondence submission");
-
-# }}}
-
-# {{{  can another random comment on a ticket without being granted privs? answer should be no.
-
-
-#($val,$msg) = $g->PrincipalObj->GrantRight(Right => 'CreateTicket');
-#ok ($val, "Granted everybody the right to create tickets - $msg");
-#sleep(60); # gotta sleep so the remote process' ACL cache times out
-
-ok(open(MAIL, "|/opt/rt3/bin/rt-mailgate --url http://localhost".$RT::WebPath."/ --queue general --action comment"), "Opened the mailgate - $@");
-print MAIL <<EOF;
-From: doesnotexist-3\@example.com
-To: rt\@example.com
-Subject: [example.com #@{[$tick->Id]}] This is a test of a comment as an unknown user
-
-Blah!
-Foob!
-EOF
-close (MAIL);
-
-#Check the return value
-is ($? >> 8, 0, "The mail gateway exited normally. yay");
-
-$u = RT::User->new($RT::SystemUser);
-$u->Load('doesnotexist-3@example.com');
-ok( $u->Id == 0, " user does not exist and was not created by ticket comment submission");
-
-# }}}
-# {{{  can another random reply to a ticket after being granted privs? answer should be yes
-
-
-($val,$msg) = $g->PrincipalObj->GrantRight(Right => 'CommentOnTicket');
-ok ($val, "Granted everybody the right to reply to  tickets - $msg");
-sleep(60); # gotta sleep so the remote process' ACL cache times out
-
-ok(open(MAIL, "|/opt/rt3/bin/rt-mailgate --url http://localhost".$RT::WebPath."/ --queue general --action comment"), "Opened the mailgate - $@");
-print MAIL <<EOF;
-From: doesnotexist-3\@example.com
-To: rt\@example.com
-Subject: [example.com #@{[$tick->Id]}] This is a test of a comment as an unknown user
-
-Blah!
-Foob!
-EOF
-close (MAIL);
-
-#Check the return value
-is ($? >> 8, 0, "The mail gateway exited normally. yay");
-
-$u = RT::User->new($RT::SystemUser);
-$u->Load('doesnotexist-3@example.com');
-ok( $u->Id != 0, " user exists and was created by ticket comment submission");
-
-# }}}
-
-# {{{ Testing preservation of binary attachments
-
-# Get a binary blob (Best Practical logo) 
-
-# Create a mime entity with an attachment
-
-use MIME::Entity;
-my $entity = MIME::Entity->build( From => 'root@localhost',
-                                 To => 'rt@localhost',
-                                Subject => 'binary attachment test',
-                                Data => ['This is a test of a binary attachment']);
-
-# currently in lib/t/autogen
-$entity->attach(Path => '/opt/rt3/share/html/NoAuth/images/spacer.gif', 
-                Type => 'image/gif',
-                Encoding => 'base64');
-
-# Create a ticket with a binary attachment
-ok(open(MAIL, "|/opt/rt3/bin/rt-mailgate --url http://localhost".$RT::WebPath."/ --queue general --action correspond"), "Opened the mailgate - $@");
-
-$entity->print(\*MAIL);
-
-close (MAIL);
-
-#Check the return value
-is ($? >> 8, 0, "The mail gateway exited normally. yay");
-
-my $tickets = RT::Tickets->new($RT::SystemUser);
-$tickets->OrderBy(FIELD => 'id', ORDER => 'DESC');
-$tickets->Limit(FIELD => 'id', OPERATOR => '>', VALUE => '0');
- $tick = $tickets->First();
-ok (UNIVERSAL::isa($tick,'RT::Ticket'));
-ok ($tick->Id, "found ticket ".$tick->Id);
-ok ($tick->Subject eq 'binary attachment test', "Created the ticket - ".$tick->Id);
-
-my $file = `cat ../../../html/NoAuth/images/spacer.gif`;
-ok ($file, "Read in the logo image");
-
-
-        use Digest::MD5;
-warn "for the raw file the content is ".Digest::MD5::md5_base64($file);
-
-
-
-# Verify that the binary attachment is valid in the database
-my $attachments = RT::Attachments->new($RT::SystemUser);
-$attachments->Limit(FIELD => 'ContentType', VALUE => 'image/gif');
-ok ($attachments->Count == 1, 'Found only one gif in the database');
-my $attachment = $attachments->First;
-my $acontent = $attachment->Content;
-
-        warn "coming from the  database, the content is ".Digest::MD5::md5_base64($acontent);
-
-is( $acontent, $file, 'The attachment isn\'t screwed up in the database.');
-# Log in as root
-use Getopt::Long;
-use LWP::UserAgent;
-
-
-# Grab the binary attachment via the web ui
-my $ua      = LWP::UserAgent->new();
-
-my $full_url = "http://localhost".$RT::WebPath."/Ticket/Attachment/".$attachment->TransactionId."/".$attachment->id."/spacer.gif?&user=root&pass=password";
-my $r = $ua->get( $full_url);
-
-
-# Verify that the downloaded attachment is the same as what we uploaded.
-is($file, $r->content, 'The attachment isn\'t screwed up in download');
-
-
-
-# }}}
-
-# {{{ Simple I18N testing
-
-ok(open(MAIL, "|/opt/rt3/bin/rt-mailgate --url http://localhost".$RT::WebPath."/ --queue general --action correspond"), "Opened the mailgate - $@");
-                                                                         
-print MAIL <<EOF;
-From: root\@localhost
-To: rtemail\@example.com
-Subject: This is a test of I18N ticket creation
-Content-Type: text/plain; charset="utf-8"
-
-2 accented lines
-\303\242\303\252\303\256\303\264\303\273
-\303\241\303\251\303\255\303\263\303\272
-bye
-EOF
-close (MAIL);
-
-#Check the return value
-is ($? >> 8, 0, "The mail gateway exited normally. yay");
-
-my $unitickets = RT::Tickets->new($RT::SystemUser);
-$unitickets->OrderBy(FIELD => 'id', ORDER => 'DESC');
-$unitickets->Limit(FIELD => 'id', OPERATOR => '>', VALUE => '0');
-my $unitick = $unitickets->First();
-ok (UNIVERSAL::isa($unitick,'RT::Ticket'));
-ok ($unitick->Id, "found ticket ".$unitick->Id);
-ok ($unitick->Subject eq 'This is a test of I18N ticket creation', "Created the ticket - ". $unitick->Subject);
-
-
-
-my $unistring = "\303\241\303\251\303\255\303\263\303\272";
-Encode::_utf8_on($unistring);
-is ($unitick->Transactions->First->Content, $unitick->Transactions->First->Attachments->First->Content, "Content is ". $unitick->Transactions->First->Attachments->First->Content);
-ok($unitick->Transactions->First->Attachments->First->Content =~ /$unistring/i, $unitick->Id." appears to be unicode ". $unitick->Transactions->First->Attachments->First->Id);
-# supposedly I18N fails on the second message sent in.
-
-ok(open(MAIL, "|/opt/rt3/bin/rt-mailgate --url http://localhost".$RT::WebPath."/ --queue general --action correspond"), "Opened the mailgate - $@");
-                                                                         
-print MAIL <<EOF;
-From: root\@localhost
-To: rtemail\@example.com
-Subject: This is a test of I18N ticket creation
-Content-Type: text/plain; charset="utf-8"
-
-2 accented lines
-\303\242\303\252\303\256\303\264\303\273
-\303\241\303\251\303\255\303\263\303\272
-bye
-EOF
-close (MAIL);
-
-#Check the return value
-is ($? >> 8, 0, "The mail gateway exited normally. yay");
-
-my $tickets2 = RT::Tickets->new($RT::SystemUser);
-$tickets2->OrderBy(FIELD => 'id', ORDER => 'DESC');
-$tickets2->Limit(FIELD => 'id', OPERATOR => '>', VALUE => '0');
-my $tick2 = $tickets2->First();
-ok (UNIVERSAL::isa($tick2,'RT::Ticket'));
-ok ($tick2->Id, "found ticket ".$tick2->Id);
-ok ($tick2->Subject eq 'This is a test of I18N ticket creation', "Created the ticket");
-
-
-
-my $unistring = "\303\241\303\251\303\255\303\263\303\272";
-Encode::_utf8_on($unistring);
-
-ok ($tick2->Transactions->First->Content =~ $unistring, "It appears to be unicode - ".$tick2->Transactions->First->Content);
-
-# }}}
-
-
-($val,$msg) = $g->PrincipalObj->RevokeRight(Right => 'CreateTicket');
-ok ($val, $msg);
-
-
-
-=end testing
-
-=cut
-
-
-use strict;
-use Getopt::Long;
-use LWP::UserAgent;
-
-use constant EX_TEMPFAIL => 75;
-
-my %opts;
-GetOptions( \%opts, "queue=s", "action=s", "url=s", "jar=s", "help", "debug", "extension=s", "timeout=i" );
-
-if ( $opts{help} ) {
-    require Pod::Usage;
-    import Pod::Usage;
-    pod2usage("RT Mail Gateway\n");
-    exit 1;    # Don't want to succeed if this is really an email!
-}
-
-for (qw(url)) {
-    die "$0 invoked improperly\n\nNo $_ provided to mail gateway!\n" unless $opts{$_};
-}
-
-undef $/;
-my $ua      = LWP::UserAgent->new();
-$ua->cookie_jar( { file => $opts{jar} } );
-
-my %args = (
-    queue   => $opts{queue},
-    action  => $opts{action},
-    SessionType => 'REST',    # Surpress login box
-);
-
-# Read the message in from STDIN
-$args{'message'} = <>;
-
-
-if ($opts{'extension'}) {
-        $args{$opts{'extension'}} = $ENV{'EXTENSION'};
-}
-
-# Set up cookie here.
-
-my $full_url = $opts{'url'}. "/REST/1.0/NoAuth/mail-gateway";
-warn "Connecting to $full_url" if $opts{'debug'};
-
-
-
-$ua->timeout(exists($opts{'timeout'}) ? $opts{'timeout'} : 180);
-my $r = $ua->post( $full_url, {%args} );
-check_failure($r);
-
-my $content = $r->content;
-warn $content if ($opts{debug});
-
-if ( $content !~ /^(ok|not ok)/ ) {
-
-    # It's not the server's fault if the mail is bogus. We just want to know that
-    # *something* came out of the server.
-    warn <<EOF;
-RT server error.
-
-The RT server which handled your email did not behave as expected. It
-said:
-
-$content
-EOF
-
-exit EX_TEMPFAIL;
-
-}
-
-exit;
-
-
-sub check_failure {
-    my $r = shift;
-    return if $r->is_success();
-
-    # This ordinarily oughtn't to be able to happen, suggests a bug in RT.
-    # So only load these heavy modules when they're needed.
-    require HTML::TreeBuilder;
-    require HTML::FormatText;
-
-    my $error = $r->error_as_HTML;
-    my $tree  = HTML::TreeBuilder->new->parse($error);
-    $tree->eof;
-
-    # It'll be a cold day in hell before RT sends out bounces in HTML
-    my $formatter = HTML::FormatText->new( leftmargin  => 0,
-                                           rightmargin => 50 );
-    warn $formatter->format($tree);
-    warn "This is $0 exiting because of an undefined server error" if ($opts{debug});
-    exit EX_TEMPFAIL;
-}
-
-
-=head1 SYNOPSIS
-
-    rt-mailgate --help : this text
-
-Usual invocation (from MTA):
-
-    rt-mailgate --action (correspond|comment) --queue queuename
-                --url http://your.rt.server/
-                [ --debug ]
-                [ --extension (queue|action|ticket) ]
-                [ --timeout seconds ]
-
-
-
-See C<man rt-mailgate> for more.
-
-=head1 OPTIONS
-
-=over 3
-
-=item C<--action>
-
-Specifies whether this is a correspondence or comment address.
-
-=item C<--queue>
-
-Reflects which queue this address handles.
-
-=item C<--url>
-
-The location of the web server for your RT instance.
-
-
-=item C<--extension> OPTIONAL
-
-Some MTAs will route mail sent to user-foo@host or user+foo@host to user@host
-and present "foo" in the environment variable $EXTENSION. By specifying
-the value "queue" for this parameter, the queue this message should be
-submitted to will be set to the value of $EXTENSION. By specifying
-"ticket", $EXTENSION will be interpreted as the id of the ticket this message
-is related to.  "action" will allow the user to specify either "comment" or
-"correspond" in the address extension.
-
-=item C<--debug> OPTIONAL
-
-Print debugging output to standard error
-
-
-=item C<--timeout> OPTIONAL
-
-Configure the timeout for posting the message to the web server.  The
-default timeout is 3 minutes (180 seconds).
-
-
-=head1 DESCRIPTION
-
-The RT mail gateway is the primary mechanism for communicating with RT
-via email. This program simply directs the email to the RT web server,
-which handles filing correspondence and sending out any required mail.
-It is designed to be run as part of the mail delivery process, either
-called directly by the MTA or C<procmail>, or in a F<.forward> or
-equivalent.
-
-=head1 SETUP
-
-Much of the set up of the mail gateway depends on your MTA and mail
-routing configuration. However, you will need first of all to create an
-RT user for the mail gateway and assign it a password; this helps to
-ensure that mail coming into the web server did originate from the
-gateway.
-
-Next, you need to route mail to C<rt-mailgate> for the queues you're
-monitoring. For instance, if you're using F</etc/aliases> and you have a
-"bugs" queue, you will want something like this:
-
-    bugs:         "|/opt/rt3/bin/rt-mailgate --queue bugs --action correspond
-              --url http://rt.mycorp.com/"
-
-    bugs-comment: "|/opt/rt3/bin/rt-mailgate --queue bugs --action comment
-              --url http://rt.mycorp.com/"
-
-Note that you don't have to run your RT server on your mail server, as
-the mail gateway will happily relay to a different machine.
-
-=head1 CUSTOMIZATION
-
-By default, the mail gateway will accept mail from anyone. However,
-there are situations in which you will want to authenticate users
-before allowing them to communicate with the system. You can do this
-via a plug-in mechanism in the RT configuration.
-
-You can set the array C<@RT::MailPlugins> to be a list of plugins. The
-default plugin, if this is not given, is C<Auth::MailFrom> - that is,
-authentication of the person is done based on the C<From> header of the
-email. If you have additional filters or authentication mechanisms, you
-can list them here and they will be called in order:
-
-    @RT::MailPlugins = (
-        "Filter::SpamAssassin",
-        "Auth::LDAP",
-        # ...
-    );
-
-See the documentation for any additional plugins you have.
-
-You may also put Perl subroutines into the C<@RT::MailPlugins> array, if
-they behave as described below.
-
-=head1 WRITING PLUGINS
-
-What's actually going on in the above is that C<@RT::MailPlugins> is a
-list of Perl modules; RT prepends C<RT::Interface::Email::> to the name,
-to form a package name, and then C<use>'s this module. The module is
-expected to provide a C<GetCurrentUser> subroutine, which takes a hash of
-several parameters:
-
-=over 4
-
-=item Message
-
-A C<MIME::Entity> object representing the email
-=item CurrentUser
-
-An C<RT::CurrentUser> object
-
-=item AuthStat
-
-The authentication level returned from the previous plugin.
-
-=item Ticket [OPTIONAL]
-
-The ticket under discussion
-
-=item Queue [OPTIONAL]
-
-If we don't already have a ticket id, we need to know which queue we're talking about
-
-=item Action
-
-The action being performed. At the moment, it's one of "comment" or "correspond"
-
-=back 4
-
-It returns two values, the new C<RT::CurrentUser> object, and the new
-authentication level. The authentication level can be zero, not allowed
-to communicate with RT at all, (a "permission denied" error is mailed to
-the correspondent) or one, which is the normal mode of operation.
-Additionally, if C<-1> is returned, then the processing of the plug-ins
-stops immediately and the message is ignored.
-
-=cut
-
diff --git a/rt/bin/webmux.pl b/rt/bin/webmux.pl
deleted file mode 100755 (executable)
index 96e7ebf..0000000
+++ /dev/null
@@ -1,148 +0,0 @@
-#!/usr/bin/perl
-# BEGIN LICENSE BLOCK
-# 
-# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com>
-# 
-# (Except where explictly superceded by other copyright notices)
-# 
-# This work is made available to you under the terms of Version 2 of
-# the GNU General Public License. A copy of that license should have
-# been provided with this software, but in any event can be snarfed
-# from www.gnu.org.
-# 
-# This work is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-# 
-# Unless otherwise specified, all modifications, corrections or
-# extensions to this work which alter its source code become the
-# property of Best Practical Solutions, LLC when submitted for
-# inclusion in the work.
-# 
-# 
-# END LICENSE BLOCK
-
-use strict;
-
-BEGIN {
-    $ENV{'PATH'}   = '/bin:/usr/bin';                      # or whatever you need
-    $ENV{'CDPATH'} = '' if defined $ENV{'CDPATH'};
-    $ENV{'SHELL'}  = '/bin/sh' if defined $ENV{'SHELL'};
-    $ENV{'ENV'}    = '' if defined $ENV{'ENV'};
-    $ENV{'IFS'}    = '' if defined $ENV{'IFS'};
-    
-}
-
-use lib ("/opt/rt3/local/lib", "/opt/rt3/lib");
-use RT;
-
-package RT::Mason;
-
-use CGI qw(-private_tempfiles);    #bring this in before mason, to make sure we
-                                   #set private_tempfiles
-
-BEGIN {
-    if ($mod_perl::VERSION >= 1.9908) {
-       require Apache::RequestUtil;
-       no warnings 'redefine';
-       my $sub = *Apache::request{CODE};
-       *Apache::request = sub {
-           my $r;
-           eval { $r = $sub->('Apache'); };
-           # warn $@ if $@;
-           return $r;
-       };
-    }
-    if ($CGI::MOD_PERL) {
-       require HTML::Mason::ApacheHandler;
-    }
-    else {
-       require HTML::Mason::CGIHandler;
-    }
-}
-
-use HTML::Mason;                   # brings in subpackages: Parser, Interp, etc.
-
-use vars qw($Nobody $SystemUser $r);
-
-#This drags in RT's config.pm
-RT::LoadConfig();
-
-use Carp;
-
-{
-    package HTML::Mason::Commands;
-    use vars qw(%session);
-
-    use RT::Tickets;
-    use RT::Transactions;
-    use RT::Users;
-    use RT::CurrentUser;
-    use RT::Templates;
-    use RT::Queues;
-    use RT::ScripActions;
-    use RT::ScripConditions;
-    use RT::Scrips;
-    use RT::Groups;
-    use RT::GroupMembers;
-    use RT::CustomFields;
-    use RT::CustomFieldValues;
-    use RT::TicketCustomFieldValues;
-
-    use RT::Interface::Web;
-    use MIME::Entity;
-    use Text::Wrapper;
-    use CGI::Cookie;
-    use Time::ParseDate;
-    use HTML::Entities;
-}
-
-
-# Activate the following if running httpd as root (the normal case).
-# Resets ownership of all files created by Mason at startup.
-# Note that mysql uses DB for sessions, so there's no need to do this.
-unless ($RT::DatabaseType =~ /(mysql|Pg)/) {
-    # Clean up our umask to protect session files
-    umask(0077);
-
-if ( $CGI::MOD_PERL)  {
-    chown( Apache->server->uid, Apache->server->gid, [$RT::MasonSessionDir] )
-       if Apache->server->can('uid');
-        }
-    # Die if WebSessionDir doesn't exist or we can't write to it
-    stat($RT::MasonSessionDir);
-    die "Can't read and write $RT::MasonSessionDir"
-       unless ( ( -d _ ) and ( -r _ ) and ( -w _ ) );
-}
-
-my $ah = &RT::Interface::Web::NewApacheHandler(@RT::MasonParameters) if $CGI::MOD_PERL;
-
-sub handler {
-    ($r) = @_;
-
-    local $SIG{__WARN__};
-    local $SIG{__DIE__};
-
-    RT::Init();
-
-    # We don't need to handle non-text items
-    return -1 if defined( $r->content_type ) && $r->content_type !~ m|^text/|io;
-
-    my %session;
-    my $status;
-    eval { $status = $ah->handle_request($r) };
-    if ($@) {
-       $RT::Logger->crit($@);
-    }
-
-    undef (%session);
-
-    if ($RT::Handle->TransactionDepth) {
-       $RT::Handle->ForceRollback;
-       $RT::Logger->crit("Transaction not committed. Usually indicates a software fault. Data loss may have occurred") ;
-    }
-    return $status;
-}
-
-1;
diff --git a/rt/config.log b/rt/config.log
deleted file mode 100644 (file)
index 24e15e3..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-
-It was created by RT configure 3.0.9, which was
-generated by GNU Autoconf 2.53.  Invocation command line was
-
-  $ ./configure 
-
-## --------- ##
-## Platform. ##
-## --------- ##
-
-hostname = pallas
-uname -m = i686
-uname -r = 2.4.18-686
-uname -s = Linux
-uname -v = #1 Sun Apr 14 11:32:47 EST 2002
-
-/usr/bin/uname -p = unknown
-/bin/uname -X     = unknown
-
-/bin/arch              = i686
-/usr/bin/arch -k       = unknown
-/usr/convex/getsysinfo = unknown
-hostinfo               = unknown
-/bin/machine           = unknown
-/usr/bin/oslevel       = unknown
-/bin/universe          = unknown
-
-PATH: /usr/X11R6/bin/
-PATH: /opt/rt/bin
-PATH: /usr/athena/bin
-PATH: /usr/local/bin
-PATH: /bin
-PATH: /usr/bin
-PATH: /usr/sbin
-PATH: /usr/bin
-PATH: /usr/games
-PATH: $HOME/bin
-PATH: /opt/kerberos/bin
-PATH: /opt/StarOffice-4.0/bin
-PATH: /opt/mysql/bin/
-PATH: .
-
-
-## ----------- ##
-## Core tests. ##
-## ----------- ##
-
-configure:1218: checking for a BSD-compatible install
-configure:1272: result: /usr/bin/install -c
-configure:1286: checking for perl
-configure:1304: found /usr/bin/perl
-configure:1317: result: /usr/bin/perl
-configure:1639: checking for chosen layout
-configure:1654: result: RT3
-configure:1986: creating ./config.status
-
-## ---------------------- ##
-## Running config.status. ##
-## ---------------------- ##
-
-This file was extended by RT config.status 3.0.9, which was
-generated by GNU Autoconf 2.53.  Invocation command line was
-
-  CONFIG_FILES    = 
-  CONFIG_HEADERS  = 
-  CONFIG_LINKS    = 
-  CONFIG_COMMANDS = 
-  $ ./config.status 
-
-on pallas
-
-config.status:639: creating sbin/rt-setup-database
-config.status:639: creating sbin/rt-test-dependencies
-config.status:639: creating Makefile
-config.status:639: creating etc/RT_Config.pm
-config.status:639: creating lib/RT.pm
-config.status:639: creating lib/t/00smoke.t
-config.status:639: creating lib/t/01harness.t
-config.status:639: creating lib/t/02regression.t
-config.status:639: creating lib/t/03web.pl
-config.status:639: creating lib/t/04_send_email.pl
-config.status:639: creating bin/mason_handler.fcgi
-config.status:639: creating bin/mason_handler.scgi
-config.status:639: creating bin/mason_handler.svc
-config.status:639: creating bin/rt-commit-handler
-config.status:639: creating bin/rt-crontool
-config.status:639: creating bin/rt-mailgate
-config.status:639: creating bin/rt
-config.status:639: creating bin/webmux.pl
-
-## ---------------- ##
-## Cache variables. ##
-## ---------------- ##
-
-ac_cv_env_PERL_set=
-ac_cv_env_PERL_value=
-ac_cv_env_build_alias_set=
-ac_cv_env_build_alias_value=
-ac_cv_env_host_alias_set=
-ac_cv_env_host_alias_value=
-ac_cv_env_target_alias_set=
-ac_cv_env_target_alias_value=
-ac_cv_path_PERL=/usr/bin/perl
-ac_cv_path_install='/usr/bin/install -c'
-
-## ----------- ##
-## confdefs.h. ##
-## ----------- ##
-
-#define PACKAGE_NAME "RT"
-#define PACKAGE_TARNAME "rt"
-#define PACKAGE_VERSION "3.0.9"
-#define PACKAGE_STRING "RT 3.0.9"
-#define PACKAGE_BUGREPORT "rt-3.0-bugs@fsck.com"
-
-configure: exit 0
diff --git a/rt/config.status b/rt/config.status
deleted file mode 100755 (executable)
index e7d81b3..0000000
+++ /dev/null
@@ -1,713 +0,0 @@
-#! /bin/sh
-# Generated by configure.
-# Run this file to recreate the current configuration.
-# Compiler output produced by configure, useful for debugging
-# configure, is in config.log if it exists.
-
-debug=false
-SHELL=${CONFIG_SHELL-/bin/sh}
-
-## --------------------- ##
-## M4sh Initialization.  ##
-## --------------------- ##
-
-# Be Bourne compatible
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
-  emulate sh
-  NULLCMD=:
-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then
-  set -o posix
-fi
-
-# NLS nuisances.
-# Support unset when possible.
-if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
-  as_unset=unset
-else
-  as_unset=false
-fi
-
-(set +x; test -n "`(LANG=C; export LANG) 2>&1`") &&
-    { $as_unset LANG || test "${LANG+set}" != set; } ||
-      { LANG=C; export LANG; }
-(set +x; test -n "`(LC_ALL=C; export LC_ALL) 2>&1`") &&
-    { $as_unset LC_ALL || test "${LC_ALL+set}" != set; } ||
-      { LC_ALL=C; export LC_ALL; }
-(set +x; test -n "`(LC_TIME=C; export LC_TIME) 2>&1`") &&
-    { $as_unset LC_TIME || test "${LC_TIME+set}" != set; } ||
-      { LC_TIME=C; export LC_TIME; }
-(set +x; test -n "`(LC_CTYPE=C; export LC_CTYPE) 2>&1`") &&
-    { $as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set; } ||
-      { LC_CTYPE=C; export LC_CTYPE; }
-(set +x; test -n "`(LANGUAGE=C; export LANGUAGE) 2>&1`") &&
-    { $as_unset LANGUAGE || test "${LANGUAGE+set}" != set; } ||
-      { LANGUAGE=C; export LANGUAGE; }
-(set +x; test -n "`(LC_COLLATE=C; export LC_COLLATE) 2>&1`") &&
-    { $as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set; } ||
-      { LC_COLLATE=C; export LC_COLLATE; }
-(set +x; test -n "`(LC_NUMERIC=C; export LC_NUMERIC) 2>&1`") &&
-    { $as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set; } ||
-      { LC_NUMERIC=C; export LC_NUMERIC; }
-(set +x; test -n "`(LC_MESSAGES=C; export LC_MESSAGES) 2>&1`") &&
-    { $as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set; } ||
-      { LC_MESSAGES=C; export LC_MESSAGES; }
-
-
-# Name of the executable.
-as_me=`(basename "$0") 2>/dev/null ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-        X"$0" : 'X\(//\)$' \| \
-        X"$0" : 'X\(/\)$' \| \
-        .     : '\(.\)' 2>/dev/null ||
-echo X/"$0" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; }
-         /^X\/\(\/\/\)$/{ s//\1/; q; }
-         /^X\/\(\/\).*/{ s//\1/; q; }
-         s/.*/./; q'`
-
-# PATH needs CR, and LINENO needs CR and PATH.
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  echo "#! /bin/sh" >conftest.sh
-  echo  "exit 0"   >>conftest.sh
-  chmod +x conftest.sh
-  if (PATH=".;."; conftest.sh) >/dev/null 2>&1; then
-    PATH_SEPARATOR=';'
-  else
-    PATH_SEPARATOR=:
-  fi
-  rm -f conftest.sh
-fi
-
-
-  as_lineno_1=$LINENO
-  as_lineno_2=$LINENO
-  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
-  test "x$as_lineno_1" != "x$as_lineno_2" &&
-  test "x$as_lineno_3"  = "x$as_lineno_2"  || {
-  # Find who we are.  Look in the path if we contain no path at all
-  # relative or not.
-  case $0 in
-    *[\\/]* ) as_myself=$0 ;;
-    *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-done
-
-       ;;
-  esac
-  # We did not find ourselves, most probably we were run as `sh COMMAND'
-  # in which case we are not to be found in the path.
-  if test "x$as_myself" = x; then
-    as_myself=$0
-  fi
-  if test ! -f "$as_myself"; then
-    { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5
-echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;}
-   { (exit 1); exit 1; }; }
-  fi
-  case $CONFIG_SHELL in
-  '')
-    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for as_base in sh bash ksh sh5; do
-        case $as_dir in
-        /*)
-          if ("$as_dir/$as_base" -c '
-  as_lineno_1=$LINENO
-  as_lineno_2=$LINENO
-  as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null`
-  test "x$as_lineno_1" != "x$as_lineno_2" &&
-  test "x$as_lineno_3"  = "x$as_lineno_2" ') 2>/dev/null; then
-            CONFIG_SHELL=$as_dir/$as_base
-            export CONFIG_SHELL
-            exec "$CONFIG_SHELL" "$0" ${1+"$@"}
-          fi;;
-        esac
-       done
-done
-;;
-  esac
-
-  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
-  # uniformly replaced by the line number.  The first 'sed' inserts a
-  # line-number line before each line; the second 'sed' does the real
-  # work.  The second script uses 'N' to pair each line-number line
-  # with the numbered line, and appends trailing '-' during
-  # substitution so that $LINENO is not a special case at line end.
-  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
-  # second 'sed' script.  Blame Lee E. McMahon for sed's syntax.  :-)
-  sed '=' <$as_myself |
-    sed '
-      N
-      s,$,-,
-      : loop
-      s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3,
-      t loop
-      s,-$,,
-      s,^['$as_cr_digits']*\n,,
-    ' >$as_me.lineno &&
-  chmod +x $as_me.lineno ||
-    { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5
-echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;}
-   { (exit 1); exit 1; }; }
-
-  # Don't try to exec as it changes $[0], causing all sort of problems
-  # (the dirname of $[0] is not the place where we might find the
-  # original and so on.  Autoconf is especially sensible to this).
-  . ./$as_me.lineno
-  # Exit status is that of the last command.
-  exit
-}
-
-
-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in
-  *c*,-n*) ECHO_N= ECHO_C='
-' ECHO_T='     ' ;;
-  *c*,*  ) ECHO_N=-n ECHO_C= ECHO_T= ;;
-  *)       ECHO_N= ECHO_C='\c' ECHO_T= ;;
-esac
-
-if expr a : '\(a\)' >/dev/null 2>&1; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-rm -f conf$$ conf$$.exe conf$$.file
-echo >conf$$.file
-if ln -s conf$$.file conf$$ 2>/dev/null; then
-  # We could just check for DJGPP; but this test a) works b) is more generic
-  # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04).
-  if test -f conf$$.exe; then
-    # Don't use ln at all; we don't have any links
-    as_ln_s='cp -p'
-  else
-    as_ln_s='ln -s'
-  fi
-elif ln conf$$.file conf$$ 2>/dev/null; then
-  as_ln_s=ln
-else
-  as_ln_s='cp -p'
-fi
-rm -f conf$$ conf$$.exe conf$$.file
-
-as_executable_p="test -f"
-
-# Sed expression to map a string onto a valid CPP name.
-as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g"
-
-
-# IFS
-# We need space, tab and new line, in precisely that order.
-as_nl='
-'
-IFS="  $as_nl"
-
-# CDPATH.
-$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=$PATH_SEPARATOR; export CDPATH; }
-
-exec 6>&1
-
-# Open the log real soon, to keep \$[0] and so on meaningful, and to
-# report actual input values of CONFIG_FILES etc. instead of their
-# values after options handling.  Logging --version etc. is OK.
-exec 5>>config.log
-{
-  echo
-  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
-## Running $as_me. ##
-_ASBOX
-} >&5
-cat >&5 <<_CSEOF
-
-This file was extended by RT $as_me 3.0.9, which was
-generated by GNU Autoconf 2.53.  Invocation command line was
-
-  CONFIG_FILES    = $CONFIG_FILES
-  CONFIG_HEADERS  = $CONFIG_HEADERS
-  CONFIG_LINKS    = $CONFIG_LINKS
-  CONFIG_COMMANDS = $CONFIG_COMMANDS
-  $ $0 $@
-
-_CSEOF
-echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5
-echo >&5
-config_files=" sbin/rt-setup-database sbin/rt-test-dependencies Makefile etc/RT_Config.pm lib/RT.pm lib/t/00smoke.t lib/t/01harness.t lib/t/02regression.t lib/t/03web.pl lib/t/04_send_email.pl bin/mason_handler.fcgi bin/mason_handler.scgi bin/mason_handler.svc bin/rt-commit-handler bin/rt-crontool bin/rt-mailgate bin/rt bin/webmux.pl"
-
-ac_cs_usage="\
-\`$as_me' instantiates files from templates according to the
-current configuration.
-
-Usage: $0 [OPTIONS] [FILE]...
-
-  -h, --help       print this help, then exit
-  -V, --version    print version number, then exit
-  -d, --debug      don't remove temporary files
-      --recheck    update $as_me by reconfiguring in the same conditions
-  --file=FILE[:TEMPLATE]
-                   instantiate the configuration file FILE
-
-Configuration files:
-$config_files
-
-Report bugs to <bug-autoconf@gnu.org>."
-ac_cs_version="\
-RT config.status 3.0.9
-configured by ./configure, generated by GNU Autoconf 2.53,
-  with options \"\"
-
-Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
-Free Software Foundation, Inc.
-This config.status script is free software; the Free Software Foundation
-gives unlimited permission to copy, distribute and modify it."
-srcdir=.
-INSTALL="/usr/bin/install -c"
-# If no file are specified by the user, then we need to provide default
-# value.  By we need to know if files were specified by the user.
-ac_need_defaults=:
-while test $# != 0
-do
-  case $1 in
-  --*=*)
-    ac_option=`expr "x$1" : 'x\([^=]*\)='`
-    ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
-    shift
-    set dummy "$ac_option" "$ac_optarg" ${1+"$@"}
-    shift
-    ;;
-  -*);;
-  *) # This is not an option, so the user has probably given explicit
-     # arguments.
-     ac_need_defaults=false;;
-  esac
-
-  case $1 in
-  # Handling of the options.
-  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
-    echo "running /bin/sh ./configure "  " --no-create --no-recursion"
-    exec /bin/sh ./configure  --no-create --no-recursion ;;
-  --version | --vers* | -V )
-    echo "$ac_cs_version"; exit 0 ;;
-  --he | --h)
-    # Conflict between --help and --header
-    { { echo "$as_me:$LINENO: error: ambiguous option: $1
-Try \`$0 --help' for more information." >&5
-echo "$as_me: error: ambiguous option: $1
-Try \`$0 --help' for more information." >&2;}
-   { (exit 1); exit 1; }; };;
-  --help | --hel | -h )
-    echo "$ac_cs_usage"; exit 0 ;;
-  --debug | --d* | -d )
-    debug=: ;;
-  --file | --fil | --fi | --f )
-    shift
-    CONFIG_FILES="$CONFIG_FILES $1"
-    ac_need_defaults=false;;
-  --header | --heade | --head | --hea )
-    shift
-    CONFIG_HEADERS="$CONFIG_HEADERS $1"
-    ac_need_defaults=false;;
-
-  # This is an error.
-  -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1
-Try \`$0 --help' for more information." >&5
-echo "$as_me: error: unrecognized option: $1
-Try \`$0 --help' for more information." >&2;}
-   { (exit 1); exit 1; }; } ;;
-
-  *) ac_config_targets="$ac_config_targets $1" ;;
-
-  esac
-  shift
-done
-
-for ac_config_target in $ac_config_targets
-do
-  case "$ac_config_target" in
-  # Handling of arguments.
-  "sbin/rt-setup-database" ) CONFIG_FILES="$CONFIG_FILES sbin/rt-setup-database" ;;
-  "sbin/rt-test-dependencies" ) CONFIG_FILES="$CONFIG_FILES sbin/rt-test-dependencies" ;;
-  "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
-  "etc/RT_Config.pm" ) CONFIG_FILES="$CONFIG_FILES etc/RT_Config.pm" ;;
-  "lib/RT.pm" ) CONFIG_FILES="$CONFIG_FILES lib/RT.pm" ;;
-  "lib/t/00smoke.t" ) CONFIG_FILES="$CONFIG_FILES lib/t/00smoke.t" ;;
-  "lib/t/01harness.t" ) CONFIG_FILES="$CONFIG_FILES lib/t/01harness.t" ;;
-  "lib/t/02regression.t" ) CONFIG_FILES="$CONFIG_FILES lib/t/02regression.t" ;;
-  "lib/t/03web.pl" ) CONFIG_FILES="$CONFIG_FILES lib/t/03web.pl" ;;
-  "lib/t/04_send_email.pl" ) CONFIG_FILES="$CONFIG_FILES lib/t/04_send_email.pl" ;;
-  "bin/mason_handler.fcgi" ) CONFIG_FILES="$CONFIG_FILES bin/mason_handler.fcgi" ;;
-  "bin/mason_handler.scgi" ) CONFIG_FILES="$CONFIG_FILES bin/mason_handler.scgi" ;;
-  "bin/mason_handler.svc" ) CONFIG_FILES="$CONFIG_FILES bin/mason_handler.svc" ;;
-  "bin/rt-commit-handler" ) CONFIG_FILES="$CONFIG_FILES bin/rt-commit-handler" ;;
-  "bin/rt-crontool" ) CONFIG_FILES="$CONFIG_FILES bin/rt-crontool" ;;
-  "bin/rt-mailgate" ) CONFIG_FILES="$CONFIG_FILES bin/rt-mailgate" ;;
-  "bin/rt" ) CONFIG_FILES="$CONFIG_FILES bin/rt" ;;
-  "bin/webmux.pl" ) CONFIG_FILES="$CONFIG_FILES bin/webmux.pl" ;;
-  *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
-echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
-   { (exit 1); exit 1; }; };;
-  esac
-done
-
-# If the user did not use the arguments to specify the items to instantiate,
-# then the envvar interface is used.  Set only those that are not.
-# We use the long form for the default assignment because of an extremely
-# bizarre bug on SunOS 4.1.3.
-if $ac_need_defaults; then
-  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
-fi
-
-# Create a temporary directory, and hook for its removal unless debugging.
-$debug ||
-{
-  trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0
-  trap '{ (exit 1); exit 1; }' 1 2 13 15
-}
-
-# Create a (secure) tmp directory for tmp files.
-: ${TMPDIR=/tmp}
-{
-  tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` &&
-  test -n "$tmp" && test -d "$tmp"
-}  ||
-{
-  tmp=$TMPDIR/cs$$-$RANDOM
-  (umask 077 && mkdir $tmp)
-} ||
-{
-   echo "$me: cannot create a temporary directory in $TMPDIR" >&2
-   { (exit 1); exit 1; }
-}
-
-
-#
-# CONFIG_FILES section.
-#
-
-# No need to generate the scripts if there are no CONFIG_FILES.
-# This happens for instance when ./config.status config.h
-if test -n "$CONFIG_FILES"; then
-  # Protect against being on the right side of a sed subst in config.status.
-  sed 's/,@/@@/; s/@,/@@/; s/,;t t$/@;t t/; /@;t t$/s/[\\&,]/\\&/g;
-   s/@@/,@/; s/@@/@,/; s/@;t t$/,;t t/' >$tmp/subs.sed <<\CEOF
-s,@SHELL@,/bin/sh,;t t
-s,@PATH_SEPARATOR@,:,;t t
-s,@PACKAGE_NAME@,RT,;t t
-s,@PACKAGE_TARNAME@,rt,;t t
-s,@PACKAGE_VERSION@,3.0.9,;t t
-s,@PACKAGE_STRING@,RT 3.0.9,;t t
-s,@PACKAGE_BUGREPORT@,rt-3.0-bugs@fsck.com,;t t
-s,@exec_prefix@,/opt/rt3,;t t
-s,@prefix@,/opt/rt3,;t t
-s,@program_transform_name@,s,x,x,,;t t
-s,@bindir@,/opt/rt3/bin,;t t
-s,@sbindir@,/opt/rt3/sbin,;t t
-s,@libexecdir@,${exec_prefix}/libexec,;t t
-s,@datadir@,/opt/rt3/share,;t t
-s,@sysconfdir@,/opt/rt3/etc,;t t
-s,@sharedstatedir@,${prefix}/com,;t t
-s,@localstatedir@,/opt/rt3/var,;t t
-s,@libdir@,/opt/rt3/lib,;t t
-s,@includedir@,${prefix}/include,;t t
-s,@oldincludedir@,/usr/include,;t t
-s,@infodir@,${prefix}/info,;t t
-s,@mandir@,/opt/rt3/man,;t t
-s,@build_alias@,,;t t
-s,@host_alias@,,;t t
-s,@target_alias@,,;t t
-s,@DEFS@,-DPACKAGE_NAME=\"RT\" -DPACKAGE_TARNAME=\"rt\" -DPACKAGE_VERSION=\"3.0.9\" -DPACKAGE_STRING=\"RT\ 3.0.9\" -DPACKAGE_BUGREPORT=\"rt-3.0-bugs@fsck.com\" ,;t t
-s,@ECHO_C@,,;t t
-s,@ECHO_N@,-n,;t t
-s,@ECHO_T@,,;t t
-s,@LIBS@,,;t t
-s,@rt_version_major@,3,;t t
-s,@rt_version_minor@,0,;t t
-s,@rt_version_patch@,9,;t t
-s,@INSTALL_PROGRAM@,${INSTALL},;t t
-s,@INSTALL_SCRIPT@,${INSTALL},;t t
-s,@INSTALL_DATA@,${INSTALL} -m 644,;t t
-s,@PERL@,/usr/bin/perl,;t t
-s,@SPEEDY_BIN@,/usr/local/bin/speedy,;t t
-s,@exp_prefix@,/opt/rt3,;t t
-s,@exp_exec_prefix@,/opt/rt3,;t t
-s,@exp_bindir@,/opt/rt3/bin,;t t
-s,@exp_sbindir@,/opt/rt3/sbin,;t t
-s,@exp_sysconfdir@,/opt/rt3/etc,;t t
-s,@exp_mandir@,/opt/rt3/man,;t t
-s,@exp_libdir@,/opt/rt3/lib,;t t
-s,@exp_datadir@,/opt/rt3/share,;t t
-s,@htmldir@,/opt/rt3/share/html,;t t
-s,@exp_htmldir@,/opt/rt3/share/html,;t t
-s,@manualdir@,/opt/rt3/share/doc,;t t
-s,@exp_manualdir@,/opt/rt3/share/doc,;t t
-s,@exp_localstatedir@,/opt/rt3/var,;t t
-s,@logfiledir@,/opt/rt3/var/log,;t t
-s,@exp_logfiledir@,/opt/rt3/var/log,;t t
-s,@masonstatedir@,/opt/rt3/var/mason_data,;t t
-s,@exp_masonstatedir@,/opt/rt3/var/mason_data,;t t
-s,@sessionstatedir@,/opt/rt3/var/session_data,;t t
-s,@exp_sessionstatedir@,/opt/rt3/var/session_data,;t t
-s,@customdir@,/opt/rt3/local,;t t
-s,@exp_customdir@,/opt/rt3/local,;t t
-s,@custometcdir@,/opt/rt3/local/etc,;t t
-s,@exp_custometcdir@,/opt/rt3/local/etc,;t t
-s,@customhtmldir@,/opt/rt3/local/html,;t t
-s,@exp_customhtmldir@,/opt/rt3/local/html,;t t
-s,@customlexdir@,/opt/rt3/local/po,;t t
-s,@exp_customlexdir@,/opt/rt3/local/po,;t t
-s,@customlibdir@,/opt/rt3/local/lib,;t t
-s,@exp_customlibdir@,/opt/rt3/local/lib,;t t
-s,@rt_layout_name@,RT3,;t t
-s,@RTGROUP@,rt,;t t
-s,@BIN_OWNER@,root,;t t
-s,@LIBS_OWNER@,root,;t t
-s,@LIBS_GROUP@,bin,;t t
-s,@DB_TYPE@,mysql,;t t
-s,@ORACLE_ENV_PREF@,,;t t
-s,@DB_HOST@,localhost,;t t
-s,@DB_PORT@,,;t t
-s,@DB_RT_HOST@,localhost,;t t
-s,@DB_DBA@,root,;t t
-s,@DB_DATABASE@,rt3,;t t
-s,@DB_RT_USER@,rt_user,;t t
-s,@DB_RT_PASS@,rt_pass,;t t
-s,@WEB_USER@,www,;t t
-s,@WEB_GROUP@,www,;t t
-s,@RT_VERSION_MAJOR@,3,;t t
-s,@RT_VERSION_MINOR@,0,;t t
-s,@RT_VERSION_PATCH@,9,;t t
-s,@RT_PATH@,/opt/rt3,;t t
-s,@RT_DOC_PATH@,/opt/rt3/share/doc,;t t
-s,@RT_LOCAL_PATH@,/opt/rt3/local,;t t
-s,@RT_LIB_PATH@,/opt/rt3/lib,;t t
-s,@RT_ETC_PATH@,/opt/rt3/etc,;t t
-s,@CONFIG_FILE_PATH@,/opt/rt3/etc,;t t
-s,@RT_BIN_PATH@,/opt/rt3/bin,;t t
-s,@RT_SBIN_PATH@,/opt/rt3/sbin,;t t
-s,@RT_VAR_PATH@,/opt/rt3/var,;t t
-s,@RT_MAN_PATH@,/opt/rt3/man,;t t
-s,@MASON_DATA_PATH@,/opt/rt3/var/mason_data,;t t
-s,@MASON_SESSION_PATH@,/opt/rt3/var/session_data,;t t
-s,@MASON_HTML_PATH@,/opt/rt3/share/html,;t t
-s,@LOCAL_ETC_PATH@,/opt/rt3/local/etc,;t t
-s,@MASON_LOCAL_HTML_PATH@,/opt/rt3/local/html,;t t
-s,@LOCAL_LEXICON_PATH@,/opt/rt3/local/po,;t t
-s,@LOCAL_LIB_PATH@,/opt/rt3/local/lib,;t t
-s,@DESTDIR@,/opt/rt3,;t t
-s,@RT_LOG_PATH@,/opt/rt3/var/log,;t t
-CEOF
-
-  # Split the substitutions into bite-sized pieces for seds with
-  # small command number limits, like on Digital OSF/1 and HP-UX.
-  ac_max_sed_lines=48
-  ac_sed_frag=1 # Number of current file.
-  ac_beg=1 # First line for current file.
-  ac_end=$ac_max_sed_lines # Line after last line for current file.
-  ac_more_lines=:
-  ac_sed_cmds=
-  while $ac_more_lines; do
-    if test $ac_beg -gt 1; then
-      sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
-    else
-      sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag
-    fi
-    if test ! -s $tmp/subs.frag; then
-      ac_more_lines=false
-    else
-      # The purpose of the label and of the branching condition is to
-      # speed up the sed processing (if there are no `@' at all, there
-      # is no need to browse any of the substitutions).
-      # These are the two extra sed commands mentioned above.
-      (echo ':t
-  /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed
-      if test -z "$ac_sed_cmds"; then
-       ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed"
-      else
-       ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed"
-      fi
-      ac_sed_frag=`expr $ac_sed_frag + 1`
-      ac_beg=$ac_end
-      ac_end=`expr $ac_end + $ac_max_sed_lines`
-    fi
-  done
-  if test -z "$ac_sed_cmds"; then
-    ac_sed_cmds=cat
-  fi
-fi # test -n "$CONFIG_FILES"
-
-for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue
-  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
-  case $ac_file in
-  - | *:- | *:-:* ) # input from stdin
-        cat >$tmp/stdin
-        ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
-        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
-  *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'`
-        ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;;
-  * )   ac_file_in=$ac_file.in ;;
-  esac
-
-  # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories.
-  ac_dir=`(dirname "$ac_file") 2>/dev/null ||
-$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-         X"$ac_file" : 'X\(//\)[^/]' \| \
-         X"$ac_file" : 'X\(//\)$' \| \
-         X"$ac_file" : 'X\(/\)' \| \
-         .     : '\(.\)' 2>/dev/null ||
-echo X"$ac_file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; }
-         /^X\(\/\/\)[^/].*/{ s//\1/; q; }
-         /^X\(\/\/\)$/{ s//\1/; q; }
-         /^X\(\/\).*/{ s//\1/; q; }
-         s/.*/./; q'`
-  { case "$ac_dir" in
-  [\\/]* | ?:[\\/]* ) as_incr_dir=;;
-  *)                      as_incr_dir=.;;
-esac
-as_dummy="$ac_dir"
-for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do
-  case $as_mkdir_dir in
-    # Skip DOS drivespec
-    ?:) as_incr_dir=$as_mkdir_dir ;;
-    *)
-      as_incr_dir=$as_incr_dir/$as_mkdir_dir
-      test -d "$as_incr_dir" ||
-        mkdir "$as_incr_dir" ||
-       { { echo "$as_me:$LINENO: error: cannot create \"$ac_dir\"" >&5
-echo "$as_me: error: cannot create \"$ac_dir\"" >&2;}
-   { (exit 1); exit 1; }; }
-    ;;
-  esac
-done; }
-
-  ac_builddir=.
-
-if test "$ac_dir" != .; then
-  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
-  # A "../" for each directory in $ac_dir_suffix.
-  ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'`
-else
-  ac_dir_suffix= ac_top_builddir=
-fi
-
-case $srcdir in
-  .)  # No --srcdir option.  We are building in place.
-    ac_srcdir=.
-    if test -z "$ac_top_builddir"; then
-       ac_top_srcdir=.
-    else
-       ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'`
-    fi ;;
-  [\\/]* | ?:[\\/]* )  # Absolute path.
-    ac_srcdir=$srcdir$ac_dir_suffix;
-    ac_top_srcdir=$srcdir ;;
-  *) # Relative path.
-    ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix
-    ac_top_srcdir=$ac_top_builddir$srcdir ;;
-esac
-# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be
-# absolute.
-ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd`
-ac_abs_top_builddir=`cd "$ac_dir" && cd $ac_top_builddir && pwd`
-ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd`
-ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd`
-
-
-  case $INSTALL in
-  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
-  *) ac_INSTALL=$ac_top_builddir$INSTALL ;;
-  esac
-
-  if test x"$ac_file" != x-; then
-    { echo "$as_me:$LINENO: creating $ac_file" >&5
-echo "$as_me: creating $ac_file" >&6;}
-    rm -f "$ac_file"
-  fi
-  # Let's still pretend it is `configure' which instantiates (i.e., don't
-  # use $as_me), people would be surprised to read:
-  #    /* config.h.  Generated by config.status.  */
-  if test x"$ac_file" = x-; then
-    configure_input=
-  else
-    configure_input="$ac_file.  "
-  fi
-  configure_input=$configure_input"Generated from `echo $ac_file_in |
-                                     sed 's,.*/,,'` by configure."
-
-  # First look for the input files in the build tree, otherwise in the
-  # src tree.
-  ac_file_inputs=`IFS=:
-    for f in $ac_file_in; do
-      case $f in
-      -) echo $tmp/stdin ;;
-      [\\/$]*)
-         # Absolute (can't be DOS-style, as IFS=:)
-         test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
-echo "$as_me: error: cannot find input file: $f" >&2;}
-   { (exit 1); exit 1; }; }
-         echo $f;;
-      *) # Relative
-         if test -f "$f"; then
-           # Build tree
-           echo $f
-         elif test -f "$srcdir/$f"; then
-           # Source tree
-           echo $srcdir/$f
-         else
-           # /dev/null tree
-           { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5
-echo "$as_me: error: cannot find input file: $f" >&2;}
-   { (exit 1); exit 1; }; }
-         fi;;
-      esac
-    done` || { (exit 1); exit 1; }
-  sed "/^[     ]*VPATH[        ]*=/{
-s/:*\$(srcdir):*/:/;
-s/:*\${srcdir}:*/:/;
-s/:*@srcdir@:*/:/;
-s/^\([^=]*=[   ]*\):*/\1/;
-s/:*$//;
-s/^[^=]*=[     ]*$//;
-}
-
-:t
-/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
-s,@configure_input@,$configure_input,;t t
-s,@srcdir@,$ac_srcdir,;t t
-s,@abs_srcdir@,$ac_abs_srcdir,;t t
-s,@top_srcdir@,$ac_top_srcdir,;t t
-s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t
-s,@builddir@,$ac_builddir,;t t
-s,@abs_builddir@,$ac_abs_builddir,;t t
-s,@top_builddir@,$ac_top_builddir,;t t
-s,@abs_top_builddir@,$ac_abs_top_builddir,;t t
-s,@INSTALL@,$ac_INSTALL,;t t
-" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out
-  rm -f $tmp/stdin
-  if test x"$ac_file" != x-; then
-    mv $tmp/out $ac_file
-  else
-    cat $tmp/out
-    rm -f $tmp/out
-  fi
-
-done
-
-{ (exit 0); exit 0; }
diff --git a/rt/etc/RT_Config.pm b/rt/etc/RT_Config.pm
deleted file mode 100644 (file)
index 5386a8e..0000000
+++ /dev/null
@@ -1,374 +0,0 @@
-#
-# WARNING: NEVER EDIT RT_Config.pm. Instead, copy any sections you want to change to RT_SiteConfig.pm
-# and edit them there.
-#
-
-package RT;
-
-=head1 NAME
-
-RT::Config
-
-=for testing
-
-use RT::Config;
-
-=cut
-
-# {{{ Base Configuration
-
-# $rtname the string that RT will look for in mail messages to
-# figure out what ticket a new piece of mail belongs to
-
-# Your domain name is recommended, so as not to pollute the namespace.
-# once you start using a given tag, you should probably never change it.
-# (otherwise, mail for existing tickets won't get put in the right place
-
-Set($rtname , "example.com");
-
-# You should set this to your organization's DNS domain. For example,
-# fsck.com or asylum.arkham.ma.us. It's used by the linking interface to
-# guarantee that ticket URIs are unique and easy to construct.
-
-Set($Organization , "example.com");
-
-# $user_passwd_min defines the minimum length for user passwords. Setting
-# it to 0 disables this check
-Set($MinimumPasswordLength , "5");
-
-# $Timezone is used to convert times entered by users into GMT and back again
-# It should be set to a timezone recognized by your local unix box.
-Set($Timezone , 'US/Eastern');
-
-# }}}
-
-# }}}
-
-# {{{ Database Configuration
-
-# Database driver beeing used. Case matters
-# Valid types are "mysql", "Oracle" and "Pg"
-
-Set($DatabaseType , 'mysql');
-
-# The domain name of your database server
-# If you're running mysql and it's on localhost,
-# leave it blank for enhanced performance
-Set($DatabaseHost   , 'localhost');
-Set($DatabaseRTHost , 'localhost');
-
-# The port that your database server is running on.  Ignored unless it's
-# a positive integer. It's usually safe to leave this blank
-Set($DatabasePort , '');
-
-#The name of the database user (inside the database)
-Set($DatabaseUser , 'rt_user');
-
-# Password the DatabaseUser should use to access the database
-Set($DatabasePassword , 'rt_pass');
-
-# The name of the RT's database on your database server
-Set($DatabaseName , 'rt3');
-
-# If you're using Postgres and have compiled in SSL support,
-# set DatabaseRequireSSL to 1 to turn on SSL communication
-Set($DatabaseRequireSSL , undef);
-
-# }}}
-
-# {{{ Incoming mail gateway configuration
-
-# OwnerEmail is the address of a human who manages RT. RT will send
-# errors generated by the mail gateway to this address.  This address
-# should _not_ be an address that's managed by your RT instance.
-
-Set($OwnerEmail , 'root');
-
-# If $LoopsToRTOwner is defined, RT will send mail that it believes
-# might be a loop to $RT::OwnerEmail
-
-Set($LoopsToRTOwner , 1);
-
-# If $StoreLoopss is defined, RT will record messages that it believes
-# to be part of mail loops.
-# As it does this, it will try to be careful not to send mail to the
-# sender of these messages
-
-Set($StoreLoops , undef);
-
-# $MaxAttachmentSize sets the maximum size (in bytes) of attachments stored
-# in the database.
-
-# For mysql and oracle, we set this size at 10 megabytes.
-# If you're running a postgres version earlier than 7.1, you will need
-# to drop this to 8192. (8k)
-
-Set($MaxAttachmentSize , 10000000);
-
-# $TruncateLongAttachments: if this is set to a non-undef value,
-# RT will truncate attachments longer than MaxAttachmentLength.
-
-Set($TruncateLongAttachments , undef);
-
-# $DropLongAttachments: if this is set to a non-undef value,
-# RT will silently drop attachments longer than MaxAttachmentLength.
-
-Set($DropLongAttachments , undef);
-
-# If $ParseNewMessageForTicketCcs is true, RT will attempt to divine
-# Ticket 'Cc' watchers from the To and Cc lines of incoming messages
-# Be forewarned that if you have _any_ addresses which forward mail to
-# RT automatically and you enable this option without modifying
-# "RTAddressRegexp" below, you will get yourself into a heap of trouble.
-
-Set($ParseNewMessageForTicketCcs , undef);
-
-# RTAddressRegexp is used to make sure RT doesn't add itself as a ticket CC if
-# the setting above is enabled.
-
-Set($RTAddressRegexp , '^rt\@example.com$');
-
-# RT provides functionality which allows the system to rewrite
-# incoming email addresses.  In its simplest form,
-# you can substitute the value in CanonicalizeEmailAddressReplace
-# for the value in CanonicalizeEmailAddressMatch
-# (These values are passed to the CanonicalizeEmailAddress subroutine in RT/User.pm)
-# By default, that routine performs a s/$Match/$Replace/gi on any address passed to it
-
-Set($CanonicalizeEmailAddressMatch   , 'subdomain.example.com$');
-Set($CanonicalizeEmailAddressReplace , 'example.com');
-
-# If $SenderMustExistInExternalDatabase is true, RT will refuse to
-# create non-privileged accounts for unknown users if you are using
-# the "LookupSenderInExternalDatabase" option.
-# Instead, an error message will be mailed and RT will forward the
-# message to $RTOwner.
-#
-# If you are not using $LookupSenderInExternalDatabase, this option
-# has no effect.
-#
-# If you define an AutoRejectRequest template, RT will use this
-# template for the rejection message.
-
-Set($SenderMustExistInExternalDatabase , undef);
-
-# }}}
-
-# {{{ Outgoing mail configuration
-
-# RT is designed such that any mail which already has a ticket-id associated
-# with it will get to the right place automatically.
-
-# $CorrespondAddress and $CommentAddress are the default addresses
-# that will be listed in From: and Reply-To: headers of correspondence
-# and comment mail tracked by RT, unless overridden by a queue-specific
-# address.
-
-Set($CorrespondAddress , 'RT_CorrespondAddressNotSet');
-
-Set($CommentAddress , 'RT_CommentAddressNotSet');
-
-#Sendmail Configuration
-
-# $MailCommand defines which method RT will use to try to send mail
-# We know that 'sendmailpipe' works fairly well.
-# If 'sendmailpipe' doesn't work well for you, try 'sendmail'
-#
-# Note that you should remove the '-t' from $SendmailArguments
-# if you use 'sendmail rather than 'sendmailpipe'
-
-Set($MailCommand , 'sendmailpipe');
-
-# $SendmailArguments defines what flags to pass to $Sendmail
-# assuming you picked 'sendmail' or 'sendmailpipe' as the $MailCommand above.
-# If you picked 'sendmailpipe', you MUST add a -t flag to $SendmailArguments
-
-# These options are good for most sendmail wrappers and workalikes
-Set($SendmailArguments , "-oi -t");
-
-# These arguments are good for sendmail brand sendmail 8 and newer
-#Set($SendmailArguments,"-oi -t -ODeliveryMode=b -OErrorMode=m");
-
-# If you selected 'sendmailpipe' above, you MUST specify the path
-# to your sendmail binary in $SendmailPath.
-# !! If you did not # select 'sendmailpipe' above, this has no effect!!
-Set($SendmailPath , "/usr/sbin/sendmail");
-
-# By default, RT sets the outgoing mail's "From:" header to
-# "SenderName via RT".  Setting this option to 0 disables it.
-
-Set($UseFriendlyFromLine , 1);
-
-# sprintf() format of the friendly 'From:' header; its arguments
-# are SenderName and SenderEmailAddress.
-Set($FriendlyFromLineFormat , "\"%s via RT\" <%s>");
-
-# RT can optionally set a "Friendly" 'To:' header when sending messages to
-# Ccs or AdminCcs (rather than having a blank 'To:' header.
-
-# This feature DOES NOT WORK WITH SENDMAIL[tm] BRAND SENDMAIL
-# If you are using sendmail, rather than postfix, qmail, exim or some other MTA,
-# you _must_ disable this option.
-
-Set($UseFriendlyToLine , 0);
-
-# sprintf() format of the friendly 'From:' header; its arguments
-# are WatcherType and TicketId.
-Set($FriendlyToLineFormat, "\"%s of $RT::rtname Ticket #%s\":;");
-
-# By default RT doesn't notify the person who performs an update, as they
-# already know what they've done. If you'd like to change this behaviour,
-# Set $NotifyActor to 1
-
-Set($NotifyActor, 0);
-
-
-# }}}
-
-# {{{ Logging
-
-# Logging.  The default is to log anything except debugging
-# information to syslog.  Check the Log::Dispatch POD for
-# information about how to get things by syslog, mail or anything
-# else, get debugging info in the log, etc.
-
-#  It might generally make
-# sense to send error and higher by email to some administrator.
-# If you do this, be careful that this email isn't sent to this RT instance.
-
-# the minimum level error that will be logged to the specific device.
-# levels from lowest to highest:
-#  debug info notice warning error critical alert emergency
-
-#  Mail loops will generate a critical log message.
-Set($LogToSyslog    , 'debug');
-Set($LogToScreen    , 'error');
-Set($LogToFile      , undef);
-Set($LogDir, '/opt/rt3/var/log');
-Set($LogToFileNamed , "rt.log");    #log to rt.log
-
-# }}}
-
-# {{{ Web interface configuration
-
-# Define the directory name to be used for images in rt web
-# documents.
-
-# If you're putting the web ui somewhere other than at the root of
-# your server
-# $WebPath requires a leading / but no trailing /
-
-Set($WebPath , "");
-
-# This is the Scheme, server and port for constructing urls to webrt
-# $WebBaseURL doesn't need a trailing /
-
-Set($WebBaseURL , "http://RT::WebBaseURL.not.configured:80");
-
-Set($WebURL , $WebBaseURL . $WebPath . "/");
-
-# $WebImagesURL points to the base URL where RT can find its images.
-
-Set($WebImagesURL , $WebURL . "NoAuth/images/");
-
-# $RTLogoURL points to the URL of the RT logo displayed in the web UI
-
-Set($LogoURL , $WebImagesURL . "rt.jpg");
-
-# For message boxes, set the entry box width and what type of wrapping
-# to use.
-#
-# Default width: 72
-Set($MessageBoxWidth , 72);
-
-# Default wrapping: "HARD"  (choices "SOFT", "HARD")
-Set($MessageBoxWrap, "HARD");
-
-# if TrustHTMLAttachments is not defined, we will display them
-# as text. This prevents malicious HTML and javascript from being
-# sent in a request (although there is probably more to it than that)
-Set($TrustHTMLAttachments , undef);
-
-# If $WebExternalAuth is defined, RT will defer to the environment's
-# REMOTE_USER variable.
-
-Set($WebExternalAuth , undef);
-
-# If $WebFallbackToInternalAuth is undefined, the user is allowed a chance
-# of fallback to the login screen, even if REMOTE_USER failed.
-
-Set($WebFallbackToInternalAuth , undef);
-
-# $WebExternalGecos means to match 'gecos' field as the user identity);
-# useful with mod_auth_pwcheck and IIS Integrated Windows logon.
-
-Set($WebExternalGecos , undef);
-
-# $WebExternalAuto will create users under the same name as REMOTE_USER
-# upon login, if it's missing in the Users table.
-
-Set($WebExternalAuto , undef);
-
-# $WebSessionClass is the class you wish to use for managing Sessions.
-# It defaults to use your SQL database, but if you are using MySQL 3.x and
-# plans to use non-ascii Queue names, uncomment and add this line to
-# RT_SiteConfig.pm will prevent session corruption.
-
-# Set($WebSessionClass , 'Apache::Session::File');
-
-# $MaxInlineBody is the maximum attachment size that we want to see
-# inline when viewing a transaction. 13456 is a random sane-sounding
-# default.
-
-Set($MaxInlineBody, 13456);
-
-# $MyTicketsLength is the length of the table on the front page.
-# For some people, the default of 10 isn't big enough to get a feel for
-# how much work needs to be done before you get some time off.
-
-Set($MyTicketsLength, 10);
-
-# @MasonParameters is the list of parameters for the constructor of
-# HTML::Mason's Apache or CGI Handler.  This is normally only useful
-# for debugging, eg. profiling individual components with
-#     (preamble => 'my $p = MasonX::Profiler->new($m, $r);');
-
-@MasonParameters = () unless (@MasonParameters);
-
-# }}}
-
-# {{{ RT UTF-8 Settings
-
-# An array that contains languages supported by RT's internationalization
-# interface.  Defaults to all *.po lexicons; set it to qw(en ja) will make
-# RT bilingual instead of multilingual, but will save same memory.
-
-@LexiconLanguages = qw(*) unless (@LexiconLanguages);
-
-# An array that contains default encodings used to guess which charset
-# an attachment uses if not specified.  Must be recognized by
-# Encode::Guess.
-
-@EmailInputEncodings = qw(utf-8 iso-8859-1 us-ascii) unless (@EmailInputEncodings);
-
-# The charset for localized email.  Must be recognized by Encode.
-
-Set($EmailOutputEncoding , 'utf-8');
-
-# }}}
-
-# {{{ RT Date Handling Options (for Time::ParseDate)
-
-# Set this to 1 if your local date convention looks like "dd/mm/yy"
-# instead of "mm/dd/yy".
-
-Set($DateDayBeforeMonth , 1);
-
-# Should "Tuesday" default to meaning "Next Tuesday" or "Last Tuesday"?
-# Set to 0 for "Next" or 1 for "Last".
-
-Set($AmbiguousDayInPast , 1);
-
-# }}}
-
-1;
diff --git a/rt/lib/RT.pm b/rt/lib/RT.pm
deleted file mode 100644 (file)
index 7e941a2..0000000
+++ /dev/null
@@ -1,323 +0,0 @@
-# BEGIN LICENSE BLOCK
-# 
-# Copyright (c) 1996-2002 Jesse Vincent <jesse@bestpractical.com>
-# 
-# (Except where explictly superceded by other copyright notices)
-# 
-# This work is made available to you under the terms of Version 2 of
-# the GNU General Public License. A copy of that license should have
-# been provided with this software, but in any event can be snarfed
-# from www.gnu.org
-# 
-# This work is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-# 
-# 
-# Unless otherwise specified, all modifications, corrections or
-# extensions to this work which alter its source code become the
-# property of Best Practical Solutions, LLC when submitted for
-# inclusion in the work.
-# 
-# 
-# END LICENSE BLOCK
-
-
-package RT;
-use strict;
-use RT::I18N;
-use RT::CurrentUser;
-use RT::System;
-
-use vars qw($VERSION $System $SystemUser $Nobody $Handle $Logger
-        $CORE_CONFIG_FILE
-        $SITE_CONFIG_FILE
-        $VENDOR_CONFIG_FILE
-        $BasePath
-        $EtcPath
-        $VarPath
-        $LocalPath
-        $LocalEtcPath
-        $LocalLexiconPath
-        $LogDir
-        $MasonComponentRoot
-        $MasonLocalComponentRoot
-        $MasonDataDir
-        $MasonSessionDir
-);
-
-$VERSION = '3.0.9';
-$CORE_CONFIG_FILE = "/opt/rt3/etc/RT_Config.pm";
-$SITE_CONFIG_FILE = "/opt/rt3/etc/RT_SiteConfig.pm";
-
-$BasePath = '/opt/rt3';
-
-$EtcPath = '/opt/rt3/etc';
-$VarPath = '/opt/rt3/var';
-$LocalPath = '/opt/rt3/local';
-$LocalEtcPath = '/opt/rt3/local/etc';
-$LocalLexiconPath = '/opt/rt3/local/po';
-
-# $MasonComponentRoot is where your rt instance keeps its mason html files
-
-$MasonComponentRoot = '/opt/rt3/share/html';
-
-# $MasonLocalComponentRoot is where your rt instance keeps its site-local
-# mason html files.
-
-$MasonLocalComponentRoot = '/opt/rt3/local/html';
-
-# $MasonDataDir Where mason keeps its datafiles
-
-$MasonDataDir = '/opt/rt3/var/mason_data';
-
-# RT needs to put session data (for preserving state between connections
-# via the web interface)
-$MasonSessionDir = '/opt/rt3/var/session_data';
-
-
-
-=head1 NAME
-
-       RT - Request Tracker
-
-=head1 SYNOPSIS
-
-       A fully featured request tracker package
-
-=head1 DESCRIPTION
-
-
-=cut
-
-=item LoadConfig
-
-Load RT's config file. First, go after the core config file. 
-After that, try to load the vendor config.
-After that, go after the site config.
-
-=cut
-
-sub LoadConfig {
-     local *Set = sub { $_[0] = $_[1] unless defined $_[0] }; 
-    if ( -f "$SITE_CONFIG_FILE" ) {
-        require $SITE_CONFIG_FILE
-          || die ("Couldn't load RT config file  '$SITE_CONFIG_FILE'\n$@");
-    }
-    require $CORE_CONFIG_FILE
-      || die ("Couldn't load RT config file '$CORE_CONFIG_FILE'\n$@");
-    RT::I18N->Init;
-}
-
-=item Init
-
-    Conenct to the database, set up logging.
-    
-=cut
-
-sub Init {
-
-    #Get a database connection
-    ConnectToDatabase();
-
-    #RT's system user is a genuine database user. its id lives here
-    $SystemUser = new RT::CurrentUser();
-    $SystemUser->LoadByName('RT_System');
-    
-    #RT's "nobody user" is a genuine database user. its ID lives here.
-    $Nobody = new RT::CurrentUser();
-    $Nobody->LoadByName('Nobody');
-  
-    $System = RT::System->new();
-
-   InitLogging(); 
-}
-
-  
-=head2 ConnectToDatabase
-
-Get a database connection
-
-=cut
-sub ConnectToDatabase {
-    require RT::Handle;
-    unless ($Handle && $Handle->dbh && $Handle->dbh->ping) {
-        $Handle = RT::Handle->new();
-    } 
-    $Handle->Connect();
-}
-    
-=head2 InitLogging
-
-Create the RT::Logger object. 
-
-=cut
-sub InitLogging {
-
-    # We have to set the record seperator ($, man perlvar)
-    # or Log::Dispatch starts getting
-    # really pissy, as some other module we use unsets it.
-
-    $, = '';
-    use Log::Dispatch 1.6;
-
-    unless ($RT::Logger) {
-
-    $RT::Logger=Log::Dispatch->new();
-    
-    if ($RT::LogToFile) {
-
-    unless (-d $RT::LogDir && -w $RT::LogDir) {
-        # localizing here would be hard when we don't have a current user yet
-        # die $self->loc("Log directory [_1] not found or couldn't be written.\n RT can't run.", $RT::LogDir);
-        die ("Log directory $RT::LogDir not found or couldn't be written.\n RT can't run.");
-    }
-
-       my $filename;
-       if ($RT::LogToFileNamed =~ m![/\\]!) {
-           # looks like an absolute path.
-           $filename = $RT::LogToFileNamed;
-       }
-       else {
-           $filename = "$RT::LogDir/$RT::LogToFileNamed";
-       }
-    require Log::Dispatch::File;
-
-
-         $RT::Logger->add(Log::Dispatch::File->new
-                      ( name=>'rtlog',
-                        min_level=> $RT::LogToFile,
-                        filename=> $filename,
-                        mode=>'append',
-                        callbacks => sub { my %p = @_;
-                                my ($package, $filename, $line) = caller(5);
-                                return "[".gmtime(time)."] [".$p{level}."]: $p{message} ($filename:$line)\n"}
-             
-             
-             
-                      ));
-    }
-    if ($RT::LogToScreen) {
-       require Log::Dispatch::Screen;
-       $RT::Logger->add(Log::Dispatch::Screen->new
-                    ( name => 'screen',
-                      min_level => $RT::LogToScreen,
-                        callbacks => sub { my %p = @_;
-                                my ($package, $filename, $line) = caller(5);
-                                return "[".gmtime(time)."] [".$p{level}."]: $p{message} ($filename:$line)\n"
-                               },
-             
-                      stderr => 1
-                    ));
-    }
-    if ($RT::LogToSyslog) {
-       require Log::Dispatch::Syslog;
-       $RT::Logger->add(Log::Dispatch::Syslog->new
-                    ( name => 'syslog',
-                       ident => 'RT',
-                      min_level => $RT::LogToSyslog,
-                        callbacks => sub { my %p = @_;
-                                my ($package, $filename, $line) = caller(5);
-
-                               # syswrite() cannot take utf8; turn it off here.
-                               Encode::_utf8_off($p{message});
-
-                               if ($p{level} eq 'debug') {
-
-                                return "$p{message}\n" }
-                               else {
-                                return "$p{message} ($filename:$line)\n"}
-                               },
-             
-                      stderr => 1
-                    ));
-    }
-
-    }
-
-# {{{ Signal handlers
-
-## This is the default handling of warnings and die'ings in the code
-## (including other used modules - maybe except for errors catched by
-## Mason).  It will log all problems through the standard logging
-## mechanism (see above).
-
-$SIG{__WARN__} = sub {$RT::Logger->warning($_[0])};
-
-#When we call die, trap it and log->crit with the value of the die.
-
-$SIG{__DIE__}  = sub {
-    unless ($^S || !defined $^S ) {
-        $RT::Handle->Rollback();
-        $RT::Logger->crit("$_[0]");
-        exit(-1);
-    }
-    else {
-        #Get out of here if we're in an eval
-        die $_[0];
-    }
-};
-
-# }}}
-
-}
-
-# }}}
-
-
-sub SystemUser {
-    return($SystemUser);
-}      
-
-sub Nobody {
-    return ($Nobody);
-}
-
-
-=head2 DropSetGIDPermissions
-
-Drops setgid permissions.
-
-=cut
-
-sub DropSetGIDPermissions {
-    # Now that we got the config read in, we have the database 
-    # password and don't need to be setgid
-    # make the effective group the real group
-    $) = $(;
-}
-
-
-=head1 SYNOPSIS
-
-=head1 BUGS
-
-Please report them to rt-3.0-bugs@fsck.com, if you know what's broken and have at least some idea of what needs to be fixed.
-If you're not sure what's going on, report them rt-devel@lists.fsck.com.
-
-=head1 SEE ALSO
-
-L<RT::StyleGuide>
-L<DBIx::SearchBuilder>
-
-
-
-=begin testing
-
-
-ok ($RT::Nobody->Name() eq 'Nobody', "Nobody is nobody");
-ok ($RT::Nobody->Name() ne 'root', "Nobody isn't named root");
-ok ($RT::SystemUser->Name() eq 'RT_System', "The system user is RT_System");
-ok ($RT::SystemUser->Name() ne 'noname', "The system user isn't noname");
-
-
-=end testing
-
-=cut
-
-eval "require RT_Local";
-die $@ if ($@ && $@ !~ qr{^Can't locate RT_Local.pm});
-
-1;
diff --git a/rt/lib/t/00smoke.t b/rt/lib/t/00smoke.t
deleted file mode 100644 (file)
index 4f36bb3..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/usr/bin/perl
-
-use Test::More qw(no_plan);
-
-use lib "/opt/rt3/lib";
-use RT;
-ok(RT::LoadConfig);
-ok(RT::Init, "Basic initialization and DB connectivity");
-
-use File::Find;
-File::Find::find({wanted => \&wanted}, '.');
-sub wanted { /^*\.pm\z/s && ok(require $_, "Requiring '$_'"); }
-
-
diff --git a/rt/lib/t/01harness.t b/rt/lib/t/01harness.t
deleted file mode 100644 (file)
index 98c28d2..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/usr/bin/perl
-
-use Test::More qw(no_plan);
-
-use lib "/opt/rt3/lib";
-use RT;
-ok(RT::LoadConfig);
-ok(RT::Init, "Basic initialization and DB connectivity");
-
-my $test = shift @ARGV;
-require $test;
-
diff --git a/rt/lib/t/02regression.t b/rt/lib/t/02regression.t
deleted file mode 100644 (file)
index 4504cc7..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/usr/bin/perl
-
-use Test::More qw(no_plan);
-
-use lib "/opt/rt3/lib";
-use RT;
-ok(RT::LoadConfig);
-ok(RT::Init, "Basic initialization and DB connectivity");
-
-# Create a new queue
-use_ok(RT::Queue);
-my $q = RT::Queue->new($RT::SystemUser);
-
-$q->Load('regression');
-if ($q->id != 0) {
-        die "Regression tests not starting with a clean DB. Bailing";
-}
-
-my ($id, $msg) = $q->Create( Name => 'Regression',
-            Description => 'A regression test queue',
-            CorrespondAddress => 'correspond@a',
-            CommentAddress => 'comment@a');
-
-isnt($id, 0, "Queue was created sucessfully - $msg");
-
-my $q2 = RT::Queue->new($RT::SystemUser);
-
-ok($q2->Load($id));
-is($q2->id, $id, "Sucessfully loaded the queue again");
-is($q2->Name, 'Regression');
-is($q2->Description, 'A regression test queue');
-is($q2->CorrespondAddress, 'correspond@a');
-is($q2->CommentAddress, 'comment@a');
-
-
-use File::Find;
-File::Find::find({wanted => \&wanted_autogen}, 'lib/t/autogen');
-sub wanted_autogen { /^autogen.*\.t\z/s && require $_; }
-
-File::Find::find({wanted => \&wanted_regression}, 'lib/t/regression');
-sub wanted_regression { /^*\.t\z/s && require $_; }
-
-require "/opt/rt3/lib/t/03web.pl";
-require "/opt/rt3/lib/t/04_send_email.pl";
diff --git a/rt/lib/t/03web.pl b/rt/lib/t/03web.pl
deleted file mode 100644 (file)
index 94ad3e9..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-#!/usr/bin/perl
-
-use strict;
-use WWW::Mechanize;
-use HTTP::Request::Common;
-use HTTP::Cookies;
-use LWP;
-use Encode;
-
-my $cookie_jar = HTTP::Cookies->new;
-my $agent = WWW::Mechanize->new();
-
-# give the agent a place to stash the cookies
-
-$agent->cookie_jar($cookie_jar);
-
-
-# get the top page
-my $url = "http://localhost".$RT::WebPath."/";
-$agent->get($url);
-
-is ($agent->{'status'}, 200, "Loaded a page");
-
-
-# {{{ test a login
-
-# follow the link marked "Login"
-
-ok($agent->{form}->find_input('user'));
-
-ok($agent->{form}->find_input('pass'));
-ok ($agent->{'content'} =~ /username:/i);
-$agent->field( 'user' => 'root' );
-$agent->field( 'pass' => 'password' );
-# the field isn't named, so we have to click link 0
-$agent->click(0);
-is($agent->{'status'}, 200, "Fetched the page ok");
-ok( $agent->{'content'} =~ /Logout/i, "Found a logout link");
-
-
-
-$agent->get($url."Ticket/Create.html?Queue=1");
-is ($agent->{'status'}, 200, "Loaded Create.html");
-$agent->form(3);
-# Start with a string containing characters in latin1
-my $string = "I18N Web Testing æøå";
-Encode::from_to($string, 'iso-8859-1', 'utf8');
-$agent->field('Subject' => "Foo");
-$agent->field('Content' => $string);
-ok($agent->submit(), "Created new ticket with $string");
-
-ok( $agent->{'content'} =~ qr{$string} , "Found the content");
-
-$agent->get($url."Ticket/Create.html?Queue=1");
-is ($agent->{'status'}, 200, "Loaded Create.html");
-$agent->form(3);
-# Start with a string containing characters in latin1
-my $string = "I18N Web Testing æøå";
-Encode::from_to($string, 'iso-8859-1', 'utf8');
-$agent->field('Subject' => $string);
-$agent->field('Content' => "BAR");
-ok($agent->submit(), "Created new ticket with $string");
-
-ok( $agent->{'content'} =~ qr{$string} , "Found the content");
-
-
-
-# }}}
-
-
-
-use File::Find;
-find ( \&wanted , 'html/');
-
-sub wanted {
-        -f  && /\.html$/ && $_ !~ /Logout.html$/  && test_get($File::Find::name);
-}       
-
-sub test_get {
-        my $file = shift;
-
-
-        $file =~ s#^html/##; 
-        ok ($agent->get("$url/$file", "GET $url/$file"));
-        is ($agent->{'status'}, 200, "Loaded $file");
-        ok( $agent->{'content'} =~ /Logout/i, "Found a logout link on $file ");
-        ok( $agent->{'content'} !~ /Not logged in/i, "Still logged in for  $file");
-        ok( $agent->{'content'} !~ /System error/i, "Didn't get a Mason compilation error on $file");
-        
-}
-
-# }}}
-
-1;
diff --git a/rt/lib/t/04_send_email.pl b/rt/lib/t/04_send_email.pl
deleted file mode 100644 (file)
index c384eed..0000000
+++ /dev/null
@@ -1,481 +0,0 @@
-#!/usr/bin/perl -w
-
-use strict;
-use RT::EmailParser;
-use RT::Tickets;
-use RT::Action::SendEmail;
-
-my @_outgoing_messages;
-my @scrips_fired;
-
-#We're not testing acls here.
-my $everyone = RT::Group->new($RT::SystemUser);
-$everyone->LoadSystemInternalGroup('Everyone');
-$everyone->PrincipalObj->GrantRight(Right =>'SuperUser');
-
-
-is (__PACKAGE__, 'main', "We're operating in the main package");
-
-
-{
-no warnings qw/redefine/;
-sub RT::Action::SendEmail::SendMessage {
-        my $self = shift;
-        my $MIME = shift;
-
-        main::_fired_scrip($self->ScripObj);
-        main::ok(ref($MIME) eq 'MIME::Entity', "hey, look. it's a mime entity");
-}
-
-}
-
-# instrument SendEmail to pass us what it's about to send.
-# create a regular ticket
-
-my $parser = RT::EmailParser->new();
-
-
-# Let's test to make sure a multipart/report is processed correctly
-my $content =  `cat /opt/rt3/lib/t/data/multipart-report` || die "couldn't find new content";
-# be as much like the mail gateway as possible.
-use RT::Interface::Email;
-                                  
-my %args =        (message => $content, queue => 1, action => 'correspond');
- RT::Interface::Email::Gateway(\%args);
-my $tickets = RT::Tickets->new($RT::SystemUser);
-$tickets->OrderBy(FIELD => 'id', ORDER => 'DESC');
-$tickets->Limit(FIELD => 'id' ,OPERATOR => '>', VALUE => '0');
-my $tick = $tickets->First();
-ok ($tick->Id, "found ticket ".$tick->Id);
-
-ok ($tick->Transactions->First->Content =~ /The original message was received/, "It's the bounce");
-
-
-# make sure it fires scrips.
-is ($#scrips_fired, 1, "Fired 2 scrips on ticket creation");
-
-undef @scrips_fired;
-
-
-
-
-$parser->ParseMIMEEntityFromScalar('From: root@localhost
-To: rt@example.com
-Subject: This is a test of new ticket creation as an unknown user
-
-Blah!
-Foob!');
-
-                                  
-use Data::Dumper;
-
-my $ticket = RT::Ticket->new($RT::SystemUser);
-my ($id,  $tid, $msg ) = $ticket->Create(Requestor => ['root@localhost'], Queue => 'general', Subject => 'I18NTest', MIMEObj => $parser->Entity);
-ok ($id,$msg);
-my $tickets = RT::Tickets->new($RT::SystemUser);
-$tickets->OrderBy(FIELD => 'id', ORDER => 'DESC');
-$tickets->Limit(FIELD => 'id' ,OPERATOR => '>', VALUE => '0');
-my $tick = $tickets->First();
-ok ($tick->Id, "found ticket ".$tick->Id);
-ok ($tick->Subject eq 'I18NTest', "failed to create the new ticket from an unprivileged account");
-
-# make sure it fires scrips.
-is ($#scrips_fired, 1, "Fired 2 scrips on ticket creation");
-# make sure it sends an autoreply
-# make sure it sends a notification to adminccs
-
-
-# we need to swap out SendMessage to test the new things we care about;
-&utf8_redef_sendmessage;
-
-# create an iso 8859-1 ticket
-@scrips_fired = ();
-
-my $content =  `cat /opt/rt3/lib/t/data/new-ticket-from-iso-8859-1` || die "couldn't find new content";
-
-
-
-$parser->ParseMIMEEntityFromScalar($content);
-
-
-# be as much like the mail gateway as possible.
-use RT::Interface::Email;
-                           
-my %args =        (message => $content, queue => 1, action => 'correspond');
- RT::Interface::Email::Gateway(\%args);
-my $tickets = RT::Tickets->new($RT::SystemUser);
-$tickets->OrderBy(FIELD => 'id', ORDER => 'DESC');
-$tickets->Limit(FIELD => 'id' ,OPERATOR => '>', VALUE => '0');
-my $tick = $tickets->First();
-ok ($tick->Id, "found ticket ".$tick->Id);
-
-ok ($tick->Transactions->First->Content =~ /H\x{e5}vard/, "It's signed by havard. yay");
-
-
-# make sure it fires scrips.
-is ($#scrips_fired, 1, "Fired 2 scrips on ticket creation");
-# make sure it sends an autoreply
-
-
-# make sure it sends a notification to adminccs
-
-# If we correspond, does it do the right thing to the outbound messages?
-
-$parser->ParseMIMEEntityFromScalar($content);
-my ($id, $msg) = $tick->Comment(MIMEObj => $parser->Entity);
-ok ($id, $msg);
-
-$parser->ParseMIMEEntityFromScalar($content);
-($id, $msg) = $tick->Correspond(MIMEObj => $parser->Entity);
-ok ($id, $msg);
-
-
-
-
-
-# we need to swap out SendMessage to test the new things we care about;
-&iso8859_redef_sendmessage;
-$RT::EmailOutputEncoding = 'iso-8859-1';
-# create an iso 8859-1 ticket
-@scrips_fired = ();
-
-my $content =  `cat /opt/rt3/lib/t/data/new-ticket-from-iso-8859-1` || die "couldn't find new content";
-# be as much like the mail gateway as possible.
-use RT::Interface::Email;
-                                  
-my %args =        (message => $content, queue => 1, action => 'correspond');
- RT::Interface::Email::Gateway(\%args);
-my $tickets = RT::Tickets->new($RT::SystemUser);
-$tickets->OrderBy(FIELD => 'id', ORDER => 'DESC');
-$tickets->Limit(FIELD => 'id' ,OPERATOR => '>', VALUE => '0');
-my $tick = $tickets->First();
-ok ($tick->Id, "found ticket ".$tick->Id);
-
-ok ($tick->Transactions->First->Content =~ /H\x{e5}vard/, "It's signed by havard. yay");
-
-
-# make sure it fires scrips.
-is ($#scrips_fired, 1, "Fired 2 scrips on ticket creation");
-# make sure it sends an autoreply
-
-
-# make sure it sends a notification to adminccs
-
-
-# If we correspond, does it do the right thing to the outbound messages?
-
-$parser->ParseMIMEEntityFromScalar($content);
-my ($id, $msg) = $tick->Comment(MIMEObj => $parser->Entity);
-ok ($id, $msg);
-
-$parser->ParseMIMEEntityFromScalar($content);
-($id, $msg) = $tick->Correspond(MIMEObj => $parser->Entity);
-ok ($id, $msg);
-
-
-sub _fired_scrip {
-        my $scrip = shift;
-        push @scrips_fired, $scrip;
-}       
-
-sub utf8_redef_sendmessage {
-    no warnings qw/redefine/;
-    eval ' 
-    sub RT::Action::SendEmail::SendMessage {
-        my $self = shift;
-        my $MIME = shift;
-
-        my $scrip = $self->ScripObj->id;
-        ok(1, $self->ScripObj->ConditionObj->Name . " ".$self->ScripObj->ActionObj->Name);
-        main::_fired_scrip($self->ScripObj);
-        $MIME->make_singlepart;
-        main::ok( ref($MIME) eq \'MIME::Entity\',
-                  "hey, look. it\'s a mime entity" );
-        main::ok( ref( $MIME->head ) eq \'MIME::Head\',
-                  "its mime header is a mime header. yay" );
-        main::ok( $MIME->head->get(\'Content-Type\') =~ /utf-8/,
-                  "Its content type is utf-8" );
-        my $message_as_string = $MIME->bodyhandle->as_string();
-        use Encode;
-        $message_as_string = Encode::decode_utf8($message_as_string);
-        main::ok(
-            $message_as_string =~ /H\x{e5}vard/,
-"The message\'s content contains havard\'s name. this will fail if it\'s not utf8 out");
-
-    }';
-}
-
-sub iso8859_redef_sendmessage {
-    no warnings qw/redefine/;
-    eval ' 
-    sub RT::Action::SendEmail::SendMessage {
-        my $self = shift;
-        my $MIME = shift;
-
-        my $scrip = $self->ScripObj->id;
-        ok(1, $self->ScripObj->ConditionObj->Name . " ".$self->ScripObj->ActionObj->Name);
-        main::_fired_scrip($self->ScripObj);
-        $MIME->make_singlepart;
-        main::ok( ref($MIME) eq \'MIME::Entity\',
-                  "hey, look. it\'s a mime entity" );
-        main::ok( ref( $MIME->head ) eq \'MIME::Head\',
-                  "its mime header is a mime header. yay" );
-        main::ok( $MIME->head->get(\'Content-Type\') =~ /iso-8859-1/,
-                  "Its content type is iso-8859-1 - " . $MIME->head->get("Content-Type") );
-        my $message_as_string = $MIME->bodyhandle->as_string();
-        use Encode;
-        $message_as_string = Encode::decode("iso-8859-1",$message_as_string);
-        main::ok(
-            $message_as_string =~ /H\x{e5}vard/, "The message\'s content contains havard\'s name. this will fail if it\'s not utf8 out");
-
-    }';
-}
-
-# {{{ test a multipart alternative containing a text-html part with an umlaut
-
-my $content =  `cat /opt/rt3/lib/t/data/multipart-alternative-with-umlaut` || die "couldn't find new content";
-
-$parser->ParseMIMEEntityFromScalar($content);
-
-
-# be as much like the mail gateway as possible.
-&umlauts_redef_sendmessage;
-
-my %args =        (message => $content, queue => 1, action => 'correspond');
- RT::Interface::Email::Gateway(\%args);
-my $tickets = RT::Tickets->new($RT::SystemUser);
-$tickets->OrderBy(FIELD => 'id', ORDER => 'DESC');
-$tickets->Limit(FIELD => 'id' ,OPERATOR => '>', VALUE => '0');
-my $tick = $tickets->First();
-ok ($tick->Id, "found ticket ".$tick->Id);
-
-ok ($tick->Transactions->First->Content =~ /causes Error/, "We recorded the content right as text-plain");
-is ($tick->Transactions->First->Attachments->Count , 3 , "Has three attachments, presumably a text-plain, a text-html and a multipart alternative");
-
-sub umlauts_redef_sendmessage {
-    no warnings qw/redefine/;
-    eval 'sub RT::Action::SendEmail::SendMessage { }';
-}
-
-# }}}
-
-# {{{ test a text-html message with an umlaut
-
-my $content =  `cat /opt/rt3/lib/t/data/text-html-with-umlaut` || die "couldn't find new content";
-
-$parser->ParseMIMEEntityFromScalar($content);
-
-
-# be as much like the mail gateway as possible.
-&text_html_umlauts_redef_sendmessage;
-
-my %args =        (message => $content, queue => 1, action => 'correspond');
- RT::Interface::Email::Gateway(\%args);
-my $tickets = RT::Tickets->new($RT::SystemUser);
-$tickets->OrderBy(FIELD => 'id', ORDER => 'DESC');
-$tickets->Limit(FIELD => 'id' ,OPERATOR => '>', VALUE => '0');
-my $tick = $tickets->First();
-ok ($tick->Id, "found ticket ".$tick->Id);
-
-ok ($tick->Transactions->First->Attachments->First->Content =~ /causes Error/, "We recorded the content as containing 'causes error'");
-ok ($tick->Transactions->First->Attachments->First->ContentType =~ /text\/html/, "We recorded the content as text/html");
-ok ($tick->Transactions->First->Attachments->Count ==1 , "Has one attachment, presumably a text-html and a multipart alternative");
-
-sub text_html_umlauts_redef_sendmessage {
-    no warnings qw/redefine/;
-    eval 'sub RT::Action::SendEmail::SendMessage { 
-                my $self = shift; 
-                my $MIME = shift; 
-                use Data::Dumper;
-                return (1) unless ($self->ScripObj->ScripActionObj->Name eq "Notify AdminCcs" );
-                ok (is $MIME->parts, 2, "generated correspondence mime entityis composed of three parts");
-                is ($MIME->head->mime_type , "multipart/mixed", "The first part is a multipart mixed". $MIME->head->mime_type);
-                is ($MIME->parts(0)->head->mime_type , "text/plain", "The second part is a plain");
-                is ($MIME->parts(1)->head->mime_type , "text/html", "The third part is an html ");
-                 }';
-}
-
-# }}}
-
-# {{{ test a text-html message with russian characters
-
-my $content =  `cat /opt/rt3/lib/t/data/text-html-in-russian` || die "couldn't find new content";
-
-$parser->ParseMIMEEntityFromScalar($content);
-
-
-# be as much like the mail gateway as possible.
-&text_html_russian_redef_sendmessage;
-
-my %args =        (message => $content, queue => 1, action => 'correspond');
- RT::Interface::Email::Gateway(\%args);
-my $tickets = RT::Tickets->new($RT::SystemUser);
-$tickets->OrderBy(FIELD => 'id', ORDER => 'DESC');
-$tickets->Limit(FIELD => 'id' ,OPERATOR => '>', VALUE => '0');
-my $tick = $tickets->First();
-ok ($tick->Id, "found ticket ".$tick->Id);
-
-ok ($tick->Transactions->First->Attachments->First->ContentType =~ /text\/html/, "We recorded the content right as text-html");
-ok ($tick->Transactions->First->Attachments->Count ==1 , "Has one attachment, presumably a text-html and a multipart alternative");
-
-sub text_html_russian_redef_sendmessage {
-    no warnings qw/redefine/;
-    eval 'sub RT::Action::SendEmail::SendMessage { 
-                my $self = shift; 
-                my $MIME = shift; 
-                use Data::Dumper;
-                return (1) unless ($self->ScripObj->ScripActionObj->Name eq "Notify AdminCcs" );
-                ok (is $MIME->parts, 2, "generated correspondence mime entityis composed of three parts");
-                is ($MIME->head->mime_type , "multipart/mixed", "The first part is a multipart mixed". $MIME->head->mime_type);
-                is ($MIME->parts(0)->head->mime_type , "text/plain", "The second part is a plain");
-                is ($MIME->parts(1)->head->mime_type , "text/html", "The third part is an html ");
-                my $content_1251;
-                $content_1251 = $MIME->parts(1)->bodyhandle->as_string();
-                ok ($content_1251 =~ qr{Ó÷eáíûé Öeíòp "ÊÀÄÐÛ ÄÅËÎÂÎÃΠÌÈÐÀ" ïpèãëaøaeò ía òpeíèíã:},
-"Content matches drugim in codepage 1251" );
-                 }';
-}
-
-# }}}
-
-# {{{ test a message containing a russian subject and NO content type
-
-unshift (@RT::EmailInputEncodings, 'koi8-r');
-$RT::EmailOutputEncoding = 'koi8-r';
-my $content =  `cat /opt/rt3/lib/t/data/russian-subject-no-content-type` || die "couldn't find new content";
-
-$parser->ParseMIMEEntityFromScalar($content);
-
-
-# be as much like the mail gateway as possible.
-&text_plain_russian_redef_sendmessage;
-my %args =        (message => $content, queue => 1, action => 'correspond');
- RT::Interface::Email::Gateway(\%args);
-my $tickets = RT::Tickets->new($RT::SystemUser);
-$tickets->OrderBy(FIELD => 'id', ORDER => 'DESC');
-$tickets->Limit(FIELD => 'id' ,OPERATOR => '>', VALUE => '0');
-my $tick = $tickets->First();
-ok ($tick->Id, "found ticket ".$tick->Id);
-
-ok ($tick->Transactions->First->Attachments->First->ContentType =~ /text\/plain/, "We recorded the content type right");
-ok ($tick->Transactions->First->Attachments->Count ==1 , "Has one attachment, presumably a text-plain");
-is ($tick->Subject, "\x{442}\x{435}\x{441}\x{442} \x{442}\x{435}\x{441}\x{442}", "Recorded the subject right");
-sub text_plain_russian_redef_sendmessage {
-    no warnings qw/redefine/;
-    eval 'sub RT::Action::SendEmail::SendMessage { 
-                my $self = shift; 
-                my $MIME = shift; 
-                return (1) unless ($self->ScripObj->ScripActionObj->Name eq "Notify AdminCcs" );
-                is ($MIME->head->mime_type , "text/plain", "The only part is text/plain ");
-                 my $subject  = $MIME->head->get("subject");
-                chomp($subject);
-                #is( $subject ,      /^=\?KOI8-R\?B\?W2V4YW1wbGUuY39tICM3XSDUxdPUINTF09Q=\?=/ , "The $subject is encoded correctly");
-               };
-                 ';
-}
-
-shift @RT::EmailInputEncodings;
-$RT::EmailOutputEncoding = 'utf-8';
-# }}}
-
-
-# {{{ test a message containing a nested RFC 822 message
-
-my $content =  `cat /opt/rt3/lib/t/data/nested-rfc-822` || die "couldn't find new content";
-ok ($content, "Loaded nested-rfc-822 to test");
-
-$parser->ParseMIMEEntityFromScalar($content);
-
-
-# be as much like the mail gateway as possible.
-&text_plain_nested_redef_sendmessage;
-my %args =        (message => $content, queue => 1, action => 'correspond');
- RT::Interface::Email::Gateway(\%args);
-my $tickets = RT::Tickets->new($RT::SystemUser);
-$tickets->OrderBy(FIELD => 'id', ORDER => 'DESC');
-$tickets->Limit(FIELD => 'id' ,OPERATOR => '>', VALUE => '0');
-my $tick = $tickets->First();
-ok ($tick->Id, "found ticket ".$tick->Id);
-is ($tick->Subject, "[Jonas Liljegren] Re: [Para] Niv\x{e5}er?");
-ok ($tick->Transactions->First->Attachments->First->ContentType =~ /multipart\/mixed/, "We recorded the content type right");
-is ($tick->Transactions->First->Attachments->Count , 5 , "Has one attachment, presumably a text-plain and a message RFC 822 and another plain");
-sub text_plain_nested_redef_sendmessage {
-    no warnings qw/redefine/;
-    eval 'sub RT::Action::SendEmail::SendMessage { 
-                my $self = shift; 
-                my $MIME = shift; 
-                return (1) unless ($self->ScripObj->ScripActionObj->Name eq "Notify AdminCcs" );
-                is ($MIME->head->mime_type , "multipart/mixed", "It is a mixed multipart");
-                 my $subject  =  $MIME->head->get("subject");
-                 $subject  = MIME::Base64::decode_base64( $subject);
-                chomp($subject);
-               # TODO, why does this test fail
-                #ok($subject =~ qr{Niv\x{e5}er}, "The subject matches the word - $subject");
-               1;
-                 }';
-}
-
-# }}}
-
-
-# {{{ test a multipart alternative containing a uuencoded mesage generated by lotus notes
-
-my $content =  `cat /opt/rt3/lib/t/data/notes-uuencoded` || die "couldn't find new content";
-
-$parser->ParseMIMEEntityFromScalar($content);
-
-
-# be as much like the mail gateway as possible.
-&notes_redef_sendmessage;
-
-my %args =        (message => $content, queue => 1, action => 'correspond');
- RT::Interface::Email::Gateway(\%args);
-my $tickets = RT::Tickets->new($RT::SystemUser);
-$tickets->OrderBy(FIELD => 'id', ORDER => 'DESC');
-$tickets->Limit(FIELD => 'id' ,OPERATOR => '>', VALUE => '0');
-my $tick = $tickets->First();
-ok ($tick->Id, "found ticket ".$tick->Id);
-
-ok ($tick->Transactions->First->Content =~ /from Lotus Notes/, "We recorded the content right");
-is ($tick->Transactions->First->Attachments->Count , 3 , "Has three attachments");
-
-sub notes_redef_sendmessage {
-    no warnings qw/redefine/;
-    eval 'sub RT::Action::SendEmail::SendMessage { }';
-}
-
-# }}}
-
-# {{{ test a multipart that crashes the file-based mime-parser works
-
-my $content =  `cat /opt/rt3/lib/t/data/crashes-file-based-parser` || die "couldn't find new content";
-
-$parser->ParseMIMEEntityFromScalar($content);
-
-
-# be as much like the mail gateway as possible.
-&crashes_redef_sendmessage;
-
-my %args =        (message => $content, queue => 1, action => 'correspond');
- RT::Interface::Email::Gateway(\%args);
-my $tickets = RT::Tickets->new($RT::SystemUser);
-$tickets->OrderBy(FIELD => 'id', ORDER => 'DESC');
-$tickets->Limit(FIELD => 'id' ,OPERATOR => '>', VALUE => '0');
-my $tick = $tickets->First();
-ok ($tick->Id, "found ticket ".$tick->Id);
-
-ok ($tick->Transactions->First->Content =~ /FYI/, "We recorded the content right");
-is ($tick->Transactions->First->Attachments->Count , 5 , "Has three attachments");
-
-sub crashes_redef_sendmessage {
-    no warnings qw/redefine/;
-    eval 'sub RT::Action::SendEmail::SendMessage { }';
-}
-
-
-
-# }}}
-
-# Don't taint the environment
-$everyone->PrincipalObj->RevokeRight(Right =>'SuperUser');
-1;
diff --git a/rt/sbin/rt-setup-database b/rt/sbin/rt-setup-database
deleted file mode 100644 (file)
index 58f882f..0000000
+++ /dev/null
@@ -1,619 +0,0 @@
-#!/usr/bin/perl -w
-# BEGIN LICENSE BLOCK
-# 
-# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com>
-# 
-# (Except where explictly superceded by other copyright notices)
-# 
-# This work is made available to you under the terms of Version 2 of
-# the GNU General Public License. A copy of that license should have
-# been provided with this software, but in any event can be snarfed
-# from www.gnu.org.
-# 
-# This work is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-# 
-# Unless otherwise specified, all modifications, corrections or
-# extensions to this work which alter its source code become the
-# property of Best Practical Solutions, LLC when submitted for
-# inclusion in the work.
-# 
-# 
-# END LICENSE BLOCK
-
-use strict;
-use vars qw($PROMPT $VERSION $Handle $Nobody $SystemUser $item);
-use vars
-  qw(@Groups @Users @ACL @Queues @ScripActions @ScripConditions @Templates @CustomFields @Scrips);
-
-use lib "/opt/rt3/lib";
-
-#This drags in  RT's config.pm
-# We do it in a begin block because RT::Handle needs to know the type to do its
-# inheritance
-use RT;
-use Carp;
-use RT::User;
-use RT::CurrentUser;
-use RT::Template;
-use RT::ScripAction;
-use RT::ACE;
-use RT::Group;
-use RT::User;
-use RT::Queue;
-use RT::ScripCondition;
-use RT::CustomField;
-use RT::Scrip;
-
-RT::LoadConfig();
-use Term::ReadKey;
-use Getopt::Long;
-
-my %args;
-
-GetOptions(
-    \%args,
-    'prompt-for-dba-password', 'force', 'debug',
-    'action=s',                'dba=s', 'dba-password=s', 'datafile=s',
-    'datadir=s'
-);
-
-$| = 1;    #unbuffer that output.
-
-require RT::Handle;
-my $Handle = RT::Handle->new($RT::DatabaseType);
-$Handle->BuildDSN;
-my $dbh;
-
-if ( $args{'prompt-for-dba-password'} ) {
-    $args{'dba-password'} = get_dba_password();
-    chomp( $args{'dba-password'} );
-}
-
-unless ( $args{'action'} ) {
-    help();
-    die;
-}
-if ( $args{'action'} eq 'init' ) {
-    $dbh = DBI->connect( get_system_dsn(), $args{'dba'}, $args{'dba-password'} )
-      || die "Failed to connect to " . get_system_dsn() . " as $args{'dba'}: $DBI::errstr";
-    print "Now creating a database for RT.\n";
-    if ($RT::DatabaseType ne 'Oracle' ||
-        $args{'dba'} ne $RT::DatabaseUser) {
-    create_db();
-    } else {
-        print "...skipped as ".$args{'dba'} ." is not " . $RT::DatabaseUser . " or we're working with Oracle.\n";
-    }
-
-    $dbh->disconnect;
-    $dbh = DBI->connect( $Handle->DSN, $args{'dba'}, $args{'dba-password'} )
-      || die $DBI::errstr;
-
-    print "Now populating database schema.\n";
-    insert_schema();
-    print "Now inserting database ACLs\n";
-    insert_acl() unless ($RT::DatabaseType eq 'Oracle');
-    print "Now inserting RT core system objects\n";
-    insert_initial_data();
-    print "Now inserting RT data\n";
-    insert_data( $RT::EtcPath . "/initialdata" );
-}
-elsif ( $args{'action'} eq 'drop' ) {
-    unless ( $dbh =
-         DBI->connect( get_system_dsn(), $args{'dba'}, $args{'dba-password'} ) )
-    {
-        warn $DBI::errstr;
-        warn "Database doesn't appear to exist. Aborting database drop.";
-        exit(0);
-    }
-    drop_db();
-}
-elsif ( $args{'action'} eq 'insert' ) {
-    insert_data( $args{'datafile'} );
-}
-elsif ($args{'action'} eq 'acl') {
-    $dbh = DBI->connect( $Handle->DSN, $args{'dba'}, $args{'dba-password'} )
-      || die "Failed to connect to " . get_system_dsn() . " as $args{'dba'}: $DBI::errstr";
-     insert_acl($args{'datadir'});
-}
-elsif ($args{'action'} eq 'schema') {
-    $dbh = DBI->connect( $Handle->DSN, $args{'dba'}, $args{'dba-password'} )
-      || die "Failed to connect to " . get_system_dsn() . " as $args{'dba'}: $DBI::errstr";
-        insert_schema($args{'datadir'});
-}
-
-else {
-    print STDERR '$0 called with an invalid --action parameter';
-    exit(-1);
-}
-
-# {{{ sub insert_schema
-sub insert_schema {
-        my $base_path = (shift || $RT::EtcPath);
-    my (@schema);
-    print "Creating database schema.\n";
-
-    if ( -f $base_path . "/schema." . $RT::DatabaseType ) {
-       no warnings 'unopened';
-
-        open( SCHEMA, "<" . $base_path . "/schema." . $RT::DatabaseType );
-        open( SCHEMA_LOCAL, "<" . $RT::LocalEtcPath . "/schema." . $RT::DatabaseType );
-
-        my $statement = "";
-        foreach my $line (<SCHEMA>, ($_ = ';;'), <SCHEMA_LOCAL>) {
-            $line =~ s/\#.*//g;
-            $line =~ s/--.*//g;
-            $statement .= $line;
-            if ( $line =~ /;(\s*)$/ ) {
-                $statement =~ s/;(\s*)$//g;
-                push @schema, $statement;
-                $statement = "";
-            }
-        }
-
-       local $SIG{__WARN__} = sub {};
-       my $is_local = 0; # local/etc/schema needs to be nonfatal. 
-        foreach my $statement (@schema) {
-           if ($statement =~ /^\s*;$/) { $is_local = 1; next; }
-            print STDERR "SQL: $statement\n" if defined $args{'debug'};
-            my $sth = $dbh->prepare($statement) or die $dbh->errstr;
-            unless ( $sth->execute or $is_local ) {
-                die "Problem with statement:\n $statement\n" . $sth->errstr;
-            }
-        }
-
-    }
-    else {
-        die "Couldn't find schema file for " . $RT::DatabaseType . "\n";
-    }
-    print "schema sucessfully inserted\n";
-
-}
-
-# }}}
-
-# {{{ sub drop_db
-sub drop_db {
-    return if ( $RT::DatabaseType eq 'SQLite' );
-    if ( $RT::DatabaseType eq 'Oracle' ) {
-        print <<END;
-
-To delete the tables and sequences of the RT Oracle database by running 
-    \@etc/drop.Oracle 
-through SQLPlus.
-
-END
-        return;
-    }  
-    unless ( $args{'force'} ) {
-        print <<END;
-
-About to drop $RT::DatabaseType database $RT::DatabaseName on $RT::DatabaseHost.
-WARNING: This will erase all data in $RT::DatabaseName.
-
-END
-        exit unless _yesno();
-
-    }
-
-    print "Dropping $RT::DatabaseType database $RT::DatabaseName.\n";
-
-    $dbh->do("Drop DATABASE $RT::DatabaseName") or warn $DBI::errstr;
-}
-
-# }}}
-
-# {{{ sub create_db
-sub create_db {
-    print "Creating $RT::DatabaseType database $RT::DatabaseName.\n";
-    if ( $RT::DatabaseType eq 'SQLite' ) {
-        return;
-    }
-    elsif ( $RT::DatabaseType eq 'Pg' ) {
-        $dbh->do("CREATE DATABASE $RT::DatabaseName WITH ENCODING='UNICODE'");
-        if ($DBI::errstr) {
-            $dbh->do("CREATE DATABASE $RT::DatabaseName") || die $DBI::errstr;
-        }
-    }
-    elsif ($RT::DatabaseType eq 'Oracle') {
-        insert_acl();
-    }
-    elsif ( $RT::DatabaseType eq 'Informix' ) {
-       $ENV{DB_LOCALE} = 'en_us.utf8';
-        $dbh->do("CREATE DATABASE $RT::DatabaseName WITH BUFFERED LOG");
-    }
-    else {
-        $dbh->do("CREATE DATABASE $RT::DatabaseName") or die $DBI::errstr;
-    }
-}
-
-# }}}
-
-sub get_dba_password {
-    print
-"In order to create a new database and grant RT access to that database,\n";
-    print "this script needs to connect to your "
-      . $RT::DatabaseType
-      . " instance on "
-      . $RT::DatabaseHost . " as "
-      . $args{'dba'} . ".\n";
-    print
-"Please specify that user's database password below. If the user has no database\n";
-    print "password, just press return.\n\n";
-    print "Password: ";
-    ReadMode('noecho');
-    my $password = ReadLine(0);
-    ReadMode('normal');
-    return ($password);
-}
-
-# {{{ sub _yesno
-sub _yesno {
-    print "Proceed [y/N]:";
-    my $x = scalar(<STDIN>);
-    $x =~ /^y/i;
-}
-
-# }}}
-
-# {{{ insert_acls
-sub insert_acl {
-
-        my $base_path = (shift || $RT::EtcPath);
-
-    if ( $RT::DatabaseType =~ /^oracle$/i ) {
-        do $base_path . "/acl.Oracle"
-          || die "Couldn't find ACLS for Oracle\n" . $@;
-    }
-    elsif ( $RT::DatabaseType =~ /^pg$/i ) {
-        do $base_path . "/acl.Pg" || die "Couldn't find ACLS for Pg\n" . $@;
-    }
-    elsif ( $RT::DatabaseType =~ /^mysql$/i ) {
-        do $base_path . "/acl.mysql"
-          || die "Couldn't find ACLS for mysql in " . $RT::EtcPath . "\n" . $@;
-    }
-    elsif ( $RT::DatabaseType =~ /^informix$/i ) {
-        do $base_path . "/acl.Informix"
-          || die "Couldn't find ACLS for Informix in " . $RT::EtcPath . "\n" . $@;
-    }
-    elsif ( $RT::DatabaseType =~ /^SQLite$/i ) {
-        return;
-    }
-    else {
-        die "Unknown RT database type";
-    }
-
-    my @acl = acl($dbh);
-    foreach my $statement (@acl) {
-        print STDERR $statement if $args{'debug'};
-        my $sth = $dbh->prepare($statement) or die $dbh->errstr;
-        unless ( $sth->execute ) {
-            die "Problem with statement:\n $statement\n" . $sth->errstr;
-        }
-    }
-}
-
-# }}}
-
-=head2 get_system_dsn
-
-Returns a dsn suitable for database creates and drops
-and user creates and drops
-
-=cut
-
-sub get_system_dsn {
-
-    my $dsn = $Handle->DSN;
-
-    #with mysql, you want to connect sans database to funge things
-    if ( $RT::DatabaseType eq 'mysql' ) {
-        $dsn =~ s/dbname=$RT::DatabaseName//;
-
-        # with postgres, you want to connect to database1
-    }
-    elsif ( $RT::DatabaseType eq 'Pg' ) {
-        $dsn =~ s/dbname=$RT::DatabaseName/dbname=template1/;
-    }
-    elsif ( $RT::DatabaseType eq 'Informix' ) {
-       # with Informix, you want to connect sans database:
-       $dsn =~ s/Informix:$RT::DatabaseName/Informix:/;
-    }
-    return $dsn;
-}
-
-sub insert_initial_data {
-
-    RT::InitLogging();
-
-    #connect to the db, for actual RT work
-    require RT::Handle;
-    $RT::Handle = RT::Handle->new();
-    $RT::Handle->Connect();
-
-    #Put together a current user object so we can create a User object
-    my $CurrentUser = new RT::CurrentUser();
-
-    print "Checking for existing system user ($CurrentUser)...";
-    my $test_user = RT::User->new($CurrentUser);
-    $test_user->Load('RT_System');
-    if ( $test_user->id ) {
-        print "found!\n\nYou appear to have a functional RT database.\n"
-          . "Exiting, so as not to clobber your existing data.\n";
-        exit(-1);
-
-    }
-    else {
-        print "not found.  This appears to be a new installation.\n";
-    }
-
-    print "Creating system user...";
-    my $RT_System = new RT::User($CurrentUser);
-
-    my ( $val, $msg ) = $RT_System->_BootstrapCreate(
-        Name     => 'RT_System',
-        RealName => 'The RT System itself',
-        Comments =>
-'Do not delete or modify this user. It is integral to RT\'s internal database structures',
-        Creator => '1' );
-
-    unless ($val) {
-        print "$msg\n";
-        exit(1);
-    }
-    print "done.\n";
-    $RT::Handle->Disconnect();
-
-}
-
-# load some sort of data into the database
-
-sub insert_data {
-    my $datafile = shift;
-
-    #Connect to the database and get RT::SystemUser and RT::Nobody loaded
-    RT::Init;
-
-    my $CurrentUser = RT::CurrentUser->new();
-    $CurrentUser->LoadByName('RT_System');
-
-    if ( $datafile eq $RT::EtcPath . "/initialdata" ) {
-
-        print "Creating Superuser  ACL...";
-
-        my $superuser_ace = RT::ACE->new($CurrentUser);
-        $superuser_ace->_BootstrapCreate(
-                             PrincipalId => ACLEquivGroupId( $CurrentUser->Id ),
-                             PrincipalType => 'Group',
-                             RightName     => 'SuperUser',
-                             ObjectType    => 'RT::System',
-                             ObjectId      => '1' );
-
-    }
-
-    # Slurp in stuff to insert from the datafile. Possible things to go in here:-
-    # @groups, @users, @acl, @queues, @ScripActions, @ScripConditions, @templates
-
-    require $datafile
-      || die "Couldn't find initial data for import\n" . $@;
-
-    if (@Groups) {
-        print "Creating groups...";
-        foreach $item (@Groups) {
-            my $new_entry = RT::Group->new($CurrentUser);
-            my ( $return, $msg ) = $new_entry->_Create(%$item);
-            print "(Error: $msg)" unless ($return);
-            print $return. ".";
-        }
-        print "done.\n";
-    }
-    if (@Users) {
-        print "Creating users...";
-        foreach $item (@Users) {
-            my $new_entry = new RT::User($CurrentUser);
-            my ( $return, $msg ) = $new_entry->Create(%$item);
-            print "(Error: $msg)" unless ($return);
-            print $return. ".";
-        }
-        print "done.\n";
-    }
-    if (@Queues) {
-        print "Creating queues...";
-        for $item (@Queues) {
-            my $new_entry = new RT::Queue($CurrentUser);
-            my ( $return, $msg ) = $new_entry->Create(%$item);
-            print "(Error: $msg)" unless ($return);
-            print $return. ".";
-        }
-        print "done.\n";
-    }
-    if (@ACL) {
-        print "Creating ACL...";
-        for my $item (@ACL) {
-
-           my ($princ, $object);
-
-           # Global rights or Queue rights?
-           if ($item->{'Queue'}) {
-                $object = RT::Queue->new($CurrentUser);
-                $object->Load( $item->{'Queue'} );
-           } else {
-               $object = $RT::System;
-           }
-
-           # Group rights or user rights?
-           if ($item->{'GroupDomain'}) {
-                $princ = RT::Group->new($CurrentUser);
-               if ($item->{'GroupDomain'} eq 'UserDefined') {
-                  $princ->LoadUserDefinedGroup( $item->{'GroupId'} );
-               } elsif ($item->{'GroupDomain'} eq 'SystemInternal') {
-                  $princ->LoadSystemInternalGroup( $item->{'GroupType'} );
-               } elsif ($item->{'GroupDomain'} eq 'RT::Queue-Role' &&
-                        $item->{'Queue'}) {
-                  $princ->LoadQueueRoleGroup( Type => $item->{'GroupType'},
-                                             Queue => $object->id);
-               } else {
-                  $princ->Load( $item->{'GroupId'} );
-               }
-           } else {
-               $princ = RT::User->new($CurrentUser);
-               $princ->Load( $item->{'UserId'} );
-           }
-
-           # Grant it
-           my ( $return, $msg ) = $princ->PrincipalObj->GrantRight(
-                                                     Right => $item->{'Right'},
-                                                     Object => $object );
-
-            if ($return) {
-                print $return. ".";
-            }
-            else {
-                print $msg . ".";
-
-            }
-
-        }
-        print "done.\n";
-    }
-    if (@CustomFields) {
-        print "Creating custom fields...";
-        for $item (@CustomFields) {
-            my $new_entry = new RT::CustomField($CurrentUser);
-            my $values    = $item->{'Values'};
-            delete $item->{'Values'};
-            my $q     = $item->{'Queue'};
-            my $q_obj = RT::Queue->new($CurrentUser);
-            $q_obj->Load($q);
-            if ( $q_obj->Id ) {
-                $item->{'Queue'} = $q_obj->Id;
-            }
-            elsif ( $q == 0 ) {
-                $item->{'Queue'} = 0;
-            }
-            else {
-                print "(Error: Could not find queue " . $q . ")\n"
-                  unless ( $q_obj->Id );
-                next;
-            }
-            my ( $return, $msg ) = $new_entry->Create(%$item);
-
-            foreach my $value ( @{$values} ) {
-                my ( $eval, $emsg ) = $new_entry->AddValue(%$value);
-                print "(Error: $emsg)\n" unless ($eval);
-            }
-
-            print "(Error: $msg)\n" unless ($return);
-            print $return. ".";
-        }
-
-        print "done.\n";
-    }
-
-    if (@ScripActions) {
-        print "Creating ScripActions...";
-
-        for $item (@ScripActions) {
-            my $new_entry = RT::ScripAction->new($CurrentUser);
-            my $return    = $new_entry->Create(%$item);
-            print $return. ".";
-        }
-
-        print "done.\n";
-    }
-
-    if (@ScripConditions) {
-        print "Creating ScripConditions...";
-
-        for $item (@ScripConditions) {
-            my $new_entry = RT::ScripCondition->new($CurrentUser);
-            my $return    = $new_entry->Create(%$item);
-            print $return. ".";
-        }
-
-        print "done.\n";
-    }
-
-    if (@Templates) {
-        print "Creating templates...";
-
-        for $item (@Templates) {
-            my $new_entry = new RT::Template($CurrentUser);
-            my $return    = $new_entry->Create(%$item);
-            print $return. ".";
-        }
-        print "done.\n";
-    }
-    if (@Scrips) {
-        print "Creating scrips...";
-
-        for $item (@Scrips) {
-            my $new_entry = new RT::Scrip($CurrentUser);
-            my ( $return, $msg ) = $new_entry->Create(%$item);
-            if ($return) {
-                print $return. ".";
-            }
-            else {
-                print "(Error: $msg)\n";
-            }
-        }
-        print "done.\n";
-    }
-    $RT::Handle->Disconnect();
-
-}
-
-=head2 ACLEquivGroupId
-
-Given a userid, return that user's acl equivalence group
-
-=cut
-
-sub ACLEquivGroupId {
-    my $username = shift;
-    my $user     = RT::User->new($RT::SystemUser);
-    $user->Load($username);
-    my $equiv_group = RT::Group->new($RT::SystemUser);
-    $equiv_group->LoadACLEquivalenceGroup($user);
-    return ( $equiv_group->Id );
-}
-
-sub help {
-
-    print <<EOF;
-
-$0: Set up RT's database
-
---action        init    Initialize the database
-                drop    Drop the database. 
-                        This will ERASE ALL YOUR DATA
-                insert  Insert data into RT's database. 
-                        By default, will use RT's installation data.
-                        To use a local or supplementary datafile, specify it
-                        using the '--datafile' option below.
-                        
-                acl     Initialize only the database ACLs
-                        To use a local or supplementary datafile, specify it
-                        using the '--datadir' option below.
-                        
-                schema  Initialize only the database schema
-                        To use a local or supplementary datafile, specify it
-                        using the '--datadir' option below.
-
---datafile /path/to/datafile
---datadir /path/to/              Used to specify a path to find the local
-                                database schema and acls to be installed.
-
-
---dba                           dba's username
---dba-password                  dba's password
---prompt-for-dba-password       Ask for the database administrator's password interactively
-
-
-EOF
-
-}
-
-1;
diff --git a/rt/sbin/rt-test-dependencies b/rt/sbin/rt-test-dependencies
deleted file mode 100644 (file)
index c1591b1..0000000
+++ /dev/null
@@ -1,278 +0,0 @@
-#!/usr/bin/perl
-# BEGIN LICENSE BLOCK
-# 
-# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com>
-# 
-# (Except where explictly superceded by other copyright notices)
-# 
-# This work is made available to you under the terms of Version 2 of
-# the GNU General Public License. A copy of that license should have
-# been provided with this software, but in any event can be snarfed
-# from www.gnu.org.
-# 
-# This work is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-# 
-# Unless otherwise specified, all modifications, corrections or
-# extensions to this work which alter its source code become the
-# property of Best Practical Solutions, LLC when submitted for
-# inclusion in the work.
-# 
-# 
-# END LICENSE BLOCK
-
-#
-# This is just a basic script that checks to make sure that all
-# the modules needed by RT before you can install it.
-#
-
-use strict;
-no warnings qw(numeric redefine);
-use Getopt::Long;
-use CPAN;
-my %args;
-my %deps;
-GetOptions(\%args,'install', 'with-MYSQL', 'with-POSTGRESQL|with-pg|with-pgsql', 'with-SQLITE', 'with-ORACLE', 'with-FASTCGI', 'with-SPEEDYCGI', 'with-MODPERL1', 'with-MODPERL2' ,'with-DEV');
-
-if (!keys %args) {
-    help();
-    exit(0);
-}
-if ($args{'with-MODPERL2'}) {
-    warn_modperl2();
-}
-
-$args{'with-MASON'} = 1;
-$args{'with-CORE'} = 1;
-$args{'with-DEV'} =1; 
-$args{'with-CLI'} =1; 
-$args{'with-MAILGATE'} =1; 
-if ($] < 5.007) {
-$args{'with-I18N-COMPAT'} = 1;
-}
-
-sub warn_modperl2 {
-    print <<'.';
-        NOTE: mod_perl 2.0 isn't quite ready for prime_time just yet;
-        Best Practical Solutions strongly recommends that sites use
-        Apache 1.3 or FastCGI. If you MUST use mod_perl 2.0 (or 1.99),
-        please read the mailing list archives before asking for help.
-.
-    sleep 5;
-}
-
-
-sub help {
-
-    print <<'.';
-
-By default, testdeps determine whether you have 
-installed all the perl modules RT needs to run.
-
-       --install               Install missing modules
-
-The following switches will tell the tool to check for specific dependencies
-
-       --with-mysql            Database interface for MySQL
-       --with-postgresql       Database interface for PostgreSQL 
-       --with-sqlite           Database interface and driver for SQLite (unsupported)
-       --with-oracle           Database interface for oracle (unsupported)
-
-       --with-fastcgi          Libraries needed to support the fastcgi handler
-       --with-speedycgi        Libraries needed to support the speedycgi handler
-       --with-modperl1         Libraries needed to support the modperl 1 handler
-       --with-modperl2         Libraries needed to support the modperl 2 handler
-
-       --with-dev              Tools needed for RT development
-.
-}
-
-
-sub _ {
-    map { /(\S+)\s*(\S*)/; $1 => ($2 ? $2 :'') } split ( /\n/, $_[0] );
-}
-
-$deps{'CORE'} = [ _( << '.') ];
-Digest::MD5 2.27
-DBI 1.37
-Test::Inline
-Class::ReturnValue 0.40
-DBIx::SearchBuilder 0.97
-Text::Template
-File::Spec 0.8
-HTML::Entities 
-Net::Domain
-Log::Dispatch 2.0
-Locale::Maketext 1.06
-Locale::Maketext::Lexicon 0.32
-Locale::Maketext::Fuzzy
-MIME::Entity 5.108
-Mail::Mailer 1.57
-Net::SMTP
-Text::Wrapper 
-Time::ParseDate
-File::Temp
-Term::ReadKey
-Text::Autoformat
-Text::Quoted 1.3
-Scalar::Util
-.
-
-$deps{'MASON'} = [ _( << '.') ];
-Params::Validate 0.02
-Cache::Cache
-Exception::Class
-HTML::Mason 1.16
-MLDBM
-Errno
-FreezeThaw
-Digest::MD5 2.27
-CGI::Cookie 1.20
-Storable 2.08
-Apache::Session 1.53
-.
-
-$deps{'MAILGATE'} = [ _( << '.') ];
-HTML::TreeBuilder
-HTML::FormatText
-Getopt::Long
-LWP::UserAgent
-.
-
-$deps{'CLI'} = [ _( << '.') ];
-Getopt::Long 2.24
-.
-
-$deps{'DEV'} = [ _( << '.') ];
-Regexp::Common
-Time::HiRes 
-Test::Inline 
-WWW::Mechanize
-.
-
-$deps{'FASTCGI'} = [ _( << '.') ];
-CGI 2.92
-FCGI
-CGI::Fast 
-.
-
-$deps{'SPEEDYCGI'} = [ _( << '.') ];
-CGI 2.92
-CGI::SpeedyCGI
-.
-
-
-$deps{'MODPERL1'} = [ _( << '.') ];
-CGI 2.92
-Apache::Request
-Apache::DBI 0.92
-.
-
-$deps{'MODPERL2'} = [ _( << '.') ];
-CGI 2.92
-Apache::DBI
-.
-
-$deps{'I18N-COMPAT'} = [ _( << '.') ];
-Text::Iconv
-Encode::compat 0.04
-.
-
-$deps{'MYSQL'} = [ _( << '.') ];
-DBD::mysql 2.1018
-.
-$deps{'ORACLE'} = [ _( << '.') ];
-DBD::Oracle
-.
-$deps{'POSTGRESQL'} = [ _( << '.') ];
-DBD::Pg
-.
-
-print "perl:\n";
-print "\t5.8.0";
-eval {require 5.008};
-if ($@) {
-print "...missing.\n";
-        eval {require 5.006001};
-        if ($@) {
-            print " RT is known to be non-functional on versions of perl older than 5.6.1. Please upgrade to 5.8.0 or newer";
-            die;
-        } else {
-            print " RT is not supported on perl 5.6.1\n";
-        }
-} else {
-        print "...found\n";
-
-}
-
-
-foreach my $type (keys %args)  {
-next unless ($type =~ /^with-(.*?)$/);
-my $type = $1;
-print "$type dependencies:\n";
-       my @deps = (@{$deps{$type}});
-       while (@deps) {
-               my $module = shift @deps;
-               my $version = shift @deps;
-my $ret;
-       $ret =test_dep($module, $version);      
-
-if ($args{'install'} && !$ret) {
-       resolve_dep($module);           
-}
-}
-}
-sub test_dep {
-       my $module = shift;
-       my $version = shift;
-
-       print "\t$module $version";
-       eval "use $module $version" ;
-       if ($@) {
-               my $error = $@;
-               $error =~ s/\n(.*)$//s;
-               print "...MISSING\n";
-                       print "\t\t$error\n" if $error =~ /this is only/;
-
-               return undef;
-       } else {
-               print "...found\n";
-return 1;
-       }
-}
-
-sub resolve_dep {
-       my $module = shift;
-       use CPAN;
-       CPAN::Shell->install($module);          
-       
-}
-
-
-sub print_help {
-    print << "EOF";
-
-$0 FLAG DBTYPE
-
-
-$0 is a tool for RT that will tell you if you've got all
-the modules RT depends on properly installed.
-
-Flags: (only one flag is valid for a given run)
-
--quiet will check to see if we've got everything we need
-       and will exit with a return code of (1) if we don't.
-
--warn will tell you what isn't properly installed
-
--fix will use CPANPLUS.pm or CPAN.pm to magically make everything better
-
-DBTYPE is one of:
-       oracle, pg, mysql
-
-EOF
-
-    exit(0);
-}