v1.9
2
AUTHORS
@ -13,4 +13,4 @@ These are distributed under licenses compatible with the GPLv3. Please
|
|||||||
refer to their websites for further details.
|
refer to their websites for further details.
|
||||||
|
|
||||||
This product includes software developed by the OpenSSL Project
|
This product includes software developed by the OpenSSL Project
|
||||||
for use in the OpenSSL Toolkit. (http://www.openssl.org/)
|
for use in the OpenSSL Toolkit (http://www.openssl.org/).
|
||||||
|
25
ChangeLog
@ -1,6 +1,31 @@
|
|||||||
E-MailRelay Change Log
|
E-MailRelay Change Log
|
||||||
======================
|
======================
|
||||||
|
|
||||||
|
1.8.2 -> 1.9
|
||||||
|
------------
|
||||||
|
* Added negotiated TLS/SSL for POP (ie. "STLS").
|
||||||
|
* The first two fields in the secrets files are reordered (with backwards compatibility).
|
||||||
|
* Added Linux-PAM authentication ("configure --with-pam" and then "--server-auth=/pam").
|
||||||
|
* Optional protocol-specific "--interface" qualifiers, eg. "--interface smtp=127.0.0.1,pop=192.168.1.1".
|
||||||
|
* Outgoing client connection bound with the first "--interface" or "--interface client=..." address.
|
||||||
|
* Support for SMTP-over-TLS on outgoing client connection ("--client-tls-connection") (cf. "STARTTLS")
|
||||||
|
* Support for SOCKS 4a on outgoing client connection, eg. "--forward-to example.com:25@127.0.0.1:9050".
|
||||||
|
* TLS configuration options ("--tls-config=...") for SSLv2/3 fallback etc.
|
||||||
|
* No "Received" line added if "--anonymous" and an empty "--domain" name.
|
||||||
|
* Error text for "all recipients rejected" is now more accurately "one or more recipients rejected".
|
||||||
|
* New behaviour for "--client-filter" exit values of 100 and over.
|
||||||
|
* New commands on the admin interface, "failures" and "unfail-all".
|
||||||
|
* Shorter descriptions in the usage help unless "--verbose".
|
||||||
|
* New default spool directory location on windows, now under "system32".
|
||||||
|
* Windows project files for MSVC 2012 included.
|
||||||
|
* Removed support for Windows NT and Windows 9x.
|
||||||
|
* Better support for Windows Vista and Windows 7.
|
||||||
|
* Removed Windows "--icon" option.
|
||||||
|
* Removed "--enable-fhs" option for "configure" (see INSTALL document for equivalent usage).
|
||||||
|
* Added "--log-file" option to redirect stderr.
|
||||||
|
* Added Windows "--peer-lookup" option.
|
||||||
|
* Fix for MD5 code in 64-bit builds.
|
||||||
|
|
||||||
1.8.1 -> 1.8.2
|
1.8.1 -> 1.8.2
|
||||||
--------------
|
--------------
|
||||||
* Fix namespaces for gcc 3.4.
|
* Fix namespaces for gcc 3.4.
|
||||||
|
49
INSTALL
@ -1,34 +1,39 @@
|
|||||||
Introduction
|
Introduction
|
||||||
============
|
============
|
||||||
|
|
||||||
With the exception of this introduction section this document contains generic
|
This document is the standard one for doing a GNU-style build and
|
||||||
installation instructions for doing a GNU-style
|
install, except for this introduction, which is specific to E-MailRelay.
|
||||||
"./configure; make; sudo make install" installation from source under Linux,
|
|
||||||
FreeBSD etc. Windows specific installation instructions are in a separate
|
|
||||||
document, "doc/windows.txt".
|
|
||||||
|
|
||||||
The E-MailRelay "configure" script provides a few extra confiruation switches,
|
As usual, you should use "./configure; make; sudo make install" to
|
||||||
which are shown in the output of "./configure --help". One of these is
|
install from source under most operating systems (as described below),
|
||||||
"--enable-fhs", which sets the default directories to comply with the File
|
but for Windows you should refer to a separate document,
|
||||||
Hierarchy Standard.
|
"doc/windows.txt".
|
||||||
|
|
||||||
There are also a set of variables which can be defined on the "configure"
|
The E-MailRelay "configure" script provides some extra configuration
|
||||||
command line for controlling all the installation directories in more detail,
|
options, as shown in the output of "./configure --help". Some of these
|
||||||
augmenting the standard command-line switches like "--sbindir" and
|
are used to control all the installation directories in addition to
|
||||||
"--libexecdir". For more information refer to the E-MailRelay reference document
|
the more standard ones like "--sbindir" and "--libexecdir".
|
||||||
under "Files and directories".
|
|
||||||
|
|
||||||
If compiling with something other than "gcc" then check for any
|
For example, this configure command will result in installation
|
||||||
|
directories that are close to the Linux File Hieriarchy Standard (FHS):
|
||||||
|
|
||||||
|
./configure --prefix=/usr --localstatedir=/var --libexecdir=/usr/lib --sysconfdir=/etc e_initdir=/etc/init.d
|
||||||
|
|
||||||
|
For more information refer to the E-MailRelay reference document under
|
||||||
|
the "Files and directories" heading.
|
||||||
|
|
||||||
|
If compiling with something other than "gcc" then check for any
|
||||||
compiler-specific help in the relevant "lib/<compiler>" directory.
|
compiler-specific help in the relevant "lib/<compiler>" directory.
|
||||||
|
|
||||||
If you want to install a package rather than running "make install" you could
|
If you want to install via a package rather than installing with
|
||||||
try building an RPM pacakge with "rpmbuild" using the RPM spec file provided in
|
"make install" you could try building an RPM pacakge with "make rpm"
|
||||||
the distribution, and if necessary then making a ".deb" package from that using
|
or a Debian package with "make deb", although there are lots of moving
|
||||||
"alien".
|
parts here, so it may not be easy to get working.
|
||||||
|
|
||||||
|
You may also find the E-MailRelay configuration GUI program
|
||||||
|
"emailrelay-gui" useful to help with with the initial configuration,
|
||||||
|
if it is available.
|
||||||
|
|
||||||
Finally, you could try running the configuration GUI program "emailrelay-gui"
|
|
||||||
(if available) after doing the installation to help with the initial
|
|
||||||
configuration.
|
|
||||||
|
|
||||||
Basic Installation
|
Basic Installation
|
||||||
==================
|
==================
|
||||||
|
40
Makefile.am
@ -1,9 +1,9 @@
|
|||||||
#
|
#
|
||||||
## Copyright (C) 2001-2008 Graeme Walker <graeme_walker@users.sourceforge.net>
|
## Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>
|
||||||
##
|
##
|
||||||
## This program is free software: you can redistribute it and/or modify
|
## This program is free software: you can redistribute it and/or modify
|
||||||
## it under the terms of the GNU General Public License as published by
|
## it under the terms of the GNU General Public License as published by
|
||||||
## the Free Software Foundation, either version 3 of the License, or
|
## the Free Software Foundation, either version 3 of the License, or
|
||||||
## (at your option) any later version.
|
## (at your option) any later version.
|
||||||
##
|
##
|
||||||
## This program is distributed in the hope that it will be useful,
|
## This program is distributed in the hope that it will be useful,
|
||||||
@ -14,14 +14,26 @@
|
|||||||
## You should have received a copy of the GNU General Public License
|
## You should have received a copy of the GNU General Public License
|
||||||
## along with this program. If not, see <http://www.gnu.org/licenses/>.
|
## along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
|
#
|
||||||
|
# Top-level makefile
|
||||||
|
#
|
||||||
|
# Additional pseudo-targets for packaging:
|
||||||
|
# * rpm - builds an rpm package using rpmbuild
|
||||||
|
# * deb - converts the rpm to a deb package using alien.
|
||||||
|
#
|
||||||
|
# When running "make distcheck" consider doing this to avoid
|
||||||
|
# a lengthy testing stage:
|
||||||
|
# $ make distcheck DISTCHECK_CONFIGURE_FLAGS=--disable-testing
|
||||||
|
#
|
||||||
|
|
||||||
EXTRA_DIST = \
|
EXTRA_DIST = \
|
||||||
emailrelay.spec \
|
emailrelay.spec \
|
||||||
ChangeLog \
|
ChangeLog \
|
||||||
README.windows \
|
README.windows \
|
||||||
README.mips \
|
README.embedded \
|
||||||
README.mac \
|
README.mac \
|
||||||
LICENSE \
|
LICENSE \
|
||||||
|
VERSION \
|
||||||
bootstrap \
|
bootstrap \
|
||||||
autogen.sh \
|
autogen.sh \
|
||||||
emailrelay-gui.xcodeproj/project.pbxproj \
|
emailrelay-gui.xcodeproj/project.pbxproj \
|
||||||
@ -29,15 +41,16 @@ EXTRA_DIST = \
|
|||||||
|
|
||||||
SUBDIRS = bin src lib etc doc debian test extra
|
SUBDIRS = bin src lib etc doc debian test extra
|
||||||
|
|
||||||
e_doc_DATA = NEWS README ChangeLog
|
e_doc_DATA = COPYING AUTHORS INSTALL NEWS README README.windows README.mac README.embedded ChangeLog
|
||||||
|
|
||||||
uninstall-local:
|
uninstall-local:
|
||||||
-rmdir $(DESTDIR)$(e_docdir) 2>/dev/null
|
-for try in 1 2 3 4 ; do echo "$(DESTDIR)$(e_pamdir)" "$(DESTDIR)$(e_initdir)" "$(DESTDIR)$(e_sysconfdir)" "$(DESTDIR)$(e_examplesdir)" "$(DESTDIR)$(e_libexecdir)" "$(DESTDIR)$(e_spooldir)" "$(DESTDIR)$(e_docdir)" "$(DESTDIR)$(pkgdatadir)" | tr ' ' '\n' | grep -i "mailrelay" | while read d ; do rmdir "$$d" 2>/dev/null ; done ; done
|
||||||
-for d in "$(DESTDIR)$(e_sysconfdir)" "$(DESTDIR)$(e_libexecdir)" "$(DESTDIR)$(e_examplesdir)" "$(DESTDIR)$(e_spooldir)" "$(DESTDIR)$(e_initdir)" "$(DESTDIR)$(e_docdir)/man/man1" "$(DESTDIR)$(e_docdir)/man" "$(DESTDIR)$(e_docdir)" ; do rmdir "$$d" 2>/dev/null ; done
|
|
||||||
|
|
||||||
RPM_ROOT=/usr/src/rpm
|
RPM_ROOT ?= ${HOME}/rpmbuild
|
||||||
RPM=$(RPM_ROOT)/RPMS/i386/emailrelay-$(VERSION)-1.i386.rpm
|
#RPM_ARCH ?= $(shell arch)
|
||||||
DEB=emailrelay_$(VERSION)-1_i386.deb
|
RPM_ARCH ?= x86_64
|
||||||
|
RPM=$(RPM_ROOT)/RPMS/$(RPM_ARCH)/emailrelay-$(VERSION)-1.$(RPM_ARCH).rpm
|
||||||
|
DEB=emailrelay_$(VERSION)-1_$(RPM_ARCH).deb
|
||||||
TAR=emailrelay-$(VERSION).tar.gz
|
TAR=emailrelay-$(VERSION).tar.gz
|
||||||
|
|
||||||
.PHONY: rpm
|
.PHONY: rpm
|
||||||
@ -45,8 +58,9 @@ rpm: $(RPM)
|
|||||||
|
|
||||||
$(RPM): dist
|
$(RPM): dist
|
||||||
-rm -rf $(RPM_ROOT)/BUILD/emailrelay-$(VERSION)
|
-rm -rf $(RPM_ROOT)/BUILD/emailrelay-$(VERSION)
|
||||||
|
-mkdir -p $(RPM_ROOT)/BUILD $(RPM_ROOT)/SOURCES $(RPM_ROOT)/SPECS 2>/dev/null
|
||||||
cp $(TAR) $(RPM_ROOT)/SOURCES/emailrelay-$(VERSION)-src.tar.gz
|
cp $(TAR) $(RPM_ROOT)/SOURCES/emailrelay-$(VERSION)-src.tar.gz
|
||||||
cp emailrelay.spec $(RPM_ROOT)/SPECS
|
cp $(top_srcdir)/emailrelay.spec $(RPM_ROOT)/SPECS/
|
||||||
chown root:root $(RPM_ROOT)/SPECS/emailrelay.spec
|
chown root:root $(RPM_ROOT)/SPECS/emailrelay.spec
|
||||||
rpmbuild -ba $(RPM_ROOT)/SPECS/emailrelay.spec
|
rpmbuild -ba $(RPM_ROOT)/SPECS/emailrelay.spec
|
||||||
|
|
||||||
@ -54,12 +68,12 @@ $(RPM): dist
|
|||||||
deb: $(DEB)
|
deb: $(DEB)
|
||||||
|
|
||||||
$(DEB): $(RPM)
|
$(DEB): $(RPM)
|
||||||
-mv emailrelay-$(VERSION) emailrelay-$(VERSION).old.$$
|
-mv emailrelay-$(VERSION) emailrelay-$(VERSION).old.$$$$
|
||||||
alien --to-deb --generate --single --keep-version $(RPM)
|
alien --to-deb --generate --single --keep-version $(RPM)
|
||||||
sed -i 's/^Section:.*/Section: mail/' emailrelay-$(VERSION)/debian/control
|
sed -i 's/^Section:.*/Section: mail/' emailrelay-$(VERSION)/debian/control
|
||||||
sed -i 's/^Maintainer:.*/Maintainer: Graeme Walker <graeme_walker@users.sourceforge.net>/' emailrelay-$(VERSION)/debian/control
|
sed -i 's/^Maintainer:.*/Maintainer: Graeme Walker <graeme_walker@users.sourceforge.net>/' emailrelay-$(VERSION)/debian/control
|
||||||
chmod +x debian/pre* debian/post*
|
chmod +x $(top_srcdir)/debian/pre* $(top_srcdir)/debian/post*
|
||||||
cp debian/* emailrelay-$(VERSION)/debian/
|
cp $(top_srcdir)/debian/* emailrelay-$(VERSION)/debian/
|
||||||
sed -i 's:dh_installchangelogs:dh_installchangelogs ; cp etc/init.d/emailrelay debian/emailrelay.init ; dh_installinit:' emailrelay-$(VERSION)/debian/rules
|
sed -i 's:dh_installchangelogs:dh_installchangelogs ; cp etc/init.d/emailrelay debian/emailrelay.init ; dh_installinit:' emailrelay-$(VERSION)/debian/rules
|
||||||
sed -i 's:dh_installdeb:dh_installdeb ; echo /etc/emailrelay.conf > debian/emailrelay/DEBIAN/conffiles:' emailrelay-$(VERSION)/debian/rules
|
sed -i 's:dh_installdeb:dh_installdeb ; echo /etc/emailrelay.conf > debian/emailrelay/DEBIAN/conffiles:' emailrelay-$(VERSION)/debian/rules
|
||||||
cd emailrelay-$(VERSION) && debian/rules binary
|
cd emailrelay-$(VERSION) && debian/rules binary
|
||||||
|
346
Makefile.in
@ -1,8 +1,9 @@
|
|||||||
# Makefile.in generated by automake 1.10.1 from Makefile.am.
|
# Makefile.in generated by automake 1.11.3 from Makefile.am.
|
||||||
# @configure_input@
|
# @configure_input@
|
||||||
|
|
||||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||||
# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
|
# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
|
||||||
|
# Foundation, Inc.
|
||||||
# This Makefile.in is free software; the Free Software Foundation
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
@ -16,11 +17,23 @@
|
|||||||
|
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
|
#
|
||||||
|
# Top-level makefile
|
||||||
|
#
|
||||||
|
# Additional pseudo-targets for packaging:
|
||||||
|
# * rpm - builds an rpm package using rpmbuild
|
||||||
|
# * deb - converts the rpm to a deb package using alien.
|
||||||
|
#
|
||||||
|
# When running "make distcheck" consider doing this to avoid
|
||||||
|
# a lengthy testing stage:
|
||||||
|
# $ make distcheck DISTCHECK_CONFIGURE_FLAGS=--disable-testing
|
||||||
|
#
|
||||||
|
|
||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
pkgdatadir = $(datadir)/@PACKAGE@
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
pkglibdir = $(libdir)/@PACKAGE@
|
|
||||||
pkgincludedir = $(includedir)/@PACKAGE@
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
|
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||||
install_sh_DATA = $(install_sh) -c -m 644
|
install_sh_DATA = $(install_sh) -c -m 644
|
||||||
install_sh_PROGRAM = $(install_sh) -c
|
install_sh_PROGRAM = $(install_sh) -c
|
||||||
@ -48,6 +61,7 @@ am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
|
|||||||
mkinstalldirs = $(install_sh) -d
|
mkinstalldirs = $(install_sh) -d
|
||||||
CONFIG_HEADER = config.h
|
CONFIG_HEADER = config.h
|
||||||
CONFIG_CLEAN_FILES =
|
CONFIG_CLEAN_FILES =
|
||||||
|
CONFIG_CLEAN_VPATH_FILES =
|
||||||
SOURCES =
|
SOURCES =
|
||||||
DIST_SOURCES =
|
DIST_SOURCES =
|
||||||
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
|
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
|
||||||
@ -62,12 +76,35 @@ am__vpath_adj = case $$p in \
|
|||||||
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
||||||
*) f=$$p;; \
|
*) f=$$p;; \
|
||||||
esac;
|
esac;
|
||||||
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
|
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
|
||||||
|
am__install_max = 40
|
||||||
|
am__nobase_strip_setup = \
|
||||||
|
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
|
||||||
|
am__nobase_strip = \
|
||||||
|
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
|
||||||
|
am__nobase_list = $(am__nobase_strip_setup); \
|
||||||
|
for p in $$list; do echo "$$p $$p"; done | \
|
||||||
|
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
|
||||||
|
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
|
||||||
|
if (++n[$$2] == $(am__install_max)) \
|
||||||
|
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
|
||||||
|
END { for (dir in files) print dir, files[dir] }'
|
||||||
|
am__base_list = \
|
||||||
|
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
|
||||||
|
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
|
||||||
|
am__uninstall_files_from_dir = { \
|
||||||
|
test -z "$$files" \
|
||||||
|
|| { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|
||||||
|
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
|
||||||
|
$(am__cd) "$$dir" && rm -f $$files; }; \
|
||||||
|
}
|
||||||
am__installdirs = "$(DESTDIR)$(e_docdir)"
|
am__installdirs = "$(DESTDIR)$(e_docdir)"
|
||||||
e_docDATA_INSTALL = $(INSTALL_DATA)
|
|
||||||
DATA = $(e_doc_DATA)
|
DATA = $(e_doc_DATA)
|
||||||
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
|
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
|
||||||
distclean-recursive maintainer-clean-recursive
|
distclean-recursive maintainer-clean-recursive
|
||||||
|
AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
|
||||||
|
$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
|
||||||
|
distdir dist dist-all distcheck
|
||||||
ETAGS = etags
|
ETAGS = etags
|
||||||
CTAGS = ctags
|
CTAGS = ctags
|
||||||
DIST_SUBDIRS = $(SUBDIRS)
|
DIST_SUBDIRS = $(SUBDIRS)
|
||||||
@ -75,12 +112,41 @@ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
|||||||
distdir = $(PACKAGE)-$(VERSION)
|
distdir = $(PACKAGE)-$(VERSION)
|
||||||
top_distdir = $(distdir)
|
top_distdir = $(distdir)
|
||||||
am__remove_distdir = \
|
am__remove_distdir = \
|
||||||
{ test ! -d $(distdir) \
|
if test -d "$(distdir)"; then \
|
||||||
|| { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
|
find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
|
||||||
&& rm -fr $(distdir); }; }
|
&& rm -rf "$(distdir)" \
|
||||||
|
|| { sleep 5 && rm -rf "$(distdir)"; }; \
|
||||||
|
else :; fi
|
||||||
|
am__relativize = \
|
||||||
|
dir0=`pwd`; \
|
||||||
|
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
|
||||||
|
sed_rest='s,^[^/]*/*,,'; \
|
||||||
|
sed_last='s,^.*/\([^/]*\)$$,\1,'; \
|
||||||
|
sed_butlast='s,/*[^/]*$$,,'; \
|
||||||
|
while test -n "$$dir1"; do \
|
||||||
|
first=`echo "$$dir1" | sed -e "$$sed_first"`; \
|
||||||
|
if test "$$first" != "."; then \
|
||||||
|
if test "$$first" = ".."; then \
|
||||||
|
dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
|
||||||
|
dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
|
||||||
|
else \
|
||||||
|
first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
|
||||||
|
if test "$$first2" = "$$first"; then \
|
||||||
|
dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
|
||||||
|
else \
|
||||||
|
dir2="../$$dir2"; \
|
||||||
|
fi; \
|
||||||
|
dir0="$$dir0"/"$$first"; \
|
||||||
|
fi; \
|
||||||
|
fi; \
|
||||||
|
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
|
||||||
|
done; \
|
||||||
|
reldir="$$dir2"
|
||||||
DIST_ARCHIVES = $(distdir).tar.gz
|
DIST_ARCHIVES = $(distdir).tar.gz
|
||||||
GZIP_ENV = --best
|
GZIP_ENV = --best
|
||||||
distuninstallcheck_listfiles = find . -type f -print
|
distuninstallcheck_listfiles = find . -type f -print
|
||||||
|
am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
|
||||||
|
| sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
|
||||||
distcleancheck_listfiles = find . -type f -print
|
distcleancheck_listfiles = find . -type f -print
|
||||||
ACLOCAL = @ACLOCAL@
|
ACLOCAL = @ACLOCAL@
|
||||||
AMTAR = @AMTAR@
|
AMTAR = @AMTAR@
|
||||||
@ -106,9 +172,9 @@ ECHO_N = @ECHO_N@
|
|||||||
ECHO_T = @ECHO_T@
|
ECHO_T = @ECHO_T@
|
||||||
EGREP = @EGREP@
|
EGREP = @EGREP@
|
||||||
EXEEXT = @EXEEXT@
|
EXEEXT = @EXEEXT@
|
||||||
FRAGMENTS_LIST = @FRAGMENTS_LIST@
|
|
||||||
GREP = @GREP@
|
GREP = @GREP@
|
||||||
GZIP = @GZIP@
|
GZIP = @GZIP@
|
||||||
|
G_CAPABILITIES = @G_CAPABILITIES@
|
||||||
HAVE_DOXYGEN = @HAVE_DOXYGEN@
|
HAVE_DOXYGEN = @HAVE_DOXYGEN@
|
||||||
HAVE_MAN2HTML = @HAVE_MAN2HTML@
|
HAVE_MAN2HTML = @HAVE_MAN2HTML@
|
||||||
INSTALL = @INSTALL@
|
INSTALL = @INSTALL@
|
||||||
@ -131,9 +197,14 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
|||||||
PACKAGE_NAME = @PACKAGE_NAME@
|
PACKAGE_NAME = @PACKAGE_NAME@
|
||||||
PACKAGE_STRING = @PACKAGE_STRING@
|
PACKAGE_STRING = @PACKAGE_STRING@
|
||||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||||
|
PACKAGE_URL = @PACKAGE_URL@
|
||||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
|
PAM_INCLUDE = @PAM_INCLUDE@
|
||||||
|
PAM_LIBS = @PAM_LIBS@
|
||||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
PKG_CONFIG = @PKG_CONFIG@
|
PKG_CONFIG = @PKG_CONFIG@
|
||||||
|
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
|
||||||
|
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
|
||||||
QT_CFLAGS = @QT_CFLAGS@
|
QT_CFLAGS = @QT_CFLAGS@
|
||||||
QT_LIBS = @QT_LIBS@
|
QT_LIBS = @QT_LIBS@
|
||||||
RANLIB = @RANLIB@
|
RANLIB = @RANLIB@
|
||||||
@ -144,6 +215,7 @@ STATIC_END = @STATIC_END@
|
|||||||
STATIC_START = @STATIC_START@
|
STATIC_START = @STATIC_START@
|
||||||
STRIP = @STRIP@
|
STRIP = @STRIP@
|
||||||
VERSION = @VERSION@
|
VERSION = @VERSION@
|
||||||
|
ZLIB_LIBS = @ZLIB_LIBS@
|
||||||
abs_builddir = @abs_builddir@
|
abs_builddir = @abs_builddir@
|
||||||
abs_srcdir = @abs_srcdir@
|
abs_srcdir = @abs_srcdir@
|
||||||
abs_top_builddir = @abs_top_builddir@
|
abs_top_builddir = @abs_top_builddir@
|
||||||
@ -164,8 +236,10 @@ docdir = @docdir@
|
|||||||
dvidir = @dvidir@
|
dvidir = @dvidir@
|
||||||
e_docdir = @e_docdir@
|
e_docdir = @e_docdir@
|
||||||
e_examplesdir = @e_examplesdir@
|
e_examplesdir = @e_examplesdir@
|
||||||
|
e_icondir = @e_icondir@
|
||||||
e_initdir = @e_initdir@
|
e_initdir = @e_initdir@
|
||||||
e_libexecdir = @e_libexecdir@
|
e_libexecdir = @e_libexecdir@
|
||||||
|
e_pamdir = @e_pamdir@
|
||||||
e_qtmoc = @e_qtmoc@
|
e_qtmoc = @e_qtmoc@
|
||||||
e_spooldir = @e_spooldir@
|
e_spooldir = @e_spooldir@
|
||||||
e_sysconfdir = @e_sysconfdir@
|
e_sysconfdir = @e_sysconfdir@
|
||||||
@ -191,45 +265,46 @@ sharedstatedir = @sharedstatedir@
|
|||||||
srcdir = @srcdir@
|
srcdir = @srcdir@
|
||||||
sysconfdir = @sysconfdir@
|
sysconfdir = @sysconfdir@
|
||||||
target_alias = @target_alias@
|
target_alias = @target_alias@
|
||||||
|
top_build_prefix = @top_build_prefix@
|
||||||
top_builddir = @top_builddir@
|
top_builddir = @top_builddir@
|
||||||
top_srcdir = @top_srcdir@
|
top_srcdir = @top_srcdir@
|
||||||
EXTRA_DIST = \
|
EXTRA_DIST = \
|
||||||
emailrelay.spec \
|
emailrelay.spec \
|
||||||
ChangeLog \
|
ChangeLog \
|
||||||
README.windows \
|
README.windows \
|
||||||
README.mips \
|
README.embedded \
|
||||||
README.mac \
|
README.mac \
|
||||||
LICENSE \
|
LICENSE \
|
||||||
|
VERSION \
|
||||||
bootstrap \
|
bootstrap \
|
||||||
autogen.sh \
|
autogen.sh \
|
||||||
emailrelay-gui.xcodeproj/project.pbxproj \
|
emailrelay-gui.xcodeproj/project.pbxproj \
|
||||||
emailrelay.xcodeproj/project.pbxproj
|
emailrelay.xcodeproj/project.pbxproj
|
||||||
|
|
||||||
SUBDIRS = bin src lib etc doc debian test extra
|
SUBDIRS = bin src lib etc doc debian test extra
|
||||||
e_doc_DATA = NEWS README ChangeLog
|
e_doc_DATA = COPYING AUTHORS INSTALL NEWS README README.windows README.mac README.embedded ChangeLog
|
||||||
RPM_ROOT = /usr/src/rpm
|
RPM = $(RPM_ROOT)/RPMS/$(RPM_ARCH)/emailrelay-$(VERSION)-1.$(RPM_ARCH).rpm
|
||||||
RPM = $(RPM_ROOT)/RPMS/i386/emailrelay-$(VERSION)-1.i386.rpm
|
DEB = emailrelay_$(VERSION)-1_$(RPM_ARCH).deb
|
||||||
DEB = emailrelay_$(VERSION)-1_i386.deb
|
|
||||||
TAR = emailrelay-$(VERSION).tar.gz
|
TAR = emailrelay-$(VERSION).tar.gz
|
||||||
all: config.h
|
all: config.h
|
||||||
$(MAKE) $(AM_MAKEFLAGS) all-recursive
|
$(MAKE) $(AM_MAKEFLAGS) all-recursive
|
||||||
|
|
||||||
.SUFFIXES:
|
.SUFFIXES:
|
||||||
am--refresh:
|
am--refresh: Makefile
|
||||||
@:
|
@:
|
||||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||||
@for dep in $?; do \
|
@for dep in $?; do \
|
||||||
case '$(am__configure_deps)' in \
|
case '$(am__configure_deps)' in \
|
||||||
*$$dep*) \
|
*$$dep*) \
|
||||||
echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \
|
echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
|
||||||
cd $(srcdir) && $(AUTOMAKE) --gnu \
|
$(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
|
||||||
&& exit 0; \
|
&& exit 0; \
|
||||||
exit 1;; \
|
exit 1;; \
|
||||||
esac; \
|
esac; \
|
||||||
done; \
|
done; \
|
||||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
|
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
|
||||||
cd $(top_srcdir) && \
|
$(am__cd) $(top_srcdir) && \
|
||||||
$(AUTOMAKE) --gnu Makefile
|
$(AUTOMAKE) --gnu Makefile
|
||||||
.PRECIOUS: Makefile
|
.PRECIOUS: Makefile
|
||||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||||
@case '$?' in \
|
@case '$?' in \
|
||||||
@ -245,21 +320,20 @@ $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENC
|
|||||||
$(SHELL) ./config.status --recheck
|
$(SHELL) ./config.status --recheck
|
||||||
|
|
||||||
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||||
cd $(srcdir) && $(AUTOCONF)
|
$(am__cd) $(srcdir) && $(AUTOCONF)
|
||||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||||
cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
|
$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
|
||||||
|
$(am__aclocal_m4_deps):
|
||||||
|
|
||||||
config.h: stamp-h1
|
config.h: stamp-h1
|
||||||
@if test ! -f $@; then \
|
@if test ! -f $@; then rm -f stamp-h1; else :; fi
|
||||||
rm -f stamp-h1; \
|
@if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi
|
||||||
$(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
|
|
||||||
else :; fi
|
|
||||||
|
|
||||||
stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
|
stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
|
||||||
@rm -f stamp-h1
|
@rm -f stamp-h1
|
||||||
cd $(top_builddir) && $(SHELL) ./config.status config.h
|
cd $(top_builddir) && $(SHELL) ./config.status config.h
|
||||||
$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
||||||
cd $(top_srcdir) && $(AUTOHEADER)
|
($(am__cd) $(top_srcdir) && $(AUTOHEADER))
|
||||||
rm -f stamp-h1
|
rm -f stamp-h1
|
||||||
touch $@
|
touch $@
|
||||||
|
|
||||||
@ -268,20 +342,21 @@ distclean-hdr:
|
|||||||
install-e_docDATA: $(e_doc_DATA)
|
install-e_docDATA: $(e_doc_DATA)
|
||||||
@$(NORMAL_INSTALL)
|
@$(NORMAL_INSTALL)
|
||||||
test -z "$(e_docdir)" || $(MKDIR_P) "$(DESTDIR)$(e_docdir)"
|
test -z "$(e_docdir)" || $(MKDIR_P) "$(DESTDIR)$(e_docdir)"
|
||||||
@list='$(e_doc_DATA)'; for p in $$list; do \
|
@list='$(e_doc_DATA)'; test -n "$(e_docdir)" || list=; \
|
||||||
|
for p in $$list; do \
|
||||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||||
f=$(am__strip_dir) \
|
echo "$$d$$p"; \
|
||||||
echo " $(e_docDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(e_docdir)/$$f'"; \
|
done | $(am__base_list) | \
|
||||||
$(e_docDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(e_docdir)/$$f"; \
|
while read files; do \
|
||||||
|
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(e_docdir)'"; \
|
||||||
|
$(INSTALL_DATA) $$files "$(DESTDIR)$(e_docdir)" || exit $$?; \
|
||||||
done
|
done
|
||||||
|
|
||||||
uninstall-e_docDATA:
|
uninstall-e_docDATA:
|
||||||
@$(NORMAL_UNINSTALL)
|
@$(NORMAL_UNINSTALL)
|
||||||
@list='$(e_doc_DATA)'; for p in $$list; do \
|
@list='$(e_doc_DATA)'; test -n "$(e_docdir)" || list=; \
|
||||||
f=$(am__strip_dir) \
|
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
|
||||||
echo " rm -f '$(DESTDIR)$(e_docdir)/$$f'"; \
|
dir='$(DESTDIR)$(e_docdir)'; $(am__uninstall_files_from_dir)
|
||||||
rm -f "$(DESTDIR)$(e_docdir)/$$f"; \
|
|
||||||
done
|
|
||||||
|
|
||||||
# This directory's subdirectories are mostly independent; you can cd
|
# This directory's subdirectories are mostly independent; you can cd
|
||||||
# into them and run `make' without going through this Makefile.
|
# into them and run `make' without going through this Makefile.
|
||||||
@ -290,7 +365,7 @@ uninstall-e_docDATA:
|
|||||||
# (which will cause the Makefiles to be regenerated when you run `make');
|
# (which will cause the Makefiles to be regenerated when you run `make');
|
||||||
# (2) otherwise, pass the desired values on the `make' command line.
|
# (2) otherwise, pass the desired values on the `make' command line.
|
||||||
$(RECURSIVE_TARGETS):
|
$(RECURSIVE_TARGETS):
|
||||||
@failcom='exit 1'; \
|
@fail= failcom='exit 1'; \
|
||||||
for f in x $$MAKEFLAGS; do \
|
for f in x $$MAKEFLAGS; do \
|
||||||
case $$f in \
|
case $$f in \
|
||||||
*=* | --[!k]*);; \
|
*=* | --[!k]*);; \
|
||||||
@ -307,7 +382,7 @@ $(RECURSIVE_TARGETS):
|
|||||||
else \
|
else \
|
||||||
local_target="$$target"; \
|
local_target="$$target"; \
|
||||||
fi; \
|
fi; \
|
||||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||||
|| eval $$failcom; \
|
|| eval $$failcom; \
|
||||||
done; \
|
done; \
|
||||||
if test "$$dot_seen" = "no"; then \
|
if test "$$dot_seen" = "no"; then \
|
||||||
@ -315,7 +390,7 @@ $(RECURSIVE_TARGETS):
|
|||||||
fi; test -z "$$fail"
|
fi; test -z "$$fail"
|
||||||
|
|
||||||
$(RECURSIVE_CLEAN_TARGETS):
|
$(RECURSIVE_CLEAN_TARGETS):
|
||||||
@failcom='exit 1'; \
|
@fail= failcom='exit 1'; \
|
||||||
for f in x $$MAKEFLAGS; do \
|
for f in x $$MAKEFLAGS; do \
|
||||||
case $$f in \
|
case $$f in \
|
||||||
*=* | --[!k]*);; \
|
*=* | --[!k]*);; \
|
||||||
@ -341,16 +416,16 @@ $(RECURSIVE_CLEAN_TARGETS):
|
|||||||
else \
|
else \
|
||||||
local_target="$$target"; \
|
local_target="$$target"; \
|
||||||
fi; \
|
fi; \
|
||||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||||
|| eval $$failcom; \
|
|| eval $$failcom; \
|
||||||
done && test -z "$$fail"
|
done && test -z "$$fail"
|
||||||
tags-recursive:
|
tags-recursive:
|
||||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||||
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
|
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
|
||||||
done
|
done
|
||||||
ctags-recursive:
|
ctags-recursive:
|
||||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||||
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
|
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
|
||||||
done
|
done
|
||||||
|
|
||||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||||
@ -358,14 +433,14 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
|||||||
unique=`for i in $$list; do \
|
unique=`for i in $$list; do \
|
||||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
done | \
|
done | \
|
||||||
$(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
|
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||||
mkid -fID $$unique
|
mkid -fID $$unique
|
||||||
tags: TAGS
|
tags: TAGS
|
||||||
|
|
||||||
TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
|
TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
|
||||||
$(TAGS_FILES) $(LISP)
|
$(TAGS_FILES) $(LISP)
|
||||||
tags=; \
|
set x; \
|
||||||
here=`pwd`; \
|
here=`pwd`; \
|
||||||
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
|
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
|
||||||
include_option=--etags-include; \
|
include_option=--etags-include; \
|
||||||
@ -377,7 +452,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
|
|||||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||||
if test "$$subdir" = .; then :; else \
|
if test "$$subdir" = .; then :; else \
|
||||||
test ! -f $$subdir/TAGS || \
|
test ! -f $$subdir/TAGS || \
|
||||||
tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
|
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
|
||||||
fi; \
|
fi; \
|
||||||
done; \
|
done; \
|
||||||
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
|
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
|
||||||
@ -386,36 +461,41 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
|
|||||||
done | \
|
done | \
|
||||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||||
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
|
shift; \
|
||||||
|
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||||
test -n "$$unique" || unique=$$empty_fix; \
|
test -n "$$unique" || unique=$$empty_fix; \
|
||||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
if test $$# -gt 0; then \
|
||||||
$$tags $$unique; \
|
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||||
|
"$$@" $$unique; \
|
||||||
|
else \
|
||||||
|
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||||
|
$$unique; \
|
||||||
|
fi; \
|
||||||
fi
|
fi
|
||||||
ctags: CTAGS
|
ctags: CTAGS
|
||||||
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
|
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
|
||||||
$(TAGS_FILES) $(LISP)
|
$(TAGS_FILES) $(LISP)
|
||||||
tags=; \
|
|
||||||
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
|
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
|
||||||
unique=`for i in $$list; do \
|
unique=`for i in $$list; do \
|
||||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
done | \
|
done | \
|
||||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||||
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
test -z "$(CTAGS_ARGS)$$unique" \
|
||||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||||
$$tags $$unique
|
$$unique
|
||||||
|
|
||||||
GTAGS:
|
GTAGS:
|
||||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||||
&& cd $(top_srcdir) \
|
&& $(am__cd) $(top_srcdir) \
|
||||||
&& gtags -i $(GTAGS_ARGS) $$here
|
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||||
|
|
||||||
distclean-tags:
|
distclean-tags:
|
||||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||||
|
|
||||||
distdir: $(DISTFILES)
|
distdir: $(DISTFILES)
|
||||||
$(am__remove_distdir)
|
$(am__remove_distdir)
|
||||||
test -d $(distdir) || mkdir $(distdir)
|
test -d "$(distdir)" || mkdir "$(distdir)"
|
||||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||||
list='$(DISTFILES)'; \
|
list='$(DISTFILES)'; \
|
||||||
@ -431,50 +511,75 @@ distdir: $(DISTFILES)
|
|||||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||||
if test -d $$d/$$file; then \
|
if test -d $$d/$$file; then \
|
||||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
if test -d "$(distdir)/$$file"; then \
|
||||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||||
fi; \
|
fi; \
|
||||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||||
|
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||||
|
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||||
|
fi; \
|
||||||
|
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||||
else \
|
else \
|
||||||
test -f $(distdir)/$$file \
|
test -f "$(distdir)/$$file" \
|
||||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||||
|| exit 1; \
|
|| exit 1; \
|
||||||
fi; \
|
fi; \
|
||||||
done
|
done
|
||||||
list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||||
if test "$$subdir" = .; then :; else \
|
if test "$$subdir" = .; then :; else \
|
||||||
test -d "$(distdir)/$$subdir" \
|
test -d "$(distdir)/$$subdir" \
|
||||||
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|
||||||
|| exit 1; \
|
|| exit 1; \
|
||||||
distdir=`$(am__cd) $(distdir) && pwd`; \
|
fi; \
|
||||||
top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
|
done
|
||||||
(cd $$subdir && \
|
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||||
|
if test "$$subdir" = .; then :; else \
|
||||||
|
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
|
||||||
|
$(am__relativize); \
|
||||||
|
new_distdir=$$reldir; \
|
||||||
|
dir1=$$subdir; dir2="$(top_distdir)"; \
|
||||||
|
$(am__relativize); \
|
||||||
|
new_top_distdir=$$reldir; \
|
||||||
|
echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
|
||||||
|
echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
|
||||||
|
($(am__cd) $$subdir && \
|
||||||
$(MAKE) $(AM_MAKEFLAGS) \
|
$(MAKE) $(AM_MAKEFLAGS) \
|
||||||
top_distdir="$$top_distdir" \
|
top_distdir="$$new_top_distdir" \
|
||||||
distdir="$$distdir/$$subdir" \
|
distdir="$$new_distdir" \
|
||||||
am__remove_distdir=: \
|
am__remove_distdir=: \
|
||||||
am__skip_length_check=: \
|
am__skip_length_check=: \
|
||||||
|
am__skip_mode_fix=: \
|
||||||
distdir) \
|
distdir) \
|
||||||
|| exit 1; \
|
|| exit 1; \
|
||||||
fi; \
|
fi; \
|
||||||
done
|
done
|
||||||
-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
|
-test -n "$(am__skip_mode_fix)" \
|
||||||
|
|| find "$(distdir)" -type d ! -perm -755 \
|
||||||
|
-exec chmod u+rwx,go+rx {} \; -o \
|
||||||
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
|
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
|
||||||
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
|
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
|
||||||
! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
|
! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
|
||||||
|| chmod -R a+r $(distdir)
|
|| chmod -R a+r "$(distdir)"
|
||||||
dist-gzip: distdir
|
dist-gzip: distdir
|
||||||
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
|
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
|
||||||
$(am__remove_distdir)
|
$(am__remove_distdir)
|
||||||
|
|
||||||
dist-bzip2: distdir
|
dist-bzip2: distdir
|
||||||
tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
|
tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
|
||||||
|
$(am__remove_distdir)
|
||||||
|
|
||||||
|
dist-lzip: distdir
|
||||||
|
tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
|
||||||
$(am__remove_distdir)
|
$(am__remove_distdir)
|
||||||
|
|
||||||
dist-lzma: distdir
|
dist-lzma: distdir
|
||||||
tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
|
tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
|
||||||
$(am__remove_distdir)
|
$(am__remove_distdir)
|
||||||
|
|
||||||
|
dist-xz: distdir
|
||||||
|
tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
|
||||||
|
$(am__remove_distdir)
|
||||||
|
|
||||||
dist-tarZ: distdir
|
dist-tarZ: distdir
|
||||||
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
|
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
|
||||||
$(am__remove_distdir)
|
$(am__remove_distdir)
|
||||||
@ -498,15 +603,19 @@ dist dist-all: distdir
|
|||||||
distcheck: dist
|
distcheck: dist
|
||||||
case '$(DIST_ARCHIVES)' in \
|
case '$(DIST_ARCHIVES)' in \
|
||||||
*.tar.gz*) \
|
*.tar.gz*) \
|
||||||
GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
|
GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
|
||||||
*.tar.bz2*) \
|
*.tar.bz2*) \
|
||||||
bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
|
bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
|
||||||
*.tar.lzma*) \
|
*.tar.lzma*) \
|
||||||
unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\
|
lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
|
||||||
|
*.tar.lz*) \
|
||||||
|
lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
|
||||||
|
*.tar.xz*) \
|
||||||
|
xz -dc $(distdir).tar.xz | $(am__untar) ;;\
|
||||||
*.tar.Z*) \
|
*.tar.Z*) \
|
||||||
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
|
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
|
||||||
*.shar.gz*) \
|
*.shar.gz*) \
|
||||||
GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
|
GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
|
||||||
*.zip*) \
|
*.zip*) \
|
||||||
unzip $(distdir).zip ;;\
|
unzip $(distdir).zip ;;\
|
||||||
esac
|
esac
|
||||||
@ -514,10 +623,13 @@ distcheck: dist
|
|||||||
mkdir $(distdir)/_build
|
mkdir $(distdir)/_build
|
||||||
mkdir $(distdir)/_inst
|
mkdir $(distdir)/_inst
|
||||||
chmod a-w $(distdir)
|
chmod a-w $(distdir)
|
||||||
|
test -d $(distdir)/_build || exit 0; \
|
||||||
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
|
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
|
||||||
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
|
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
|
||||||
&& cd $(distdir)/_build \
|
&& am__cwd=`pwd` \
|
||||||
|
&& $(am__cd) $(distdir)/_build \
|
||||||
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
|
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
|
||||||
|
$(AM_DISTCHECK_CONFIGURE_FLAGS) \
|
||||||
$(DISTCHECK_CONFIGURE_FLAGS) \
|
$(DISTCHECK_CONFIGURE_FLAGS) \
|
||||||
&& $(MAKE) $(AM_MAKEFLAGS) \
|
&& $(MAKE) $(AM_MAKEFLAGS) \
|
||||||
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
|
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
|
||||||
@ -538,14 +650,24 @@ distcheck: dist
|
|||||||
&& rm -rf "$$dc_destdir" \
|
&& rm -rf "$$dc_destdir" \
|
||||||
&& $(MAKE) $(AM_MAKEFLAGS) dist \
|
&& $(MAKE) $(AM_MAKEFLAGS) dist \
|
||||||
&& rm -rf $(DIST_ARCHIVES) \
|
&& rm -rf $(DIST_ARCHIVES) \
|
||||||
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck
|
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
|
||||||
|
&& cd "$$am__cwd" \
|
||||||
|
|| exit 1
|
||||||
$(am__remove_distdir)
|
$(am__remove_distdir)
|
||||||
@(echo "$(distdir) archives ready for distribution: "; \
|
@(echo "$(distdir) archives ready for distribution: "; \
|
||||||
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
|
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
|
||||||
sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
|
sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
|
||||||
distuninstallcheck:
|
distuninstallcheck:
|
||||||
@cd $(distuninstallcheck_dir) \
|
@test -n '$(distuninstallcheck_dir)' || { \
|
||||||
&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
|
echo 'ERROR: trying to run $@ with an empty' \
|
||||||
|
'$$(distuninstallcheck_dir)' >&2; \
|
||||||
|
exit 1; \
|
||||||
|
}; \
|
||||||
|
$(am__cd) '$(distuninstallcheck_dir)' || { \
|
||||||
|
echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
|
||||||
|
exit 1; \
|
||||||
|
}; \
|
||||||
|
test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
|
||||||
|| { echo "ERROR: files left after uninstall:" ; \
|
|| { echo "ERROR: files left after uninstall:" ; \
|
||||||
if test -n "$(DESTDIR)"; then \
|
if test -n "$(DESTDIR)"; then \
|
||||||
echo " (check DESTDIR support)"; \
|
echo " (check DESTDIR support)"; \
|
||||||
@ -579,16 +701,22 @@ install-am: all-am
|
|||||||
|
|
||||||
installcheck: installcheck-recursive
|
installcheck: installcheck-recursive
|
||||||
install-strip:
|
install-strip:
|
||||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
if test -z '$(STRIP)'; then \
|
||||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
`test -z '$(STRIP)' || \
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
install; \
|
||||||
|
else \
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
|
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||||
|
fi
|
||||||
mostlyclean-generic:
|
mostlyclean-generic:
|
||||||
|
|
||||||
clean-generic:
|
clean-generic:
|
||||||
|
|
||||||
distclean-generic:
|
distclean-generic:
|
||||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||||
|
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||||
|
|
||||||
maintainer-clean-generic:
|
maintainer-clean-generic:
|
||||||
@echo "This command is intended for maintainers to use"
|
@echo "This command is intended for maintainers to use"
|
||||||
@ -608,6 +736,8 @@ dvi-am:
|
|||||||
|
|
||||||
html: html-recursive
|
html: html-recursive
|
||||||
|
|
||||||
|
html-am:
|
||||||
|
|
||||||
info: info-recursive
|
info: info-recursive
|
||||||
|
|
||||||
info-am:
|
info-am:
|
||||||
@ -616,18 +746,28 @@ install-data-am: install-e_docDATA
|
|||||||
|
|
||||||
install-dvi: install-dvi-recursive
|
install-dvi: install-dvi-recursive
|
||||||
|
|
||||||
|
install-dvi-am:
|
||||||
|
|
||||||
install-exec-am:
|
install-exec-am:
|
||||||
|
|
||||||
install-html: install-html-recursive
|
install-html: install-html-recursive
|
||||||
|
|
||||||
|
install-html-am:
|
||||||
|
|
||||||
install-info: install-info-recursive
|
install-info: install-info-recursive
|
||||||
|
|
||||||
|
install-info-am:
|
||||||
|
|
||||||
install-man:
|
install-man:
|
||||||
|
|
||||||
install-pdf: install-pdf-recursive
|
install-pdf: install-pdf-recursive
|
||||||
|
|
||||||
|
install-pdf-am:
|
||||||
|
|
||||||
install-ps: install-ps-recursive
|
install-ps: install-ps-recursive
|
||||||
|
|
||||||
|
install-ps-am:
|
||||||
|
|
||||||
installcheck-am:
|
installcheck-am:
|
||||||
|
|
||||||
maintainer-clean: maintainer-clean-recursive
|
maintainer-clean: maintainer-clean-recursive
|
||||||
@ -650,37 +790,42 @@ ps-am:
|
|||||||
|
|
||||||
uninstall-am: uninstall-e_docDATA uninstall-local
|
uninstall-am: uninstall-e_docDATA uninstall-local
|
||||||
|
|
||||||
.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
|
.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \
|
||||||
install-strip
|
ctags-recursive install-am install-strip tags-recursive
|
||||||
|
|
||||||
.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
|
.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
|
||||||
all all-am am--refresh check check-am clean clean-generic \
|
all all-am am--refresh check check-am clean clean-generic \
|
||||||
ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \
|
ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \
|
||||||
dist-lzma dist-shar dist-tarZ dist-zip distcheck distclean \
|
dist-lzip dist-lzma dist-shar dist-tarZ dist-xz dist-zip \
|
||||||
distclean-generic distclean-hdr distclean-tags distcleancheck \
|
distcheck distclean distclean-generic distclean-hdr \
|
||||||
distdir distuninstallcheck dvi dvi-am html html-am info \
|
distclean-tags distcleancheck distdir distuninstallcheck dvi \
|
||||||
info-am install install-am install-data install-data-am \
|
dvi-am html html-am info info-am install install-am \
|
||||||
install-dvi install-dvi-am install-e_docDATA install-exec \
|
install-data install-data-am install-dvi install-dvi-am \
|
||||||
install-exec-am install-html install-html-am install-info \
|
install-e_docDATA install-exec install-exec-am install-html \
|
||||||
install-info-am install-man install-pdf install-pdf-am \
|
install-html-am install-info install-info-am install-man \
|
||||||
install-ps install-ps-am install-strip installcheck \
|
install-pdf install-pdf-am install-ps install-ps-am \
|
||||||
installcheck-am installdirs installdirs-am maintainer-clean \
|
install-strip installcheck installcheck-am installdirs \
|
||||||
maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
|
installdirs-am maintainer-clean maintainer-clean-generic \
|
||||||
pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \
|
mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \
|
||||||
uninstall-e_docDATA uninstall-local
|
tags-recursive uninstall uninstall-am uninstall-e_docDATA \
|
||||||
|
uninstall-local
|
||||||
|
|
||||||
|
|
||||||
uninstall-local:
|
uninstall-local:
|
||||||
-rmdir $(DESTDIR)$(e_docdir) 2>/dev/null
|
-for try in 1 2 3 4 ; do echo "$(DESTDIR)$(e_pamdir)" "$(DESTDIR)$(e_initdir)" "$(DESTDIR)$(e_sysconfdir)" "$(DESTDIR)$(e_examplesdir)" "$(DESTDIR)$(e_libexecdir)" "$(DESTDIR)$(e_spooldir)" "$(DESTDIR)$(e_docdir)" "$(DESTDIR)$(pkgdatadir)" | tr ' ' '\n' | grep -i "mailrelay" | while read d ; do rmdir "$$d" 2>/dev/null ; done ; done
|
||||||
-for d in "$(DESTDIR)$(e_sysconfdir)" "$(DESTDIR)$(e_libexecdir)" "$(DESTDIR)$(e_examplesdir)" "$(DESTDIR)$(e_spooldir)" "$(DESTDIR)$(e_initdir)" "$(DESTDIR)$(e_docdir)/man/man1" "$(DESTDIR)$(e_docdir)/man" "$(DESTDIR)$(e_docdir)" ; do rmdir "$$d" 2>/dev/null ; done
|
|
||||||
|
RPM_ROOT ?= ${HOME}/rpmbuild
|
||||||
|
#RPM_ARCH ?= $(shell arch)
|
||||||
|
RPM_ARCH ?= x86_64
|
||||||
|
|
||||||
.PHONY: rpm
|
.PHONY: rpm
|
||||||
rpm: $(RPM)
|
rpm: $(RPM)
|
||||||
|
|
||||||
$(RPM): dist
|
$(RPM): dist
|
||||||
-rm -rf $(RPM_ROOT)/BUILD/emailrelay-$(VERSION)
|
-rm -rf $(RPM_ROOT)/BUILD/emailrelay-$(VERSION)
|
||||||
|
-mkdir -p $(RPM_ROOT)/BUILD $(RPM_ROOT)/SOURCES $(RPM_ROOT)/SPECS 2>/dev/null
|
||||||
cp $(TAR) $(RPM_ROOT)/SOURCES/emailrelay-$(VERSION)-src.tar.gz
|
cp $(TAR) $(RPM_ROOT)/SOURCES/emailrelay-$(VERSION)-src.tar.gz
|
||||||
cp emailrelay.spec $(RPM_ROOT)/SPECS
|
cp $(top_srcdir)/emailrelay.spec $(RPM_ROOT)/SPECS/
|
||||||
chown root:root $(RPM_ROOT)/SPECS/emailrelay.spec
|
chown root:root $(RPM_ROOT)/SPECS/emailrelay.spec
|
||||||
rpmbuild -ba $(RPM_ROOT)/SPECS/emailrelay.spec
|
rpmbuild -ba $(RPM_ROOT)/SPECS/emailrelay.spec
|
||||||
|
|
||||||
@ -688,15 +833,16 @@ $(RPM): dist
|
|||||||
deb: $(DEB)
|
deb: $(DEB)
|
||||||
|
|
||||||
$(DEB): $(RPM)
|
$(DEB): $(RPM)
|
||||||
-mv emailrelay-$(VERSION) emailrelay-$(VERSION).old.$$
|
-mv emailrelay-$(VERSION) emailrelay-$(VERSION).old.$$$$
|
||||||
alien --to-deb --generate --single --keep-version $(RPM)
|
alien --to-deb --generate --single --keep-version $(RPM)
|
||||||
sed -i 's/^Section:.*/Section: mail/' emailrelay-$(VERSION)/debian/control
|
sed -i 's/^Section:.*/Section: mail/' emailrelay-$(VERSION)/debian/control
|
||||||
sed -i 's/^Maintainer:.*/Maintainer: Graeme Walker <graeme_walker@users.sourceforge.net>/' emailrelay-$(VERSION)/debian/control
|
sed -i 's/^Maintainer:.*/Maintainer: Graeme Walker <graeme_walker@users.sourceforge.net>/' emailrelay-$(VERSION)/debian/control
|
||||||
chmod +x debian/pre* debian/post*
|
chmod +x $(top_srcdir)/debian/pre* $(top_srcdir)/debian/post*
|
||||||
cp debian/* emailrelay-$(VERSION)/debian/
|
cp $(top_srcdir)/debian/* emailrelay-$(VERSION)/debian/
|
||||||
sed -i 's:dh_installchangelogs:dh_installchangelogs ; cp etc/init.d/emailrelay debian/emailrelay.init ; dh_installinit:' emailrelay-$(VERSION)/debian/rules
|
sed -i 's:dh_installchangelogs:dh_installchangelogs ; cp etc/init.d/emailrelay debian/emailrelay.init ; dh_installinit:' emailrelay-$(VERSION)/debian/rules
|
||||||
sed -i 's:dh_installdeb:dh_installdeb ; echo /etc/emailrelay.conf > debian/emailrelay/DEBIAN/conffiles:' emailrelay-$(VERSION)/debian/rules
|
sed -i 's:dh_installdeb:dh_installdeb ; echo /etc/emailrelay.conf > debian/emailrelay/DEBIAN/conffiles:' emailrelay-$(VERSION)/debian/rules
|
||||||
cd emailrelay-$(VERSION) && debian/rules binary
|
cd emailrelay-$(VERSION) && debian/rules binary
|
||||||
|
|
||||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
.NOEXPORT:
|
.NOEXPORT:
|
||||||
|
79
README
@ -3,54 +3,53 @@ E-MailRelay Readme
|
|||||||
|
|
||||||
Abstract
|
Abstract
|
||||||
--------
|
--------
|
||||||
E-MailRelay is a simple SMTP proxy and store-and-forward message transfer agent
|
E-MailRelay is a simple SMTP proxy and store-and-forward message transfer agent
|
||||||
(MTA). When running as a proxy all e-mail messages can be passed through a
|
(MTA). When running as a proxy all e-mail messages can be passed through a
|
||||||
user-defined program, such as a spam filter, which can drop, re-address or edit
|
user-defined program, such as a spam filter, which can drop, re-address or edit
|
||||||
messages as they pass through. When running as a store-and-forward MTA incoming
|
messages as they pass through. When running as a store-and-forward MTA incoming
|
||||||
messages are stored in a local spool directory, and then forwarded to the next
|
messages are stored in a local spool directory, and then forwarded to the next
|
||||||
SMTP server on request.
|
SMTP server on request.
|
||||||
|
|
||||||
Because of its functional simplicity E-MailRelay is easy to configure, often
|
|
||||||
only requiring the address of the target SMTP server to be put on the command
|
|
||||||
line.
|
|
||||||
|
|
||||||
E-MailRelay can also run as a POP3 server. Messages received over SMTP can be
|
E-MailRelay can also run as a POP3 server. Messages received over SMTP can be
|
||||||
automatically dropped into several independent POP3 mailboxes.
|
automatically dropped into several independent POP3 mailboxes.
|
||||||
|
|
||||||
|
E-MailRelay uses the same non-blocking i/o model as Squid and Nginx giving
|
||||||
|
excellent scalability and resource usage.
|
||||||
|
|
||||||
C++ source code is available for Linux, FreeBSD, MacOS X etc, and Windows.
|
C++ source code is available for Linux, FreeBSD, MacOS X etc, and Windows.
|
||||||
Distribution is under the GNU General Public License V3.
|
Distribution is under the GNU General Public License V3.
|
||||||
|
|
||||||
Quick start
|
Quick start
|
||||||
-----------
|
-----------
|
||||||
To use E-MailRelay in store-and-forward mode use the "--as-server" switch to
|
To use E-MailRelay in store-and-forward mode use the "--as-server" option to
|
||||||
start the storage daemon in the background, and then trigger delivery of spooled
|
start the storage daemon in the background, and then trigger delivery of spooled
|
||||||
messages by running with the "--as-client" switch and the address of the target
|
messages by running with the "--as-client" option and the address of the target
|
||||||
host.
|
host.
|
||||||
|
|
||||||
For example, to start a storage daemon listening on port 10025 use a command like
|
For example, to start a storage daemon listening on port 10025 use a command
|
||||||
this:
|
like this:
|
||||||
|
|
||||||
emailrelay --as-server --port 10025 --spool-dir /tmp
|
emailrelay --as-server --port 10025 --spool-dir /tmp
|
||||||
|
|
||||||
And then to forward the spooled mail to "smarthost" run something like this:
|
And then to forward the spooled mail to "smarthost" run something like this:
|
||||||
|
|
||||||
emailrelay --as-client smarthost:smtp --spool-dir /tmp
|
emailrelay --as-client smarthost:25 --spool-dir /tmp
|
||||||
|
|
||||||
To get behaviour more like a proxy you can add the "--poll" switch so that
|
To get behaviour more like a proxy you can add the "--poll" option so that
|
||||||
messages are forwarded continuously rather than on-demand. This example starts a
|
messages are forwarded continuously rather than on-demand. This example starts a
|
||||||
store-and-forward server that forwards spooled-up e-mail every hour:
|
store-and-forward server that forwards spooled-up e-mail every hour:
|
||||||
|
|
||||||
emailrelay --as-server --poll 3600 --forward-to smarthost:smtp
|
emailrelay --as-server --poll 3600 --forward-to smarthost:25
|
||||||
|
|
||||||
For a proxy server that forwards each message as it is being received, without
|
For a proxy server that forwards each message as it is being received, without
|
||||||
any delay, you can use the "--as-proxy" mode:
|
any delay, you can use the "--as-proxy" mode:
|
||||||
|
|
||||||
emailrelay --as-proxy smarthost:smtp
|
emailrelay --as-proxy smarthost:25
|
||||||
|
|
||||||
If you want to edit or filter e-mail as it passes through the proxy then specify
|
If you want to edit or filter e-mail as it passes through the proxy then specify
|
||||||
your pre-processor program with the "--filter" switch, something like this:
|
your pre-processor program with the "--filter" option, something like this:
|
||||||
|
|
||||||
emailrelay --as-proxy smarthost:smtp --filter /usr/local/bin/addsig
|
emailrelay --as-proxy smarthost:25 --filter /usr/local/bin/addsig
|
||||||
|
|
||||||
To run E-MailRelay as a POP server without SMTP use "--pop" and "--no-smtp":
|
To run E-MailRelay as a POP server without SMTP use "--pop" and "--no-smtp":
|
||||||
|
|
||||||
@ -59,10 +58,12 @@ To run E-MailRelay as a POP server without SMTP use "--pop" and "--no-smtp":
|
|||||||
The "emailrelay-submit" utility can be used to put messages straight into the
|
The "emailrelay-submit" utility can be used to put messages straight into the
|
||||||
spool directory so that the POP clients can fetch them.
|
spool directory so that the POP clients can fetch them.
|
||||||
|
|
||||||
Note that by default E-MailRelay will always reject connections from remote
|
By default E-MailRelay will always reject connections from remote machines. To
|
||||||
machines. To allow connections from anywhere use the "--remote-clients" switch,
|
allow connections from anywhere use the "--remote-clients" option, but please
|
||||||
but please consider the implications if your machine is connected to the
|
check your firewall settings to make sure this cannot be exploited by spammers.
|
||||||
internet.
|
|
||||||
|
On Windows add "--hidden" to suppress message boxes and also add "--no-daemon"
|
||||||
|
if running as a service.
|
||||||
|
|
||||||
For more information on the command-line options refer to the reference guide
|
For more information on the command-line options refer to the reference guide
|
||||||
or run:
|
or run:
|
||||||
@ -76,23 +77,24 @@ The following documentation is provided:
|
|||||||
* COPYING -- the GNU General Public License
|
* COPYING -- the GNU General Public License
|
||||||
* INSTALL -- build & install instructions (including the GNU text)
|
* INSTALL -- build & install instructions (including the GNU text)
|
||||||
* AUTHORS -- authors, credits and additional copyrights
|
* AUTHORS -- authors, credits and additional copyrights
|
||||||
* copyright -- main copyright and GPL reference
|
|
||||||
* userguide.txt -- user guide
|
* userguide.txt -- user guide
|
||||||
* reference.txt -- reference document
|
* reference.txt -- reference document
|
||||||
* ChangeLog -- change log for releases
|
* ChangeLog -- change log for releases
|
||||||
|
|
||||||
Source code documentation will be generated when building from source if
|
Source code documentation will be generated when building from source if
|
||||||
"doxygen" is available.
|
"doxygen" is available.
|
||||||
|
|
||||||
Configurations
|
Configurations
|
||||||
--------------
|
--------------
|
||||||
Recent releases were developed on Ubuntu Linux 7.10 using:
|
Recent releases were developed on Ubuntu Linux 12.04 using:
|
||||||
* linux 2.6.22
|
* linux 3.2.0
|
||||||
* gcc 4.1.3
|
* gcc 4.6.3
|
||||||
* autoconf 2.61
|
* autoconf 2.68
|
||||||
|
|
||||||
and on Windows NT4 SP6 using:
|
and on Windows 7 using:
|
||||||
* MSVC 6.0 SP3
|
* MSVC 2012
|
||||||
|
* MinGW 20120426
|
||||||
|
* OpenSSL 1.0.1c
|
||||||
|
|
||||||
The code was originally developed on SuSE Linux 7.1 using:
|
The code was originally developed on SuSE Linux 7.1 using:
|
||||||
* linux 2.4.10
|
* linux 2.4.10
|
||||||
@ -106,13 +108,15 @@ and on Windows 98 using:
|
|||||||
Versions of the code have also been built successfully on:
|
Versions of the code have also been built successfully on:
|
||||||
* MacOS X 10.3.9
|
* MacOS X 10.3.9
|
||||||
* MacOS X 10.5.1 using gcc 4.0.1 on G4 PPC hardware
|
* MacOS X 10.5.1 using gcc 4.0.1 on G4 PPC hardware
|
||||||
* FreeBSD on Intel hardware
|
* FreeBSD 9.2 on Intel hardware
|
||||||
* Linux on Alpha hardware (Debian 2.2)
|
* Linux on Alpha hardware (Debian 2.2)
|
||||||
* Linux on Sparc hardware
|
* Linux on Sparc hardware
|
||||||
|
* Linux on ARM 11 (Raspberry Pi) hardware
|
||||||
* Linux on RS6000 PPC hardware
|
* Linux on RS6000 PPC hardware
|
||||||
|
* Linux on MIPS embedded hardware using gcc 3.4.6
|
||||||
|
* Linux using clang++ 3.0
|
||||||
* Linux using intel c++ 6.0
|
* Linux using intel c++ 6.0
|
||||||
* Linux using intel c++ 10.1
|
* Linux using intel c++ 10.1
|
||||||
* Linux 2.4.20 using gcc 3.4.6 on MIPS (mipsel)
|
|
||||||
* Solaris 8 using gcc on Sparc hardware
|
* Solaris 8 using gcc on Sparc hardware
|
||||||
* Solaris 8 using WorkShop 5.0
|
* Solaris 8 using WorkShop 5.0
|
||||||
* Solaris 10
|
* Solaris 10
|
||||||
@ -120,10 +124,11 @@ Versions of the code have also been built successfully on:
|
|||||||
* Windows NT 4.0 using Cygwin (DLL 1.3.22) and gcc 3.2
|
* Windows NT 4.0 using Cygwin (DLL 1.3.22) and gcc 3.2
|
||||||
* Windows NT 4.0 using MinGW 2.0.0 and gcc 3.2
|
* Windows NT 4.0 using MinGW 2.0.0 and gcc 3.2
|
||||||
* Windows XP using MinGW 3.1.0 gcc 3.4.2
|
* Windows XP using MinGW 3.1.0 gcc 3.4.2
|
||||||
|
* Windows Vista
|
||||||
|
|
||||||
Feedback
|
Feedback
|
||||||
--------
|
--------
|
||||||
Please feel free to e-mail the author at
|
Please feel free to e-mail the author at
|
||||||
"mailto:graeme_walker@users.sourceforge.net" or the SourceForge mailing list
|
"mailto:graeme_walker@users.sourceforge.net" or the SourceForge mailing list
|
||||||
"mailto:emailrelay-help@lists.sourceforge.net".
|
"mailto:emailrelay-help@lists.sourceforge.net".
|
||||||
|
|
||||||
|
10
README.embedded
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
E-MailRelay on embedded systems
|
||||||
|
===============================
|
||||||
|
|
||||||
|
OpenWRT
|
||||||
|
-------
|
||||||
|
The OpenWRT system provides an excellent framework for cross-compiling
|
||||||
|
E-MailRelay to run on embedded systems.
|
||||||
|
|
||||||
|
An OpenWRT Makefile for E-MailRelay can be found in the "extra/openwrt"
|
||||||
|
directory. Install it in the OpenWrt tree as package/emailrelay/Makefile.
|
33
README.mac
@ -3,33 +3,28 @@ E-MailRelay on Mac OS X
|
|||||||
|
|
||||||
Building from source
|
Building from source
|
||||||
--------------------
|
--------------------
|
||||||
E-MailRelay can be built on a Mac as if it is a vanilla unix system; the
|
E-MailRelay can be built from source on Mac OS X using the standard
|
||||||
standard "configure; make; sudo make install" procedure for building and
|
"configure; make; sudo make install" procedure, although for best results you
|
||||||
installing from source should work well enough.
|
should use the "bin/configure-mac.sh" script to run "configure" with directory
|
||||||
|
paths that are more Mac-like (see below).
|
||||||
|
|
||||||
For best results use the "bin/configure-mac.sh" script to run "configure" with
|
The "make image" command in the "src/gui" directory can be used to build a
|
||||||
directory paths that are more Mac-like (see below).
|
self-extracting disk image for the native architecture. Project files fox Xcode
|
||||||
|
are also provided to help with building universal binaries.
|
||||||
|
|
||||||
The "make" step will only build executables for the native architecture. Xcode
|
Refer to "doc/developer.txt" for more information on Mac packaging.
|
||||||
can be used to build universal binaries. Project files for xcode 3 are supplied.
|
|
||||||
|
|
||||||
Directories
|
Directories
|
||||||
-----------
|
-----------
|
||||||
The preferred installation directories are:
|
The preferred installation directories specified by "bin/configure-mac.sh" are:
|
||||||
* "/Applications/E-MailRelay" for the application
|
* "/Applications/E-MailRelay" for the application
|
||||||
* "/Applications/E-MailRelay/Documentation" for the documentation
|
* "/Applications/E-MailRelay/Documentation" for the documentation
|
||||||
* "/Applications/E-MailRelay" for the configuration (not "/Library/Preferences/E-MailRelay")
|
* "/Applications/E-MailRelay" for the configuration (not "/Library/Preferences/E-MailRelay")
|
||||||
* "/Library/Mail/Spool" for the spool directory
|
* "/Library/Mail/Spool" for the spool directory
|
||||||
* "/Library/StartupItems/E-MailRelay" for the boot-time startup script
|
* "/Library/StartupItems/E-MailRelay" for the boot-time startup script
|
||||||
|
|
||||||
Installation can also be done into the User "domain", ie. under "~/Applications"
|
Moving the system after installation is not guaranteed to work perfectly
|
||||||
and "~/Library" using "make install DESTDIR=~", although starting up at
|
so it is best run configure with the correct directories to start with.
|
||||||
boot-time will not then work.
|
Having said that, a disk image built with the standard directories should work
|
||||||
|
reasonably well when installed to the "User" domain with
|
||||||
Moving the system after installation, or installing to any other directories,
|
"make DESTDIR=~ install".
|
||||||
is not guaranteed to work correctly.
|
|
||||||
|
|
||||||
Binary distribution
|
|
||||||
-------------------
|
|
||||||
Graphical installation from the disk image has been developed using Mac OS X
|
|
||||||
10.5 ("Leopard"). Bug reports for other versions of OS X are welcome.
|
|
||||||
|
24
README.mips
@ -1,24 +0,0 @@
|
|||||||
E-MailRelay MIPS
|
|
||||||
================
|
|
||||||
To help with running E-MailRelay on MIPS-based routers, such as the Buffalo
|
|
||||||
WHR-G54S, a makefile for building a cross-compiler toolchain is provided as
|
|
||||||
"extra/mips/toolchain.mak".
|
|
||||||
|
|
||||||
The shell script "extra/mips/configure-mips.sh" can be used to run the main
|
|
||||||
E-MailRelay "configure" script with all the size optimisations suitable for an
|
|
||||||
embedded target system.
|
|
||||||
|
|
||||||
These build-time size optimisations yield the following approximate savings for
|
|
||||||
the main executable:
|
|
||||||
|
|
||||||
* "--disable-exec" 184k
|
|
||||||
* "--enable-small-config" 121k
|
|
||||||
* "--disable-pop" 121k
|
|
||||||
* "--disable-auth" 109k
|
|
||||||
* "--disable-debug" 67k
|
|
||||||
* "--disable-admin" 63k
|
|
||||||
* "--enable-small-exceptions" 46k
|
|
||||||
* "--enable-small-fragments" 32k
|
|
||||||
* "--disable-proxy" 30k
|
|
||||||
* "--disable-dns" 26k
|
|
||||||
* "--disable-verbose" 15k
|
|
114
README.windows
@ -1,78 +1,104 @@
|
|||||||
E-MailRelay Windows
|
E-MailRelay Windows
|
||||||
===================
|
===================
|
||||||
|
|
||||||
|
Command-line options
|
||||||
|
--------------------
|
||||||
|
There are some differences in the command-line options when running the
|
||||||
|
E-MailRelay server on Windows. These include:
|
||||||
|
* The "--syslog" option refers to the Windows Event Viewer's Application log.
|
||||||
|
* The "--no-daemon" option is used to disable the icon in the system tray.
|
||||||
|
* The "--hidden" option hides all windows and suppresses message boxes (requires "--no-deamon").
|
||||||
|
* The "--peer-lookup" option can be used to add extra information to envelope files for local clients.
|
||||||
|
|
||||||
Setup program
|
Setup program
|
||||||
-------------
|
-------------
|
||||||
Installing E-MailRelay on Windows should be straightforward if you have
|
Installing E-MailRelay on Windows should be straightforward if you have the
|
||||||
self-extracting archive program "emailrelay-setup.exe". Make sure that the
|
setup program "emailrelay-setup.exe" and its associated "payload" data file.
|
||||||
setup program is in a writeable directory with plenty of space on the disk
|
|
||||||
because when you run it it will extract an installation GUI program plus
|
|
||||||
dependent DLLs in into the same directory.
|
|
||||||
|
|
||||||
The installation GUI will take you through the installation options and then
|
Run "emailrelay-setup.exe" as an administrator if you are going to be installing
|
||||||
install the run-time files into your chosen directory.
|
into sensitive directories like "Program Files". If you don't want to run it as
|
||||||
|
an administrator then you will have to rename to (eg.) "emailrelay-gui.exe" to
|
||||||
|
avoid triggering the UAC mechanism.
|
||||||
|
|
||||||
|
The setup GUI will take you through the installation options and then install
|
||||||
|
the run-time files into your chosen locations.
|
||||||
|
|
||||||
Manual installation
|
Manual installation
|
||||||
-------------------
|
-------------------
|
||||||
In summary, the manual installation process for Windows for when you do not have
|
In summary, the manual installation process for Windows for when you do not have
|
||||||
the self-extracting setup program, is as follows:
|
the self-extracting setup program, is as follows:
|
||||||
* Create a new program directory "Program Files\emailrelay"
|
* Create a new program directory "c:\Program Files\emailrelay"
|
||||||
* Unzip into "Program Files\emailrelay"
|
* Copy the packaged files into "Program Files\emailrelay"
|
||||||
* Create a new spool directory "<windir>\spool\emailrelay"
|
* Create a new spool directory "c:\windows\system32\spool\emailrelay"
|
||||||
* Create a new text file, eg. "c:\emailrelay.auth", to contain account details
|
* Create a new text file, eg. "c:\emailrelay.auth", to contain account details
|
||||||
* Add your ISP account details to "emailrelay.auth" with a line like "login client myaccount mypassword"
|
* Add your account details to "emailrelay.auth" with a line like "client login myaccount mypassword"
|
||||||
* Drag "emailrelay.exe" onto the desktop to create a shortcut for the server.
|
* Drag "emailrelay.exe" onto the desktop to create a shortcut for the server.
|
||||||
|
* Add "--as-server --verbose" to the server shortcut properties in the "target" box.
|
||||||
* Drag again to create a shortcut for the forwarding client.
|
* Drag again to create a shortcut for the forwarding client.
|
||||||
* Add "--as-server --verbose" to the server shortcut properties.
|
* Add "--as-client myisp.net:smtp --hidden --client-auth c:\emailrelay.auth" to the client shortcut.
|
||||||
* Add "--as-client myisp.net:smtp --hidden --client-auth c:/emailrelay.auth" to the client shortcut.
|
|
||||||
|
|
||||||
Move shortcuts to "Startup" folders as necessary.
|
Move shortcuts to "Startup" folders as necessary.
|
||||||
|
|
||||||
Running as a service
|
Running as a service
|
||||||
--------------------
|
--------------------
|
||||||
To manually install E-MailRelay as a service so that it starts up automatically
|
If you are installing manually you can set up E-MailRelay as a service so that
|
||||||
at boot-time you must first create a one-line batch file called
|
it starts up automatically at boot-time. You must first have a one-line batch
|
||||||
"emailrelay-start.bat" in the main E-MailRelay directory containing
|
file called "emailrelay-start.bat" in the main E-MailRelay directory containing
|
||||||
the full E-MailRelay server command-line. Then run "emailrelay-service --install"
|
the full E-MailRelay server command-line. Then just run
|
||||||
to install the service.
|
"emailrelay-service --install" to install the service.
|
||||||
|
|
||||||
When the E-MailRelay server is run in this way the "--no-daemon" and "--hidden"
|
When the E-MailRelay server is run in this way the "--no-daemon" and "--hidden"
|
||||||
switches are added automatically to whatever is in the "emailrelay-start" batch
|
options are added automatically to whatever is in the "emailrelay-start" batch
|
||||||
file, so that there is no user interface. (The "--no-daemon" switch on Windows
|
file so that there is no user interface. (The "--no-daemon" option changes the
|
||||||
changes the interface from using the system-tray to using a normal window, and
|
interface from using the system-tray to using a normal window, and the
|
||||||
the "--hidden" switch suppresses the window and any message boxes.)
|
"--hidden" option suppresses the window and any message boxes.)
|
||||||
|
|
||||||
Note that the batch file and the main E-MailRelay executable must be in the same
|
Note that the batch file and the main E-MailRelay executable must be in the same
|
||||||
directory.
|
directory; the service wrapper reads the batch file in order to assemble the
|
||||||
|
correct command-line for running the E-MailRelay server, so it needs to know
|
||||||
|
where to find it.
|
||||||
|
|
||||||
If you need to run multiple E-MailRelay services then pass a unique service name
|
If you need to run multiple E-MailRelay services then pass a unique service name
|
||||||
on the "emailrelay-service --install <name>" command-line. This name is used to
|
and display name on the "emailrelay-service --install <name> <display-name>"
|
||||||
derive the name of the "<name>-start.bat" batch file that contains the
|
command-line.
|
||||||
E-MailRelay server's command-line switches so you will need to create this too.
|
|
||||||
|
The service name you give is used to derive the name of the "<name>-start.bat"
|
||||||
|
batch file that contains the E-MailRelay server's command-line options, so you
|
||||||
|
will need to create that first.
|
||||||
|
|
||||||
|
For example:
|
||||||
|
copy emailrelay-start.bat emailrelay-client-start.bat
|
||||||
|
edit emailrelay-client-start.bat
|
||||||
|
emailrelay-service --install emailrelay-client "E-MailRelay Client"
|
||||||
|
copy emailrelay-start.bat emailrelay-server-start.bat
|
||||||
|
edit emailrelay-server-start.bat
|
||||||
|
emailrelay-service --install emailrelay-server "E-MailRelay Server"
|
||||||
|
|
||||||
Diagnostics
|
Diagnostics
|
||||||
-----------
|
-----------
|
||||||
E-MailRelay normally writes errors and warnings into the system event log, which
|
E-MailRelay normally writes errors and warnings into the Windows Event Log,
|
||||||
you can view by running "eventvwr.exe". You can increase the verbosity by adding
|
which you can view by running "eventvwr.exe" or going to
|
||||||
the "--verbose" switch to the E-MailRelay command-line, typically by editing the
|
"ControlPanel"->"SystemAndSecurity"->"AdministrativeTools"->"EventViewer"; from
|
||||||
"emailrelay-start.bat" batch script.
|
there look under "Windows Logs" and "Application".
|
||||||
|
|
||||||
The E-MailRelay server also logs to the standard error stream. However, the
|
You can increase the verbosity of the logging by adding the "--verbose" option
|
||||||
"--as-server" and "--as-proxy" switches implicitly incorporate "--close-stderr"
|
to the E-MailRelay command-line, typically by editing the "emailrelay-start.bat"
|
||||||
so with these switches the standard error logging will stop soon after startup.
|
batch script.
|
||||||
|
|
||||||
To get continuous logging to a log file you should replace "--as-server" with
|
Telnet
|
||||||
"--log" and "--as-proxy" with "--poll 0 --forward-to" and then use "2>" to
|
------
|
||||||
redirect the standard error stream, eg:
|
If you want to test E-MailRelay using telnet (as described elsewhere) then you
|
||||||
|
might need to enable the Windows telnet client using
|
||||||
"c:\program files\emailrelay\emailrelay.exe" --log -v -L ... > c:\temp.out 2>&1
|
"ControlPanel"->"ProgramsAndFeatures"->"TurnWindowsFeaturesOnAndOff".
|
||||||
|
|
||||||
Building from source
|
Building from source
|
||||||
--------------------
|
--------------------
|
||||||
E-MailRelay can be compiled using Microsoft Visual Studio C++ (MSVC) 6 or MinGW,
|
E-MailRelay can be compiled using various versions of Microsoft Visual Studio
|
||||||
although the installation/configuration GUI can only be built with MinGW because
|
C++ (MSVC) or MinGW.
|
||||||
of its dependence on Qt.
|
|
||||||
|
|
||||||
There is a Visual Studio workspace file for MSVC 6 in the "src" directory. For
|
A Visual Studio "solution" for MSVC 2012 is provided in the "src" directory to
|
||||||
MinGW please follow the guidelines in "mingw-common.mak" which is also in the
|
build the main E-MailRelay executable, although it does not include a project
|
||||||
"src" directory.
|
for the Qt-based installation/configuration GUI.
|
||||||
|
|
||||||
|
For a complete build that includes the E-MailRelay GUI use MinGW, following the
|
||||||
|
instructions in "src/mingw-common.mak" and "doc/developer.txt".
|
||||||
|
369
acinclude.m4
@ -1,8 +1,23 @@
|
|||||||
dnl Copyright (C) 2001-2008 Graeme Walker <graeme_walker@users.sourceforge.net>
|
dnl Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>
|
||||||
dnl
|
dnl
|
||||||
dnl This program is free software: you can redistribute it and/or modify
|
dnl This program is free software: you can redistribute it and/or modify
|
||||||
dnl it under the terms of the GNU General Public License as published by
|
dnl it under the terms of the GNU General Public License as published by
|
||||||
dnl the Free Software Foundation, either version 3 of the License, or
|
dnl the Free Software Foundation, either version 3 of the License, or
|
||||||
|
dnl (at your option) any later version.
|
||||||
|
dnl
|
||||||
|
dnl This program is distributed in the hope that it will be useful,
|
||||||
|
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
dnl GNU General Public License for more details.
|
||||||
|
dnl
|
||||||
|
dnl You should have received a copy of the GNU General Public License
|
||||||
|
dnl along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
dnl ===
|
||||||
|
dnl Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>
|
||||||
|
dnl
|
||||||
|
dnl This program is free software: you can redistribute it and/or modify
|
||||||
|
dnl it under the terms of the GNU General Public License as published by
|
||||||
|
dnl the Free Software Foundation, either version 3 of the License, or
|
||||||
dnl (at your option) any later version.
|
dnl (at your option) any later version.
|
||||||
dnl
|
dnl
|
||||||
dnl This program is distributed in the hope that it will be useful,
|
dnl This program is distributed in the hope that it will be useful,
|
||||||
@ -19,16 +34,16 @@ dnl
|
|||||||
dnl Defines HAVE_SOCKLEN_T.
|
dnl Defines HAVE_SOCKLEN_T.
|
||||||
dnl
|
dnl
|
||||||
AC_DEFUN([ACLOCAL_TYPE_SOCKLEN_T],
|
AC_DEFUN([ACLOCAL_TYPE_SOCKLEN_T],
|
||||||
[AC_CACHE_CHECK([for socklen_t],[aclocal_type_socklen_t],
|
[AC_CACHE_CHECK([for socklen_t],[aclocal_cv_type_socklen_t],
|
||||||
[
|
[
|
||||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
|
||||||
[[#include <sys/types.h>
|
[[#include <sys/types.h>
|
||||||
#include <sys/socket.h>]],
|
#include <sys/socket.h>]],
|
||||||
[[socklen_t len = 42; return len;]])],
|
[[socklen_t len = 42; return len;]])],
|
||||||
aclocal_type_socklen_t=yes,
|
aclocal_cv_type_socklen_t=yes,
|
||||||
aclocal_type_socklen_t=no )
|
aclocal_cv_type_socklen_t=no )
|
||||||
])
|
])
|
||||||
if test $aclocal_type_socklen_t = yes; then
|
if test $aclocal_cv_type_socklen_t = yes; then
|
||||||
AC_DEFINE(HAVE_SOCKLEN_T,1,[Define to 1 if socklen_t type definition in sys/socket.h])
|
AC_DEFINE(HAVE_SOCKLEN_T,1,[Define to 1 if socklen_t type definition in sys/socket.h])
|
||||||
else
|
else
|
||||||
AC_DEFINE(HAVE_SOCKLEN_T,0,[Define to 1 if socklen_t type definition in sys/socket.h])
|
AC_DEFINE(HAVE_SOCKLEN_T,0,[Define to 1 if socklen_t type definition in sys/socket.h])
|
||||||
@ -40,7 +55,7 @@ dnl
|
|||||||
dnl Defines HAVE_IPV6.
|
dnl Defines HAVE_IPV6.
|
||||||
dnl
|
dnl
|
||||||
AC_DEFUN([ACLOCAL_CHECK_IPV6],
|
AC_DEFUN([ACLOCAL_CHECK_IPV6],
|
||||||
[AC_CACHE_CHECK([for ipv6],[aclocal_ipv6],
|
[AC_CACHE_CHECK([for ipv6],[aclocal_cv_ipv6],
|
||||||
[
|
[
|
||||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
|
||||||
[[#include <sys/types.h>
|
[[#include <sys/types.h>
|
||||||
@ -48,10 +63,10 @@ AC_DEFUN([ACLOCAL_CHECK_IPV6],
|
|||||||
#include <netinet/in.h>
|
#include <netinet/in.h>
|
||||||
#include <arpa/inet.h>]],
|
#include <arpa/inet.h>]],
|
||||||
[[sockaddr_in6 * p = 0;]])],
|
[[sockaddr_in6 * p = 0;]])],
|
||||||
aclocal_ipv6=yes ,
|
aclocal_cv_ipv6=yes ,
|
||||||
aclocal_ipv6=no )
|
aclocal_cv_ipv6=no )
|
||||||
])
|
])
|
||||||
if test $aclocal_ipv6 = yes; then
|
if test $aclocal_cv_ipv6 = yes; then
|
||||||
AC_DEFINE(HAVE_IPV6,1,[Define to 1 if ipv6 is available])
|
AC_DEFINE(HAVE_IPV6,1,[Define to 1 if ipv6 is available])
|
||||||
else
|
else
|
||||||
AC_DEFINE(HAVE_IPV6,0,[Define to 1 if ipv6 is available])
|
AC_DEFINE(HAVE_IPV6,0,[Define to 1 if ipv6 is available])
|
||||||
@ -64,7 +79,7 @@ dnl Defines HAVE_GETIPNODEBYNAME if the ipv6 function
|
|||||||
dnl getipnodebyname() as per rfc2553 is available.
|
dnl getipnodebyname() as per rfc2553 is available.
|
||||||
dnl
|
dnl
|
||||||
AC_DEFUN([ACLOCAL_CHECK_GETIPNODEBYNAME],
|
AC_DEFUN([ACLOCAL_CHECK_GETIPNODEBYNAME],
|
||||||
[AC_CACHE_CHECK([for getipnodebyname],[aclocal_getipnodebyname],
|
[AC_CACHE_CHECK([for getipnodebyname],[aclocal_cv_getipnodebyname],
|
||||||
[
|
[
|
||||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
|
||||||
[[#include <sys/types.h>
|
[[#include <sys/types.h>
|
||||||
@ -73,10 +88,10 @@ AC_DEFUN([ACLOCAL_CHECK_GETIPNODEBYNAME],
|
|||||||
#include <arpa/inet.h>
|
#include <arpa/inet.h>
|
||||||
#include <netdb.h>]],
|
#include <netdb.h>]],
|
||||||
[[int i=0; getipnodebyname("",AF_INET6,AI_DEFAULT,&i);]])],
|
[[int i=0; getipnodebyname("",AF_INET6,AI_DEFAULT,&i);]])],
|
||||||
aclocal_getipnodebyname=yes ,
|
aclocal_cv_getipnodebyname=yes ,
|
||||||
aclocal_getipnodebyname=no )
|
aclocal_cv_getipnodebyname=no )
|
||||||
])
|
])
|
||||||
if test $aclocal_getipnodebyname = yes; then
|
if test $aclocal_cv_getipnodebyname = yes; then
|
||||||
AC_DEFINE(HAVE_GETIPNODEBYNAME,1,[Define to 1 if getipnodebyname() is available])
|
AC_DEFINE(HAVE_GETIPNODEBYNAME,1,[Define to 1 if getipnodebyname() is available])
|
||||||
else
|
else
|
||||||
AC_DEFINE(HAVE_GETIPNODEBYNAME,0,[Define to 1 if getipnodebyname() is available])
|
AC_DEFINE(HAVE_GETIPNODEBYNAME,0,[Define to 1 if getipnodebyname() is available])
|
||||||
@ -88,17 +103,17 @@ dnl
|
|||||||
dnl Defines HAVE_SIN6_LEN if sin6_len is in sockaddr_in6.
|
dnl Defines HAVE_SIN6_LEN if sin6_len is in sockaddr_in6.
|
||||||
dnl
|
dnl
|
||||||
AC_DEFUN([ACLOCAL_CHECK_SIN6_LEN],
|
AC_DEFUN([ACLOCAL_CHECK_SIN6_LEN],
|
||||||
[AC_CACHE_CHECK([for sin6_len],[aclocal_sin6_len],
|
[AC_CACHE_CHECK([for sin6_len],[aclocal_cv_sin6_len],
|
||||||
[
|
[
|
||||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
|
||||||
[[#include <sys/types.h>
|
[[#include <sys/types.h>
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
#include <netinet/in.h>]],
|
#include <netinet/in.h>]],
|
||||||
[[struct sockaddr_in6 s; s.sin6_len = 1;]])],
|
[[struct sockaddr_in6 s; s.sin6_len = 1;]])],
|
||||||
aclocal_sin6_len=yes ,
|
aclocal_cv_sin6_len=yes ,
|
||||||
aclocal_sin6_len=no )
|
aclocal_cv_sin6_len=no )
|
||||||
])
|
])
|
||||||
if test $aclocal_sin6_len = yes; then
|
if test $aclocal_cv_sin6_len = yes; then
|
||||||
AC_DEFINE(HAVE_SIN6_LEN,1,[Define to 1 if sockaddr_in6 has a sin6_len member])
|
AC_DEFINE(HAVE_SIN6_LEN,1,[Define to 1 if sockaddr_in6 has a sin6_len member])
|
||||||
else
|
else
|
||||||
AC_DEFINE(HAVE_SIN6_LEN,0,[Define to 1 if sockaddr_in6 has a sin6_len member])
|
AC_DEFINE(HAVE_SIN6_LEN,0,[Define to 1 if sockaddr_in6 has a sin6_len member])
|
||||||
@ -110,37 +125,60 @@ dnl
|
|||||||
dnl Defines HAVE_SETGROUPS.
|
dnl Defines HAVE_SETGROUPS.
|
||||||
dnl
|
dnl
|
||||||
AC_DEFUN([ACLOCAL_CHECK_SETGROUPS],
|
AC_DEFUN([ACLOCAL_CHECK_SETGROUPS],
|
||||||
[AC_CACHE_CHECK([for setgroups],[aclocal_setgroups],
|
[AC_CACHE_CHECK([for setgroups],[aclocal_cv_setgroups],
|
||||||
[
|
[
|
||||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
|
||||||
[[#include <sys/types.h>
|
[[#include <sys/types.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <grp.h>]],
|
#include <grp.h>]],
|
||||||
[[setgroups(0,0) ;]])],
|
[[setgroups(0,0) ;]])],
|
||||||
aclocal_setgroups=yes ,
|
aclocal_cv_setgroups=yes ,
|
||||||
aclocal_setgroups=no )
|
aclocal_cv_setgroups=no )
|
||||||
])
|
])
|
||||||
if test $aclocal_setgroups = yes; then
|
if test $aclocal_cv_setgroups = yes; then
|
||||||
AC_DEFINE(HAVE_SETGROUPS,1,[Define to 1 if setgroups is available])
|
AC_DEFINE(HAVE_SETGROUPS,1,[Define to 1 if setgroups is available])
|
||||||
else
|
else
|
||||||
AC_DEFINE(HAVE_SETGROUPS,0,[Define to 1 if setgroups is available])
|
AC_DEFINE(HAVE_SETGROUPS,0,[Define to 1 if setgroups is available])
|
||||||
fi
|
fi
|
||||||
])
|
])
|
||||||
|
|
||||||
dnl gmtime_r
|
dnl aclocal-check-getpwnam-r
|
||||||
|
dnl
|
||||||
|
dnl Defines HAVE_GETPWNAM_R.
|
||||||
|
dnl
|
||||||
|
AC_DEFUN([ACLOCAL_CHECK_GETPWNAM_R],
|
||||||
|
[AC_CACHE_CHECK([for getpwnam_r],[aclocal_cv_getpwnam_r],
|
||||||
|
[
|
||||||
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
|
||||||
|
[[#include <sys/types.h>
|
||||||
|
#include <pwd.h>]],
|
||||||
|
[[char c;
|
||||||
|
struct passwd *r;
|
||||||
|
getpwnam_r("",r,&c,0,&r) ;]])],
|
||||||
|
aclocal_cv_getpwnam_r=yes ,
|
||||||
|
aclocal_cv_getpwnam_r=no )
|
||||||
|
])
|
||||||
|
if test $aclocal_cv_getpwnam_r = yes; then
|
||||||
|
AC_DEFINE(HAVE_GETPWNAM_R,1,[Define to 1 if getpwnam_r in pwd.h])
|
||||||
|
else
|
||||||
|
AC_DEFINE(HAVE_GETPWNAM_R,0,[Define to 1 if getpwnam_r in pwd.h])
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
|
||||||
|
dnl aclocal-check-gmtime-r
|
||||||
dnl
|
dnl
|
||||||
dnl Defines HAVE_GMTIME_R.
|
dnl Defines HAVE_GMTIME_R.
|
||||||
dnl
|
dnl
|
||||||
AC_DEFUN([ACLOCAL_CHECK_GMTIME_R],
|
AC_DEFUN([ACLOCAL_CHECK_GMTIME_R],
|
||||||
[AC_CACHE_CHECK([for gmtime_r],[aclocal_gmtime_r],
|
[AC_CACHE_CHECK([for gmtime_r],[aclocal_cv_gmtime_r],
|
||||||
[
|
[
|
||||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
|
||||||
[[#include <time.h>]],
|
[[#include <time.h>]],
|
||||||
[[gmtime_r((time_t*)0,(struct tm*)0) ;]])],
|
[[gmtime_r((time_t*)0,(struct tm*)0) ;]])],
|
||||||
aclocal_gmtime_r=yes ,
|
aclocal_cv_gmtime_r=yes ,
|
||||||
aclocal_gmtime_r=no )
|
aclocal_cv_gmtime_r=no )
|
||||||
])
|
])
|
||||||
if test $aclocal_gmtime_r = yes; then
|
if test $aclocal_cv_gmtime_r = yes; then
|
||||||
AC_DEFINE(HAVE_GMTIME_R,1,[Define to 1 if gmtime_r in time.h])
|
AC_DEFINE(HAVE_GMTIME_R,1,[Define to 1 if gmtime_r in time.h])
|
||||||
else
|
else
|
||||||
AC_DEFINE(HAVE_GMTIME_R,0,[Define to 1 if gmtime_r in time.h])
|
AC_DEFINE(HAVE_GMTIME_R,0,[Define to 1 if gmtime_r in time.h])
|
||||||
@ -152,15 +190,15 @@ dnl
|
|||||||
dnl Defines HAVE_LOCALTIME_R.
|
dnl Defines HAVE_LOCALTIME_R.
|
||||||
dnl
|
dnl
|
||||||
AC_DEFUN([ACLOCAL_CHECK_LOCALTIME_R],
|
AC_DEFUN([ACLOCAL_CHECK_LOCALTIME_R],
|
||||||
[AC_CACHE_CHECK([for localtime_r],[aclocal_localtime_r],
|
[AC_CACHE_CHECK([for localtime_r],[aclocal_cv_localtime_r],
|
||||||
[
|
[
|
||||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
|
||||||
[[#include <time.h>]],
|
[[#include <time.h>]],
|
||||||
[[localtime_r((time_t*)0,(struct tm*)0) ;]])],
|
[[localtime_r((time_t*)0,(struct tm*)0) ;]])],
|
||||||
aclocal_localtime_r=yes ,
|
aclocal_cv_localtime_r=yes ,
|
||||||
aclocal_localtime_r=no )
|
aclocal_cv_localtime_r=no )
|
||||||
])
|
])
|
||||||
if test $aclocal_localtime_r = yes; then
|
if test $aclocal_cv_localtime_r = yes; then
|
||||||
AC_DEFINE(HAVE_LOCALTIME_R,1,[Define to 1 if localtime_r in time.h])
|
AC_DEFINE(HAVE_LOCALTIME_R,1,[Define to 1 if localtime_r in time.h])
|
||||||
else
|
else
|
||||||
AC_DEFINE(HAVE_LOCALTIME_R,0,[Define to 1 if localtime_r in time.h])
|
AC_DEFINE(HAVE_LOCALTIME_R,0,[Define to 1 if localtime_r in time.h])
|
||||||
@ -173,22 +211,34 @@ dnl Defines HAVE_BUGGY_CTIME if ctime + unistd.h doesnt compile.
|
|||||||
dnl Needed for old versions of sunpro. Remove soon.
|
dnl Needed for old versions of sunpro. Remove soon.
|
||||||
dnl
|
dnl
|
||||||
AC_DEFUN([ACLOCAL_CHECK_BUGGY_CTIME],
|
AC_DEFUN([ACLOCAL_CHECK_BUGGY_CTIME],
|
||||||
[AC_CACHE_CHECK([for buggy ctime],[aclocal_buggy_ctime],
|
[AC_CACHE_CHECK([for buggy ctime],[aclocal_cv_buggy_ctime],
|
||||||
[
|
[
|
||||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
|
||||||
[[#include <ctime>
|
[[#include <ctime>
|
||||||
#include <unistd.h>]],
|
#include <unistd.h>]],
|
||||||
[[ ]])] ,
|
[[ ]])] ,
|
||||||
aclocal_buggy_ctime=no ,
|
aclocal_cv_buggy_ctime=no ,
|
||||||
aclocal_buggy_ctime=yes )
|
aclocal_cv_buggy_ctime=yes )
|
||||||
])
|
])
|
||||||
if test $aclocal_buggy_ctime = yes; then
|
if test $aclocal_cv_buggy_ctime = yes; then
|
||||||
AC_DEFINE(HAVE_BUGGY_CTIME,1,[Define to 1 if <ctime> requires <time.h>])
|
AC_DEFINE(HAVE_BUGGY_CTIME,1,[Define to 1 if <ctime> requires <time.h>])
|
||||||
else
|
else
|
||||||
AC_DEFINE(HAVE_BUGGY_CTIME,0,[Define to 1 if <ctime> requires <time.h>])
|
AC_DEFINE(HAVE_BUGGY_CTIME,0,[Define to 1 if <ctime> requires <time.h>])
|
||||||
fi
|
fi
|
||||||
])
|
])
|
||||||
|
|
||||||
|
dnl aclocal-capabilities
|
||||||
|
dnl
|
||||||
|
dnl Sets G_CAPABILITIES to represent the configure options.
|
||||||
|
dnl
|
||||||
|
AC_DEFUN([ACLOCAL_CAPABILITIES],
|
||||||
|
[
|
||||||
|
changequote(<<,>>)
|
||||||
|
G_CAPABILITIES="@@`echo \"$ac_configure_args\" | sed 's/ /:/g' | sed 's/[^_A-Za-z0-9/=:]//g'`@@"
|
||||||
|
changequote([,])
|
||||||
|
AC_SUBST(G_CAPABILITIES)
|
||||||
|
])
|
||||||
|
|
||||||
dnl aclocal-compiler-version
|
dnl aclocal-compiler-version
|
||||||
dnl
|
dnl
|
||||||
dnl Sets COMPILER_VERSION in makefiles.
|
dnl Sets COMPILER_VERSION in makefiles.
|
||||||
@ -207,6 +257,38 @@ changequote([,])
|
|||||||
AC_SUBST(COMPILER_VERSION)
|
AC_SUBST(COMPILER_VERSION)
|
||||||
])
|
])
|
||||||
|
|
||||||
|
dnl aclocal-check-zlib
|
||||||
|
dnl
|
||||||
|
dnl Defines HAVE_ZLIB in code and ZLIB_LIBS in makefiles
|
||||||
|
dnl if zlib is available and enabled.
|
||||||
|
dnl
|
||||||
|
AC_DEFUN([WITH_ZLIB],
|
||||||
|
if test "$with_zlib" != "no"
|
||||||
|
then
|
||||||
|
[AC_CACHE_CHECK([for zlib],[aclocal_cv_zlib],
|
||||||
|
[
|
||||||
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
|
||||||
|
[[#include <zlib.h>]])],
|
||||||
|
aclocal_cv_zlib=yes,
|
||||||
|
aclocal_cv_zlib=no )
|
||||||
|
])
|
||||||
|
if test "$aclocal_cv_zlib" = "yes"
|
||||||
|
then
|
||||||
|
ZLIB_LIBS="-lz"
|
||||||
|
AC_DEFINE(HAVE_ZLIB,1,[Define to enable use of zlib])
|
||||||
|
else
|
||||||
|
if test "$with_zlib" = "yes"
|
||||||
|
then
|
||||||
|
AC_MSG_WARN([ignoring --with-zlib: check config.log and try setting CFLAGS])
|
||||||
|
fi
|
||||||
|
ZLIB_LIBS=""
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
ZLIB_LIBS=""
|
||||||
|
fi
|
||||||
|
AC_SUBST(ZLIB_LIBS)
|
||||||
|
])
|
||||||
|
|
||||||
dnl aclocal-check-qt4
|
dnl aclocal-check-qt4
|
||||||
dnl
|
dnl
|
||||||
dnl Sets the $MOC variable and MOC in makefiles to the moc
|
dnl Sets the $MOC variable and MOC in makefiles to the moc
|
||||||
@ -217,11 +299,12 @@ dnl In the implementation remember that AC_PATH_PROG does
|
|||||||
dnl nothing if the variable is already defined, and that
|
dnl nothing if the variable is already defined, and that
|
||||||
dnl it does an internal AC_SUBST.
|
dnl it does an internal AC_SUBST.
|
||||||
dnl
|
dnl
|
||||||
dnl The PKG_CHECK_MODULES macro is used to modify CFLAGS etc.
|
dnl The PKG_CHECK_MODULES macro is used to set QT_LIBS
|
||||||
|
dnl and QT_CFLAGS according to pkg-config.
|
||||||
dnl
|
dnl
|
||||||
AC_DEFUN([ACLOCAL_CHECK_QT4],
|
AC_DEFUN([ACLOCAL_CHECK_QT4],
|
||||||
[
|
[
|
||||||
PKG_CHECK_MODULES(QT,QtGui >= 4.0.1,[qt4=yes],[AC_MSG_RESULT([no])])
|
PKG_CHECK_MODULES(QT,QtGui >= 4.0.1,[qt4=yes],[qt4=no])
|
||||||
|
|
||||||
MOC="${e_qtmoc}"
|
MOC="${e_qtmoc}"
|
||||||
AC_PATH_PROG(MOC,moc)
|
AC_PATH_PROG(MOC,moc)
|
||||||
@ -238,6 +321,11 @@ AC_DEFUN([ACLOCAL_CHECK_QT4],
|
|||||||
aclocal_moc=""
|
aclocal_moc=""
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if test "$qt4" = no -a "$e_qtmoc" = ""
|
||||||
|
then
|
||||||
|
aclocal_moc=""
|
||||||
|
fi
|
||||||
])
|
])
|
||||||
|
|
||||||
dnl enable-gui
|
dnl enable-gui
|
||||||
@ -254,7 +342,7 @@ AC_DEFUN([ENABLE_GUI],
|
|||||||
else
|
else
|
||||||
if test "$enable_gui" = "yes" -a "$aclocal_moc" = ""
|
if test "$enable_gui" = "yes" -a "$aclocal_moc" = ""
|
||||||
then
|
then
|
||||||
AC_MSG_WARN([ignoring --enable-gui, set e_qtmoc to a Qt4 moc program to override])
|
AC_MSG_WARN([ignoring --enable-gui: set e_qtmoc, QT_LIBS and QT_CFLAGS to override])
|
||||||
fi
|
fi
|
||||||
MOC="$aclocal_moc"
|
MOC="$aclocal_moc"
|
||||||
fi
|
fi
|
||||||
@ -392,29 +480,6 @@ AC_DEFUN([ENABLE_IDENTITY],
|
|||||||
AM_CONDITIONAL(IDENTITY,test x$enable_identity != xno)
|
AM_CONDITIONAL(IDENTITY,test x$enable_identity != xno)
|
||||||
])
|
])
|
||||||
|
|
||||||
dnl enable-small-fragments
|
|
||||||
dnl
|
|
||||||
dnl The "--enable-small-fragments" sewitch compiles certain source files in
|
|
||||||
dnl lots of little pieces so the linker can throw away fragments that
|
|
||||||
dnl are not needed in the final executable.
|
|
||||||
dnl
|
|
||||||
dnl This requires perl on the path and probably messes up a lot of
|
|
||||||
dnl autoconf/automake features, so only use if really necessary.
|
|
||||||
dnl
|
|
||||||
AC_DEFUN([ENABLE_SMALL_FRAGMENTS],
|
|
||||||
[
|
|
||||||
AM_CONDITIONAL(SMALL_FRAGMENTS,test x$enable_small_fragments = xyes)
|
|
||||||
if test x$enable_small_fragments = xyes
|
|
||||||
then
|
|
||||||
AC_MSG_NOTICE([creating source file fragments])
|
|
||||||
FRAGMENTS_LIST="`perl $srcdir/bin/fragment.pl_ -r $srcdir/src $srcdir/src/fragments`"
|
|
||||||
for fragment in $FRAGMENTS_LIST "" ; do if test "$fragment" != "" ; then
|
|
||||||
AC_MSG_NOTICE([creating source file fragment for $fragment])
|
|
||||||
fi ; done
|
|
||||||
fi
|
|
||||||
AC_SUBST(FRAGMENTS_LIST)
|
|
||||||
])
|
|
||||||
|
|
||||||
dnl enable-small-config
|
dnl enable-small-config
|
||||||
dnl
|
dnl
|
||||||
dnl The "--enable-small-config" switch replaces the complex command-line
|
dnl The "--enable-small-config" switch replaces the complex command-line
|
||||||
@ -457,7 +522,7 @@ AC_DEFUN([ENABLE_IPV6],
|
|||||||
[
|
[
|
||||||
if test "$enable_ipv6" = "yes"
|
if test "$enable_ipv6" = "yes"
|
||||||
then
|
then
|
||||||
if test "$aclocal_ipv6" != "yes"
|
if test "$aclocal_cv_ipv6" != "yes"
|
||||||
then
|
then
|
||||||
AC_MSG_WARN([ignoring --enable-ipv6])
|
AC_MSG_WARN([ignoring --enable-ipv6])
|
||||||
aclocal_use_ipv6="no"
|
aclocal_use_ipv6="no"
|
||||||
@ -499,6 +564,16 @@ AC_DEFUN([ENABLE_MAC],
|
|||||||
AM_CONDITIONAL(MAC,test x$enable_mac = xyes -o "`uname`" = "Darwin")
|
AM_CONDITIONAL(MAC,test x$enable_mac = xyes -o "`uname`" = "Darwin")
|
||||||
])
|
])
|
||||||
|
|
||||||
|
dnl enable-testing
|
||||||
|
dnl
|
||||||
|
dnl The "--disable-testing" switch turns off make-check tests.
|
||||||
|
dnl Eg. "make distcheck DISTCHECK_CONFIGURE_FLAGS=--disable-testing".
|
||||||
|
dnl
|
||||||
|
AC_DEFUN([ENABLE_TESTING],
|
||||||
|
[
|
||||||
|
AM_CONDITIONAL(TESTING,test x$enable_testing != xno)
|
||||||
|
])
|
||||||
|
|
||||||
dnl with-openssl
|
dnl with-openssl
|
||||||
dnl
|
dnl
|
||||||
dnl Sets SSL_LIBS and "if OPENSSL" in makefiles.
|
dnl Sets SSL_LIBS and "if OPENSSL" in makefiles.
|
||||||
@ -506,22 +581,22 @@ dnl
|
|||||||
AC_DEFUN([WITH_OPENSSL],
|
AC_DEFUN([WITH_OPENSSL],
|
||||||
if test "$with_openssl" != "no"
|
if test "$with_openssl" != "no"
|
||||||
then
|
then
|
||||||
[AC_CACHE_CHECK([for openssl],[aclocal_openssl],
|
[AC_CACHE_CHECK([for openssl],[aclocal_cv_openssl],
|
||||||
[
|
[
|
||||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
|
||||||
[[#include <openssl/ssl.h>]],
|
[[#include <openssl/ssl.h>]],
|
||||||
[[SSL_CTX * p = 0 ; return 1;]])],
|
[[SSL_CTX * p = 0 ; return 1;]])],
|
||||||
aclocal_openssl=yes,
|
aclocal_cv_openssl=yes,
|
||||||
aclocal_openssl=no )
|
aclocal_cv_openssl=no )
|
||||||
])
|
])
|
||||||
if test "$aclocal_openssl" = "yes"
|
if test "$aclocal_cv_openssl" = "yes"
|
||||||
then
|
then
|
||||||
SSL_LIBS="-lssl -lcrypto"
|
SSL_LIBS="-lssl -lcrypto"
|
||||||
aclocal_ssl="openssl"
|
aclocal_ssl="openssl"
|
||||||
else
|
else
|
||||||
if test "$with_openssl" = "yes"
|
if test "$with_openssl" = "yes"
|
||||||
then
|
then
|
||||||
AC_MSG_WARN([ignoring --with-openssl, check config.log and try setting CFLAGS])
|
AC_MSG_WARN([ignoring --with-openssl: check config.log and try setting CFLAGS])
|
||||||
fi
|
fi
|
||||||
SSL_LIBS=""
|
SSL_LIBS=""
|
||||||
aclocal_ssl="none"
|
aclocal_ssl="none"
|
||||||
@ -541,15 +616,15 @@ dnl
|
|||||||
AC_DEFUN([WITH_GLOB],
|
AC_DEFUN([WITH_GLOB],
|
||||||
if test "$with_glob" != "no"
|
if test "$with_glob" != "no"
|
||||||
then
|
then
|
||||||
[AC_CACHE_CHECK([for glob],[aclocal_have_glob],
|
[AC_CACHE_CHECK([for glob],[aclocal_cv_have_glob],
|
||||||
[
|
[
|
||||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
|
||||||
[[#include <glob.h>]],
|
[[#include <glob.h>]],
|
||||||
[[glob_t * p = 0 ; globfree(p) ; return 1;]])],
|
[[glob_t * p = 0 ; globfree(p) ; return 1;]])],
|
||||||
aclocal_have_glob=yes,
|
aclocal_cv_have_glob=yes,
|
||||||
aclocal_have_glob=no )
|
aclocal_cv_have_glob=no )
|
||||||
])
|
])
|
||||||
if test "$aclocal_have_glob" = "yes"
|
if test "$aclocal_cv_have_glob" = "yes"
|
||||||
then
|
then
|
||||||
aclocal_use_glob="yes"
|
aclocal_use_glob="yes"
|
||||||
else
|
else
|
||||||
@ -560,7 +635,7 @@ then
|
|||||||
aclocal_use_glob="no"
|
aclocal_use_glob="no"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
if test "$aclocal_have_glob" = "yes"
|
if test "$aclocal_cv_have_glob" = "yes"
|
||||||
then
|
then
|
||||||
AC_MSG_WARN([not using available glob()])
|
AC_MSG_WARN([not using available glob()])
|
||||||
fi
|
fi
|
||||||
@ -571,15 +646,17 @@ AM_CONDITIONAL(GLOB,test x$aclocal_use_glob = xyes)
|
|||||||
|
|
||||||
dnl enable-static-linking
|
dnl enable-static-linking
|
||||||
dnl
|
dnl
|
||||||
dnl The "--enable-static-linking" makes a half-hearted
|
dnl The "--enable-static-linking" makes a half-hearted attempt
|
||||||
dnl attempt at static linking. Only applicable to gcc.
|
dnl at static linking. Only applicable to gcc. Note that statically
|
||||||
|
dnl linked openssl may require a statically linked zlib so try
|
||||||
|
dnl using "SSL_LIBS=-lssl -lcrypto -lz".
|
||||||
dnl
|
dnl
|
||||||
AC_DEFUN([ENABLE_STATIC_LINKING],
|
AC_DEFUN([ENABLE_STATIC_LINKING],
|
||||||
[
|
[
|
||||||
if test "$enable_static_linking" = "yes"
|
if test "$enable_static_linking" = "yes"
|
||||||
then
|
then
|
||||||
STATIC_START="-Xlinker -Bstatic"
|
STATIC_START="-Xlinker -Bstatic"
|
||||||
STATIC_END="-Xlinker -Bdynamic -ldl"
|
STATIC_END="${ZLIB_LIBS} -Xlinker -Bdynamic -ldl"
|
||||||
else
|
else
|
||||||
STATIC_START=""
|
STATIC_START=""
|
||||||
STATIC_END=""
|
STATIC_END=""
|
||||||
@ -592,7 +669,7 @@ dnl enable-install-hook
|
|||||||
dnl
|
dnl
|
||||||
dnl The "--enable-install-hook" switch enables the editing
|
dnl The "--enable-install-hook" switch enables the editing
|
||||||
dnl of "emailrelay.conf" with the correct install directories.
|
dnl of "emailrelay.conf" with the correct install directories.
|
||||||
dnl This should be disabled when building an rpm package.
|
dnl This should be disabled when building a package.
|
||||||
dnl
|
dnl
|
||||||
AC_DEFUN([ENABLE_INSTALL_HOOK],
|
AC_DEFUN([ENABLE_INSTALL_HOOK],
|
||||||
[
|
[
|
||||||
@ -639,9 +716,78 @@ AC_DEFUN([WITH_MAN2HTML],
|
|||||||
AC_SUBST(HAVE_MAN2HTML)
|
AC_SUBST(HAVE_MAN2HTML)
|
||||||
])
|
])
|
||||||
|
|
||||||
|
dnl aclocal-check-pam-headers
|
||||||
|
dnl
|
||||||
|
dnl Defines aclocal_cv_pam_headers_in_pam if PAM headers are in /usr/include/pam.
|
||||||
|
dnl
|
||||||
|
AC_DEFUN([ACLOCAL_CHECK_PAM_HEADERS],
|
||||||
|
[AC_CACHE_CHECK([for pam headers in /usr/include/pam],[aclocal_cv_pam_headers_in_pam],
|
||||||
|
[
|
||||||
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
|
||||||
|
[[#include <pam/pam_appl.h>]],
|
||||||
|
[[ ]])] ,
|
||||||
|
aclocal_cv_pam_headers_in_pam=yes ,
|
||||||
|
aclocal_cv_pam_headers_in_pam=no )
|
||||||
|
])
|
||||||
|
])
|
||||||
|
|
||||||
|
dnl aclocal-check-pam
|
||||||
|
dnl
|
||||||
|
dnl Check for pam availability.
|
||||||
|
dnl
|
||||||
|
AC_DEFUN([ACLOCAL_CHECK_PAM],
|
||||||
|
[AC_CACHE_CHECK([for linux pam],[aclocal_cv_pam_compiles],
|
||||||
|
[
|
||||||
|
if test "$aclocal_cv_pam_headers_in_pam" = "yes"
|
||||||
|
then
|
||||||
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
|
||||||
|
[[#include <pam/pam_appl.h>]],
|
||||||
|
[[int rc = pam_start("","",(const struct pam_conv*)0,(pam_handle_t**)0)]])] ,
|
||||||
|
aclocal_cv_pam_compiles=yes ,
|
||||||
|
aclocal_cv_pam_compiles=no )
|
||||||
|
else
|
||||||
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
|
||||||
|
[[#include <security/pam_appl.h>]],
|
||||||
|
[[int rc = pam_start("","",(const struct pam_conv*)0,(pam_handle_t**)0)]])] ,
|
||||||
|
aclocal_cv_pam_compiles=yes ,
|
||||||
|
aclocal_cv_pam_compiles=no )
|
||||||
|
fi
|
||||||
|
])
|
||||||
|
])
|
||||||
|
|
||||||
|
dnl with-pam
|
||||||
|
dnl
|
||||||
|
AC_DEFUN([WITH_PAM],
|
||||||
|
[
|
||||||
|
aclocal_cv_use_pam="$with_pam"
|
||||||
|
if test "$aclocal_cv_use_pam" = ""
|
||||||
|
then
|
||||||
|
aclocal_cv_use_pam="$aclocal_cv_pam_compiles"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$aclocal_cv_use_pam" = "yes"
|
||||||
|
then
|
||||||
|
if test "$aclocal_cv_pam_compiles" = "no"
|
||||||
|
then
|
||||||
|
AC_MSG_WARN([forcing use of pam even though it does not seem to compile])
|
||||||
|
fi
|
||||||
|
|
||||||
|
PAM_LIBS="-lpam"
|
||||||
|
if test "$aclocal_cv_pam_headers_in_pam" = "yes"
|
||||||
|
then
|
||||||
|
PAM_INCLUDE="-I/usr/include/pam"
|
||||||
|
else
|
||||||
|
PAM_INCLUDE="-I/usr/include/security"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
AC_SUBST(PAM_LIBS)
|
||||||
|
AC_SUBST(PAM_INCLUDE)
|
||||||
|
AM_CONDITIONAL(PAM,test x$aclocal_cv_use_pam = xyes)
|
||||||
|
])
|
||||||
|
|
||||||
dnl set-directories
|
dnl set-directories
|
||||||
dnl
|
dnl
|
||||||
dnl Sets directory paths taking account of "--enable-fhs".
|
dnl Sets directory paths.
|
||||||
dnl
|
dnl
|
||||||
AC_DEFUN([SET_DIRECTORIES],
|
AC_DEFUN([SET_DIRECTORIES],
|
||||||
[
|
[
|
||||||
@ -650,79 +796,48 @@ AC_DEFUN([SET_DIRECTORIES],
|
|||||||
# * e_libexecdir
|
# * e_libexecdir
|
||||||
# * e_examplesdir
|
# * e_examplesdir
|
||||||
# * e_sysconfdir
|
# * e_sysconfdir
|
||||||
|
# * e_pamdir
|
||||||
# * mandir
|
# * mandir
|
||||||
# * e_docdir
|
# * e_docdir
|
||||||
# * e_spooldir
|
# * e_spooldir
|
||||||
# * e_initdir
|
# * e_initdir
|
||||||
|
# * e_icondir
|
||||||
|
|
||||||
if test "$enable_fhs" = "yes"
|
|
||||||
then
|
|
||||||
prefix='/usr'
|
|
||||||
exec_prefix='/usr'
|
|
||||||
sbindir="/usr/sbin"
|
|
||||||
libexecdir="/usr/lib"
|
|
||||||
localstatedir="/var"
|
|
||||||
mandir="/usr/share/man"
|
|
||||||
datadir="/usr/share"
|
|
||||||
sysconfdir="/etc"
|
|
||||||
fi
|
|
||||||
if test "$e_libexecdir" = ""
|
if test "$e_libexecdir" = ""
|
||||||
then
|
then
|
||||||
if test "$enable_fhs" = "yes"
|
e_libexecdir="$libexecdir/$PACKAGE"
|
||||||
then
|
|
||||||
e_libexecdir="$libexecdir/$PACKAGE"
|
|
||||||
else
|
|
||||||
e_libexecdir="$libexecdir/$PACKAGE"
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
if test "$e_examplesdir" = ""
|
if test "$e_examplesdir" = ""
|
||||||
then
|
then
|
||||||
if test "$enable_fhs" = "yes"
|
e_examplesdir="$libexecdir/$PACKAGE/examples"
|
||||||
then
|
|
||||||
e_examplesdir="$libexecdir/$PACKAGE/examples"
|
|
||||||
else
|
|
||||||
e_examplesdir="$libexecdir/$PACKAGE/examples"
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
if test "$e_sysconfdir" = ""
|
if test "$e_sysconfdir" = ""
|
||||||
then
|
then
|
||||||
if test "$enable_fhs" = "yes"
|
e_sysconfdir="$sysconfdir"
|
||||||
then
|
|
||||||
e_sysconfdir="$sysconfdir"
|
|
||||||
else
|
|
||||||
e_sysconfdir="$sysconfdir"
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
if test "$e_docdir" = ""
|
if test "$e_docdir" = ""
|
||||||
then
|
then
|
||||||
if test "$enable_fhs" = "yes"
|
e_docdir="$docdir"
|
||||||
then
|
if test "$e_docdir" = ""
|
||||||
e_docdir="$datadir/doc/$PACKAGE"
|
then
|
||||||
else
|
e_docdir="$datadir/$PACKAGE/doc"
|
||||||
e_docdir="$docdir"
|
|
||||||
if test "$e_docdir" = ""
|
|
||||||
then
|
|
||||||
e_docdir="$datadir/$PACKAGE/doc"
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
if test "$e_spooldir" = ""
|
if test "$e_spooldir" = ""
|
||||||
then
|
then
|
||||||
if test "$enable_fhs" = "yes"
|
e_spooldir="$localstatedir/spool/$PACKAGE"
|
||||||
then
|
fi
|
||||||
e_spooldir="$localstatedir/spool/$PACKAGE"
|
if test "$e_pamdir" = ""
|
||||||
else
|
then
|
||||||
e_spooldir="$localstatedir/spool/$PACKAGE"
|
e_pamdir="$sysconfdir/pam.d"
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
if test "$e_initdir" = ""
|
if test "$e_initdir" = ""
|
||||||
then
|
then
|
||||||
if test "$enable_fhs" = "yes"
|
e_initdir="$libexecdir/$PACKAGE/init"
|
||||||
then
|
fi
|
||||||
e_initdir="/etc/init.d"
|
if test "$e_icondir" = ""
|
||||||
else
|
then
|
||||||
e_initdir="$libexecdir/$PACKAGE/init"
|
e_icondir="$datadir/$PACKAGE"
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
])
|
])
|
||||||
|
|
||||||
|
432
aclocal.m4
vendored
@ -1,7 +1,8 @@
|
|||||||
# generated automatically by aclocal 1.10.1 -*- Autoconf -*-
|
# generated automatically by aclocal 1.11.3 -*- Autoconf -*-
|
||||||
|
|
||||||
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
||||||
# 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
|
# 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation,
|
||||||
|
# Inc.
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
@ -13,13 +14,14 @@
|
|||||||
|
|
||||||
m4_ifndef([AC_AUTOCONF_VERSION],
|
m4_ifndef([AC_AUTOCONF_VERSION],
|
||||||
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
|
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
|
||||||
m4_if(AC_AUTOCONF_VERSION, [2.61],,
|
m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.68],,
|
||||||
[m4_warning([this file was generated for autoconf 2.61.
|
[m4_warning([this file was generated for autoconf 2.68.
|
||||||
You have another version of autoconf. It may work, but is not guaranteed to.
|
You have another version of autoconf. It may work, but is not guaranteed to.
|
||||||
If you have problems, you may need to regenerate the build system entirely.
|
If you have problems, you may need to regenerate the build system entirely.
|
||||||
To do so, use the procedure documented by the package, typically `autoreconf'.])])
|
To do so, use the procedure documented by the package, typically `autoreconf'.])])
|
||||||
|
|
||||||
# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
|
# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
|
||||||
|
# serial 1 (pkg-config-0.24)
|
||||||
#
|
#
|
||||||
# Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
|
# Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
|
||||||
#
|
#
|
||||||
@ -46,8 +48,12 @@ To do so, use the procedure documented by the package, typically `autoreconf'.])
|
|||||||
# ----------------------------------
|
# ----------------------------------
|
||||||
AC_DEFUN([PKG_PROG_PKG_CONFIG],
|
AC_DEFUN([PKG_PROG_PKG_CONFIG],
|
||||||
[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
|
[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
|
||||||
m4_pattern_allow([^PKG_CONFIG(_PATH)?$])
|
m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$])
|
||||||
AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl
|
m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$])
|
||||||
|
AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])
|
||||||
|
AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path])
|
||||||
|
AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path])
|
||||||
|
|
||||||
if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
|
if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
|
||||||
AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
|
AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
|
||||||
fi
|
fi
|
||||||
@ -60,7 +66,6 @@ if test -n "$PKG_CONFIG"; then
|
|||||||
AC_MSG_RESULT([no])
|
AC_MSG_RESULT([no])
|
||||||
PKG_CONFIG=""
|
PKG_CONFIG=""
|
||||||
fi
|
fi
|
||||||
|
|
||||||
fi[]dnl
|
fi[]dnl
|
||||||
])# PKG_PROG_PKG_CONFIG
|
])# PKG_PROG_PKG_CONFIG
|
||||||
|
|
||||||
@ -69,34 +74,32 @@ fi[]dnl
|
|||||||
# Check to see whether a particular set of modules exists. Similar
|
# Check to see whether a particular set of modules exists. Similar
|
||||||
# to PKG_CHECK_MODULES(), but does not set variables or print errors.
|
# to PKG_CHECK_MODULES(), but does not set variables or print errors.
|
||||||
#
|
#
|
||||||
#
|
# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG])
|
||||||
# Similar to PKG_CHECK_MODULES, make sure that the first instance of
|
# only at the first occurence in configure.ac, so if the first place
|
||||||
# this or PKG_CHECK_MODULES is called, or make sure to call
|
# it's called might be skipped (such as if it is within an "if", you
|
||||||
# PKG_CHECK_EXISTS manually
|
# have to call PKG_CHECK_EXISTS manually
|
||||||
# --------------------------------------------------------------
|
# --------------------------------------------------------------
|
||||||
AC_DEFUN([PKG_CHECK_EXISTS],
|
AC_DEFUN([PKG_CHECK_EXISTS],
|
||||||
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
|
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
|
||||||
if test -n "$PKG_CONFIG" && \
|
if test -n "$PKG_CONFIG" && \
|
||||||
AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
|
AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
|
||||||
m4_ifval([$2], [$2], [:])
|
m4_default([$2], [:])
|
||||||
m4_ifvaln([$3], [else
|
m4_ifvaln([$3], [else
|
||||||
$3])dnl
|
$3])dnl
|
||||||
fi])
|
fi])
|
||||||
|
|
||||||
|
|
||||||
# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
|
# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
|
||||||
# ---------------------------------------------
|
# ---------------------------------------------
|
||||||
m4_define([_PKG_CONFIG],
|
m4_define([_PKG_CONFIG],
|
||||||
[if test -n "$PKG_CONFIG"; then
|
[if test -n "$$1"; then
|
||||||
if test -n "$$1"; then
|
pkg_cv_[]$1="$$1"
|
||||||
pkg_cv_[]$1="$$1"
|
elif test -n "$PKG_CONFIG"; then
|
||||||
else
|
PKG_CHECK_EXISTS([$3],
|
||||||
PKG_CHECK_EXISTS([$3],
|
[pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`
|
||||||
[pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`],
|
test "x$?" != "x0" && pkg_failed=yes ],
|
||||||
[pkg_failed=yes])
|
[pkg_failed=yes])
|
||||||
fi
|
else
|
||||||
else
|
pkg_failed=untried
|
||||||
pkg_failed=untried
|
|
||||||
fi[]dnl
|
fi[]dnl
|
||||||
])# _PKG_CONFIG
|
])# _PKG_CONFIG
|
||||||
|
|
||||||
@ -138,16 +141,17 @@ and $1[]_LIBS to avoid the need to call pkg-config.
|
|||||||
See the pkg-config man page for more details.])
|
See the pkg-config man page for more details.])
|
||||||
|
|
||||||
if test $pkg_failed = yes; then
|
if test $pkg_failed = yes; then
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
_PKG_SHORT_ERRORS_SUPPORTED
|
_PKG_SHORT_ERRORS_SUPPORTED
|
||||||
if test $_pkg_short_errors_supported = yes; then
|
if test $_pkg_short_errors_supported = yes; then
|
||||||
$1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$2"`
|
$1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1`
|
||||||
else
|
else
|
||||||
$1[]_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"`
|
$1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1`
|
||||||
fi
|
fi
|
||||||
# Put the nasty error message in config.log where it belongs
|
# Put the nasty error message in config.log where it belongs
|
||||||
echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
|
echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
|
||||||
|
|
||||||
ifelse([$4], , [AC_MSG_ERROR(dnl
|
m4_default([$4], [AC_MSG_ERROR(
|
||||||
[Package requirements ($2) were not met:
|
[Package requirements ($2) were not met:
|
||||||
|
|
||||||
$$1_PKG_ERRORS
|
$$1_PKG_ERRORS
|
||||||
@ -155,44 +159,46 @@ $$1_PKG_ERRORS
|
|||||||
Consider adjusting the PKG_CONFIG_PATH environment variable if you
|
Consider adjusting the PKG_CONFIG_PATH environment variable if you
|
||||||
installed software in a non-standard prefix.
|
installed software in a non-standard prefix.
|
||||||
|
|
||||||
_PKG_TEXT
|
_PKG_TEXT])[]dnl
|
||||||
])],
|
])
|
||||||
[AC_MSG_RESULT([no])
|
|
||||||
$4])
|
|
||||||
elif test $pkg_failed = untried; then
|
elif test $pkg_failed = untried; then
|
||||||
ifelse([$4], , [AC_MSG_FAILURE(dnl
|
AC_MSG_RESULT([no])
|
||||||
|
m4_default([$4], [AC_MSG_FAILURE(
|
||||||
[The pkg-config script could not be found or is too old. Make sure it
|
[The pkg-config script could not be found or is too old. Make sure it
|
||||||
is in your PATH or set the PKG_CONFIG environment variable to the full
|
is in your PATH or set the PKG_CONFIG environment variable to the full
|
||||||
path to pkg-config.
|
path to pkg-config.
|
||||||
|
|
||||||
_PKG_TEXT
|
_PKG_TEXT
|
||||||
|
|
||||||
To get pkg-config, see <http://pkg-config.freedesktop.org/>.])],
|
To get pkg-config, see <http://pkg-config.freedesktop.org/>.])[]dnl
|
||||||
[$4])
|
])
|
||||||
else
|
else
|
||||||
$1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
|
$1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
|
||||||
$1[]_LIBS=$pkg_cv_[]$1[]_LIBS
|
$1[]_LIBS=$pkg_cv_[]$1[]_LIBS
|
||||||
AC_MSG_RESULT([yes])
|
AC_MSG_RESULT([yes])
|
||||||
ifelse([$3], , :, [$3])
|
$3
|
||||||
fi[]dnl
|
fi[]dnl
|
||||||
])# PKG_CHECK_MODULES
|
])# PKG_CHECK_MODULES
|
||||||
|
|
||||||
# Copyright (C) 2002, 2003, 2005, 2006, 2007 Free Software Foundation, Inc.
|
# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2011 Free Software
|
||||||
|
# Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
# serial 1
|
||||||
|
|
||||||
# AM_AUTOMAKE_VERSION(VERSION)
|
# AM_AUTOMAKE_VERSION(VERSION)
|
||||||
# ----------------------------
|
# ----------------------------
|
||||||
# Automake X.Y traces this macro to ensure aclocal.m4 has been
|
# Automake X.Y traces this macro to ensure aclocal.m4 has been
|
||||||
# generated from the m4 files accompanying Automake X.Y.
|
# generated from the m4 files accompanying Automake X.Y.
|
||||||
# (This private macro should not be called outside this file.)
|
# (This private macro should not be called outside this file.)
|
||||||
AC_DEFUN([AM_AUTOMAKE_VERSION],
|
AC_DEFUN([AM_AUTOMAKE_VERSION],
|
||||||
[am__api_version='1.10'
|
[am__api_version='1.11'
|
||||||
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
|
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
|
||||||
dnl require some minimum version. Point them to the right macro.
|
dnl require some minimum version. Point them to the right macro.
|
||||||
m4_if([$1], [1.10.1], [],
|
m4_if([$1], [1.11.3], [],
|
||||||
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
|
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
|
||||||
])
|
])
|
||||||
|
|
||||||
@ -206,21 +212,23 @@ m4_define([_AM_AUTOCONF_VERSION], [])
|
|||||||
# AM_SET_CURRENT_AUTOMAKE_VERSION
|
# AM_SET_CURRENT_AUTOMAKE_VERSION
|
||||||
# -------------------------------
|
# -------------------------------
|
||||||
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
|
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
|
||||||
# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
|
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
|
||||||
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
|
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
|
||||||
[AM_AUTOMAKE_VERSION([1.10.1])dnl
|
[AM_AUTOMAKE_VERSION([1.11.3])dnl
|
||||||
m4_ifndef([AC_AUTOCONF_VERSION],
|
m4_ifndef([AC_AUTOCONF_VERSION],
|
||||||
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
|
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
|
||||||
_AM_AUTOCONF_VERSION(AC_AUTOCONF_VERSION)])
|
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
|
||||||
|
|
||||||
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
|
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
|
||||||
|
|
||||||
# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
|
# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
# serial 1
|
||||||
|
|
||||||
# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
|
# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
|
||||||
# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
|
# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
|
||||||
# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
|
# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
|
||||||
@ -268,14 +276,14 @@ am_aux_dir=`cd $ac_aux_dir && pwd`
|
|||||||
|
|
||||||
# AM_CONDITIONAL -*- Autoconf -*-
|
# AM_CONDITIONAL -*- Autoconf -*-
|
||||||
|
|
||||||
# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006
|
# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
|
||||||
# Free Software Foundation, Inc.
|
# Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
# serial 8
|
# serial 9
|
||||||
|
|
||||||
# AM_CONDITIONAL(NAME, SHELL-CONDITION)
|
# AM_CONDITIONAL(NAME, SHELL-CONDITION)
|
||||||
# -------------------------------------
|
# -------------------------------------
|
||||||
@ -288,6 +296,7 @@ AC_SUBST([$1_TRUE])dnl
|
|||||||
AC_SUBST([$1_FALSE])dnl
|
AC_SUBST([$1_FALSE])dnl
|
||||||
_AM_SUBST_NOTMAKE([$1_TRUE])dnl
|
_AM_SUBST_NOTMAKE([$1_TRUE])dnl
|
||||||
_AM_SUBST_NOTMAKE([$1_FALSE])dnl
|
_AM_SUBST_NOTMAKE([$1_FALSE])dnl
|
||||||
|
m4_define([_AM_COND_VALUE_$1], [$2])dnl
|
||||||
if $2; then
|
if $2; then
|
||||||
$1_TRUE=
|
$1_TRUE=
|
||||||
$1_FALSE='#'
|
$1_FALSE='#'
|
||||||
@ -301,14 +310,14 @@ AC_CONFIG_COMMANDS_PRE(
|
|||||||
Usually this means the macro was only invoked conditionally.]])
|
Usually this means the macro was only invoked conditionally.]])
|
||||||
fi])])
|
fi])])
|
||||||
|
|
||||||
# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
|
# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009,
|
||||||
# Free Software Foundation, Inc.
|
# 2010, 2011 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
# serial 9
|
# serial 12
|
||||||
|
|
||||||
# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
|
# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
|
||||||
# written in clear, in which case automake, when reading aclocal.m4,
|
# written in clear, in which case automake, when reading aclocal.m4,
|
||||||
@ -348,6 +357,7 @@ AC_CACHE_CHECK([dependency style of $depcc],
|
|||||||
# instance it was reported that on HP-UX the gcc test will end up
|
# instance it was reported that on HP-UX the gcc test will end up
|
||||||
# making a dummy file named `D' -- because `-MD' means `put the output
|
# making a dummy file named `D' -- because `-MD' means `put the output
|
||||||
# in D'.
|
# in D'.
|
||||||
|
rm -rf conftest.dir
|
||||||
mkdir conftest.dir
|
mkdir conftest.dir
|
||||||
# Copy depcomp to subdir because otherwise we won't find it if we're
|
# Copy depcomp to subdir because otherwise we won't find it if we're
|
||||||
# using a relative directory.
|
# using a relative directory.
|
||||||
@ -365,6 +375,16 @@ AC_CACHE_CHECK([dependency style of $depcc],
|
|||||||
if test "$am_compiler_list" = ""; then
|
if test "$am_compiler_list" = ""; then
|
||||||
am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
|
am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
|
||||||
fi
|
fi
|
||||||
|
am__universal=false
|
||||||
|
m4_case([$1], [CC],
|
||||||
|
[case " $depcc " in #(
|
||||||
|
*\ -arch\ *\ -arch\ *) am__universal=true ;;
|
||||||
|
esac],
|
||||||
|
[CXX],
|
||||||
|
[case " $depcc " in #(
|
||||||
|
*\ -arch\ *\ -arch\ *) am__universal=true ;;
|
||||||
|
esac])
|
||||||
|
|
||||||
for depmode in $am_compiler_list; do
|
for depmode in $am_compiler_list; do
|
||||||
# Setup a source with many dependencies, because some compilers
|
# Setup a source with many dependencies, because some compilers
|
||||||
# like to wrap large dependency lists on column 80 (with \), and
|
# like to wrap large dependency lists on column 80 (with \), and
|
||||||
@ -382,7 +402,17 @@ AC_CACHE_CHECK([dependency style of $depcc],
|
|||||||
done
|
done
|
||||||
echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
|
echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
|
||||||
|
|
||||||
|
# We check with `-c' and `-o' for the sake of the "dashmstdout"
|
||||||
|
# mode. It turns out that the SunPro C++ compiler does not properly
|
||||||
|
# handle `-M -o', and we need to detect this. Also, some Intel
|
||||||
|
# versions had trouble with output in subdirs
|
||||||
|
am__obj=sub/conftest.${OBJEXT-o}
|
||||||
|
am__minus_obj="-o $am__obj"
|
||||||
case $depmode in
|
case $depmode in
|
||||||
|
gcc)
|
||||||
|
# This depmode causes a compiler race in universal mode.
|
||||||
|
test "$am__universal" = false || continue
|
||||||
|
;;
|
||||||
nosideeffect)
|
nosideeffect)
|
||||||
# after this tag, mechanisms are not by side-effect, so they'll
|
# after this tag, mechanisms are not by side-effect, so they'll
|
||||||
# only be used when explicitly requested
|
# only be used when explicitly requested
|
||||||
@ -392,19 +422,23 @@ AC_CACHE_CHECK([dependency style of $depcc],
|
|||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
|
msvc7 | msvc7msys | msvisualcpp | msvcmsys)
|
||||||
|
# This compiler won't grok `-c -o', but also, the minuso test has
|
||||||
|
# not run yet. These depmodes are late enough in the game, and
|
||||||
|
# so weak that their functioning should not be impacted.
|
||||||
|
am__obj=conftest.${OBJEXT-o}
|
||||||
|
am__minus_obj=
|
||||||
|
;;
|
||||||
none) break ;;
|
none) break ;;
|
||||||
esac
|
esac
|
||||||
# We check with `-c' and `-o' for the sake of the "dashmstdout"
|
|
||||||
# mode. It turns out that the SunPro C++ compiler does not properly
|
|
||||||
# handle `-M -o', and we need to detect this.
|
|
||||||
if depmode=$depmode \
|
if depmode=$depmode \
|
||||||
source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
|
source=sub/conftest.c object=$am__obj \
|
||||||
depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
|
depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
|
||||||
$SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
|
$SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
|
||||||
>/dev/null 2>conftest.err &&
|
>/dev/null 2>conftest.err &&
|
||||||
grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
|
grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
|
||||||
grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
|
grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
|
||||||
grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
|
grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
|
||||||
${MAKE-make} -s -f confmf > /dev/null 2>&1; then
|
${MAKE-make} -s -f confmf > /dev/null 2>&1; then
|
||||||
# icc doesn't choke on unknown options, it will just issue warnings
|
# icc doesn't choke on unknown options, it will just issue warnings
|
||||||
# or remarks (even with -Werror). So we grep stderr for any message
|
# or remarks (even with -Werror). So we grep stderr for any message
|
||||||
@ -453,65 +487,79 @@ AC_DEFUN([AM_DEP_TRACK],
|
|||||||
if test "x$enable_dependency_tracking" != xno; then
|
if test "x$enable_dependency_tracking" != xno; then
|
||||||
am_depcomp="$ac_aux_dir/depcomp"
|
am_depcomp="$ac_aux_dir/depcomp"
|
||||||
AMDEPBACKSLASH='\'
|
AMDEPBACKSLASH='\'
|
||||||
|
am__nodep='_no'
|
||||||
fi
|
fi
|
||||||
AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
|
AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
|
||||||
AC_SUBST([AMDEPBACKSLASH])dnl
|
AC_SUBST([AMDEPBACKSLASH])dnl
|
||||||
_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
|
_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
|
||||||
|
AC_SUBST([am__nodep])dnl
|
||||||
|
_AM_SUBST_NOTMAKE([am__nodep])dnl
|
||||||
])
|
])
|
||||||
|
|
||||||
# Generate code to set up dependency tracking. -*- Autoconf -*-
|
# Generate code to set up dependency tracking. -*- Autoconf -*-
|
||||||
|
|
||||||
# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
|
# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008
|
||||||
# Free Software Foundation, Inc.
|
# Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
#serial 3
|
#serial 5
|
||||||
|
|
||||||
# _AM_OUTPUT_DEPENDENCY_COMMANDS
|
# _AM_OUTPUT_DEPENDENCY_COMMANDS
|
||||||
# ------------------------------
|
# ------------------------------
|
||||||
AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
|
AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
|
||||||
[for mf in $CONFIG_FILES; do
|
[{
|
||||||
# Strip MF so we end up with the name of the file.
|
# Autoconf 2.62 quotes --file arguments for eval, but not when files
|
||||||
mf=`echo "$mf" | sed -e 's/:.*$//'`
|
# are listed without --file. Let's play safe and only enable the eval
|
||||||
# Check whether this is an Automake generated Makefile or not.
|
# if we detect the quoting.
|
||||||
# We used to match only the files named `Makefile.in', but
|
case $CONFIG_FILES in
|
||||||
# some people rename them; so instead we look at the file content.
|
*\'*) eval set x "$CONFIG_FILES" ;;
|
||||||
# Grep'ing the first line is not enough: some people post-process
|
*) set x $CONFIG_FILES ;;
|
||||||
# each Makefile.in and add a new line on top of each file to say so.
|
esac
|
||||||
# Grep'ing the whole file is not good either: AIX grep has a line
|
shift
|
||||||
# limit of 2048, but all sed's we know have understand at least 4000.
|
for mf
|
||||||
if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
|
do
|
||||||
dirpart=`AS_DIRNAME("$mf")`
|
# Strip MF so we end up with the name of the file.
|
||||||
else
|
mf=`echo "$mf" | sed -e 's/:.*$//'`
|
||||||
continue
|
# Check whether this is an Automake generated Makefile or not.
|
||||||
fi
|
# We used to match only the files named `Makefile.in', but
|
||||||
# Extract the definition of DEPDIR, am__include, and am__quote
|
# some people rename them; so instead we look at the file content.
|
||||||
# from the Makefile without running `make'.
|
# Grep'ing the first line is not enough: some people post-process
|
||||||
DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
|
# each Makefile.in and add a new line on top of each file to say so.
|
||||||
test -z "$DEPDIR" && continue
|
# Grep'ing the whole file is not good either: AIX grep has a line
|
||||||
am__include=`sed -n 's/^am__include = //p' < "$mf"`
|
# limit of 2048, but all sed's we know have understand at least 4000.
|
||||||
test -z "am__include" && continue
|
if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
|
||||||
am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
|
dirpart=`AS_DIRNAME("$mf")`
|
||||||
# When using ansi2knr, U may be empty or an underscore; expand it
|
else
|
||||||
U=`sed -n 's/^U = //p' < "$mf"`
|
continue
|
||||||
# Find all dependency output files, they are included files with
|
fi
|
||||||
# $(DEPDIR) in their names. We invoke sed twice because it is the
|
# Extract the definition of DEPDIR, am__include, and am__quote
|
||||||
# simplest approach to changing $(DEPDIR) to its actual value in the
|
# from the Makefile without running `make'.
|
||||||
# expansion.
|
DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
|
||||||
for file in `sed -n "
|
test -z "$DEPDIR" && continue
|
||||||
s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
|
am__include=`sed -n 's/^am__include = //p' < "$mf"`
|
||||||
sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
|
test -z "am__include" && continue
|
||||||
# Make sure the directory exists.
|
am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
|
||||||
test -f "$dirpart/$file" && continue
|
# When using ansi2knr, U may be empty or an underscore; expand it
|
||||||
fdir=`AS_DIRNAME(["$file"])`
|
U=`sed -n 's/^U = //p' < "$mf"`
|
||||||
AS_MKDIR_P([$dirpart/$fdir])
|
# Find all dependency output files, they are included files with
|
||||||
# echo "creating $dirpart/$file"
|
# $(DEPDIR) in their names. We invoke sed twice because it is the
|
||||||
echo '# dummy' > "$dirpart/$file"
|
# simplest approach to changing $(DEPDIR) to its actual value in the
|
||||||
|
# expansion.
|
||||||
|
for file in `sed -n "
|
||||||
|
s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
|
||||||
|
sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
|
||||||
|
# Make sure the directory exists.
|
||||||
|
test -f "$dirpart/$file" && continue
|
||||||
|
fdir=`AS_DIRNAME(["$file"])`
|
||||||
|
AS_MKDIR_P([$dirpart/$fdir])
|
||||||
|
# echo "creating $dirpart/$file"
|
||||||
|
echo '# dummy' > "$dirpart/$file"
|
||||||
|
done
|
||||||
done
|
done
|
||||||
done
|
}
|
||||||
])# _AM_OUTPUT_DEPENDENCY_COMMANDS
|
])# _AM_OUTPUT_DEPENDENCY_COMMANDS
|
||||||
|
|
||||||
|
|
||||||
@ -543,13 +591,13 @@ AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
|
|||||||
# Do all the work for Automake. -*- Autoconf -*-
|
# Do all the work for Automake. -*- Autoconf -*-
|
||||||
|
|
||||||
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
||||||
# 2005, 2006, 2008 Free Software Foundation, Inc.
|
# 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
# serial 13
|
# serial 16
|
||||||
|
|
||||||
# This macro actually does too much. Some checks are only needed if
|
# This macro actually does too much. Some checks are only needed if
|
||||||
# your package does certain things. But this isn't really a big deal.
|
# your package does certain things. But this isn't really a big deal.
|
||||||
@ -566,7 +614,7 @@ AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
|
|||||||
# arguments mandatory, and then we can depend on a new Autoconf
|
# arguments mandatory, and then we can depend on a new Autoconf
|
||||||
# release and drop the old call support.
|
# release and drop the old call support.
|
||||||
AC_DEFUN([AM_INIT_AUTOMAKE],
|
AC_DEFUN([AM_INIT_AUTOMAKE],
|
||||||
[AC_PREREQ([2.60])dnl
|
[AC_PREREQ([2.62])dnl
|
||||||
dnl Autoconf wants to disallow AM_ names. We explicitly allow
|
dnl Autoconf wants to disallow AM_ names. We explicitly allow
|
||||||
dnl the ones we care about.
|
dnl the ones we care about.
|
||||||
m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
|
m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
|
||||||
@ -617,8 +665,8 @@ AM_MISSING_PROG(AUTOCONF, autoconf)
|
|||||||
AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
|
AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
|
||||||
AM_MISSING_PROG(AUTOHEADER, autoheader)
|
AM_MISSING_PROG(AUTOHEADER, autoheader)
|
||||||
AM_MISSING_PROG(MAKEINFO, makeinfo)
|
AM_MISSING_PROG(MAKEINFO, makeinfo)
|
||||||
AM_PROG_INSTALL_SH
|
AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
|
||||||
AM_PROG_INSTALL_STRIP
|
AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
|
||||||
AC_REQUIRE([AM_PROG_MKDIR_P])dnl
|
AC_REQUIRE([AM_PROG_MKDIR_P])dnl
|
||||||
# We need awk for the "check" target. The system "awk" is bad on
|
# We need awk for the "check" target. The system "awk" is bad on
|
||||||
# some platforms.
|
# some platforms.
|
||||||
@ -626,24 +674,37 @@ AC_REQUIRE([AC_PROG_AWK])dnl
|
|||||||
AC_REQUIRE([AC_PROG_MAKE_SET])dnl
|
AC_REQUIRE([AC_PROG_MAKE_SET])dnl
|
||||||
AC_REQUIRE([AM_SET_LEADING_DOT])dnl
|
AC_REQUIRE([AM_SET_LEADING_DOT])dnl
|
||||||
_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
|
_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
|
||||||
[_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
|
[_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
|
||||||
[_AM_PROG_TAR([v7])])])
|
[_AM_PROG_TAR([v7])])])
|
||||||
_AM_IF_OPTION([no-dependencies],,
|
_AM_IF_OPTION([no-dependencies],,
|
||||||
[AC_PROVIDE_IFELSE([AC_PROG_CC],
|
[AC_PROVIDE_IFELSE([AC_PROG_CC],
|
||||||
[_AM_DEPENDENCIES(CC)],
|
[_AM_DEPENDENCIES(CC)],
|
||||||
[define([AC_PROG_CC],
|
[define([AC_PROG_CC],
|
||||||
defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
|
defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
|
||||||
AC_PROVIDE_IFELSE([AC_PROG_CXX],
|
AC_PROVIDE_IFELSE([AC_PROG_CXX],
|
||||||
[_AM_DEPENDENCIES(CXX)],
|
[_AM_DEPENDENCIES(CXX)],
|
||||||
[define([AC_PROG_CXX],
|
[define([AC_PROG_CXX],
|
||||||
defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
|
defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
|
||||||
AC_PROVIDE_IFELSE([AC_PROG_OBJC],
|
AC_PROVIDE_IFELSE([AC_PROG_OBJC],
|
||||||
[_AM_DEPENDENCIES(OBJC)],
|
[_AM_DEPENDENCIES(OBJC)],
|
||||||
[define([AC_PROG_OBJC],
|
[define([AC_PROG_OBJC],
|
||||||
defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
|
defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
|
||||||
])
|
])
|
||||||
|
_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
|
||||||
|
dnl The `parallel-tests' driver may need to know about EXEEXT, so add the
|
||||||
|
dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro
|
||||||
|
dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
|
||||||
|
AC_CONFIG_COMMANDS_PRE(dnl
|
||||||
|
[m4_provide_if([_AM_COMPILER_EXEEXT],
|
||||||
|
[AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
|
||||||
])
|
])
|
||||||
|
|
||||||
|
dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not
|
||||||
|
dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further
|
||||||
|
dnl mangled by Autoconf and run in a shell conditional statement.
|
||||||
|
m4_define([_AC_COMPILER_EXEEXT],
|
||||||
|
m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
|
||||||
|
|
||||||
|
|
||||||
# When config.status generates a header, we must update the stamp-h file.
|
# When config.status generates a header, we must update the stamp-h file.
|
||||||
# This file resides in the same directory as the config header
|
# This file resides in the same directory as the config header
|
||||||
@ -666,18 +727,28 @@ for _am_header in $config_headers :; do
|
|||||||
done
|
done
|
||||||
echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
|
echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
|
||||||
|
|
||||||
# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
|
# Copyright (C) 2001, 2003, 2005, 2008, 2011 Free Software Foundation,
|
||||||
|
# Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
# serial 1
|
||||||
|
|
||||||
# AM_PROG_INSTALL_SH
|
# AM_PROG_INSTALL_SH
|
||||||
# ------------------
|
# ------------------
|
||||||
# Define $install_sh.
|
# Define $install_sh.
|
||||||
AC_DEFUN([AM_PROG_INSTALL_SH],
|
AC_DEFUN([AM_PROG_INSTALL_SH],
|
||||||
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
|
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
|
||||||
install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"}
|
if test x"${install_sh}" != xset; then
|
||||||
|
case $am_aux_dir in
|
||||||
|
*\ * | *\ *)
|
||||||
|
install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;;
|
||||||
|
*)
|
||||||
|
install_sh="\${SHELL} $am_aux_dir/install-sh"
|
||||||
|
esac
|
||||||
|
fi
|
||||||
AC_SUBST(install_sh)])
|
AC_SUBST(install_sh)])
|
||||||
|
|
||||||
# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
|
# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
|
||||||
@ -704,27 +775,38 @@ AC_SUBST([am__leading_dot])])
|
|||||||
# Add --enable-maintainer-mode option to configure. -*- Autoconf -*-
|
# Add --enable-maintainer-mode option to configure. -*- Autoconf -*-
|
||||||
# From Jim Meyering
|
# From Jim Meyering
|
||||||
|
|
||||||
# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005
|
# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008,
|
||||||
# Free Software Foundation, Inc.
|
# 2011 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
# serial 4
|
# serial 5
|
||||||
|
|
||||||
|
# AM_MAINTAINER_MODE([DEFAULT-MODE])
|
||||||
|
# ----------------------------------
|
||||||
|
# Control maintainer-specific portions of Makefiles.
|
||||||
|
# Default is to disable them, unless `enable' is passed literally.
|
||||||
|
# For symmetry, `disable' may be passed as well. Anyway, the user
|
||||||
|
# can override the default with the --enable/--disable switch.
|
||||||
AC_DEFUN([AM_MAINTAINER_MODE],
|
AC_DEFUN([AM_MAINTAINER_MODE],
|
||||||
[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
|
[m4_case(m4_default([$1], [disable]),
|
||||||
dnl maintainer-mode is disabled by default
|
[enable], [m4_define([am_maintainer_other], [disable])],
|
||||||
AC_ARG_ENABLE(maintainer-mode,
|
[disable], [m4_define([am_maintainer_other], [enable])],
|
||||||
[ --enable-maintainer-mode enable make rules and dependencies not useful
|
[m4_define([am_maintainer_other], [enable])
|
||||||
|
m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])])
|
||||||
|
AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
|
||||||
|
dnl maintainer-mode's default is 'disable' unless 'enable' is passed
|
||||||
|
AC_ARG_ENABLE([maintainer-mode],
|
||||||
|
[ --][am_maintainer_other][-maintainer-mode am_maintainer_other make rules and dependencies not useful
|
||||||
(and sometimes confusing) to the casual installer],
|
(and sometimes confusing) to the casual installer],
|
||||||
USE_MAINTAINER_MODE=$enableval,
|
[USE_MAINTAINER_MODE=$enableval],
|
||||||
USE_MAINTAINER_MODE=no)
|
[USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes]))
|
||||||
AC_MSG_RESULT([$USE_MAINTAINER_MODE])
|
AC_MSG_RESULT([$USE_MAINTAINER_MODE])
|
||||||
AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes])
|
AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes])
|
||||||
MAINT=$MAINTAINER_MODE_TRUE
|
MAINT=$MAINTAINER_MODE_TRUE
|
||||||
AC_SUBST(MAINT)dnl
|
AC_SUBST([MAINT])dnl
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -732,13 +814,13 @@ AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
|
|||||||
|
|
||||||
# Check to see how 'make' treats includes. -*- Autoconf -*-
|
# Check to see how 'make' treats includes. -*- Autoconf -*-
|
||||||
|
|
||||||
# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
|
# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
# serial 3
|
# serial 4
|
||||||
|
|
||||||
# AM_MAKE_INCLUDE()
|
# AM_MAKE_INCLUDE()
|
||||||
# -----------------
|
# -----------------
|
||||||
@ -747,7 +829,7 @@ AC_DEFUN([AM_MAKE_INCLUDE],
|
|||||||
[am_make=${MAKE-make}
|
[am_make=${MAKE-make}
|
||||||
cat > confinc << 'END'
|
cat > confinc << 'END'
|
||||||
am__doit:
|
am__doit:
|
||||||
@echo done
|
@echo this is the am__doit target
|
||||||
.PHONY: am__doit
|
.PHONY: am__doit
|
||||||
END
|
END
|
||||||
# If we don't find an include directive, just comment out the code.
|
# If we don't find an include directive, just comment out the code.
|
||||||
@ -757,24 +839,24 @@ am__quote=
|
|||||||
_am_result=none
|
_am_result=none
|
||||||
# First try GNU make style include.
|
# First try GNU make style include.
|
||||||
echo "include confinc" > confmf
|
echo "include confinc" > confmf
|
||||||
# We grep out `Entering directory' and `Leaving directory'
|
# Ignore all kinds of additional output from `make'.
|
||||||
# messages which can occur if `w' ends up in MAKEFLAGS.
|
case `$am_make -s -f confmf 2> /dev/null` in #(
|
||||||
# In particular we don't look at `^make:' because GNU make might
|
*the\ am__doit\ target*)
|
||||||
# be invoked under some other name (usually "gmake"), in which
|
am__include=include
|
||||||
# case it prints its new name instead of `make'.
|
am__quote=
|
||||||
if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
|
_am_result=GNU
|
||||||
am__include=include
|
;;
|
||||||
am__quote=
|
esac
|
||||||
_am_result=GNU
|
|
||||||
fi
|
|
||||||
# Now try BSD make style include.
|
# Now try BSD make style include.
|
||||||
if test "$am__include" = "#"; then
|
if test "$am__include" = "#"; then
|
||||||
echo '.include "confinc"' > confmf
|
echo '.include "confinc"' > confmf
|
||||||
if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
|
case `$am_make -s -f confmf 2> /dev/null` in #(
|
||||||
am__include=.include
|
*the\ am__doit\ target*)
|
||||||
am__quote="\""
|
am__include=.include
|
||||||
_am_result=BSD
|
am__quote="\""
|
||||||
fi
|
_am_result=BSD
|
||||||
|
;;
|
||||||
|
esac
|
||||||
fi
|
fi
|
||||||
AC_SUBST([am__include])
|
AC_SUBST([am__include])
|
||||||
AC_SUBST([am__quote])
|
AC_SUBST([am__quote])
|
||||||
@ -784,14 +866,14 @@ rm -f confinc confmf
|
|||||||
|
|
||||||
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
|
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
|
||||||
|
|
||||||
# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005
|
# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008
|
||||||
# Free Software Foundation, Inc.
|
# Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
# serial 5
|
# serial 6
|
||||||
|
|
||||||
# AM_MISSING_PROG(NAME, PROGRAM)
|
# AM_MISSING_PROG(NAME, PROGRAM)
|
||||||
# ------------------------------
|
# ------------------------------
|
||||||
@ -808,7 +890,14 @@ AC_SUBST($1)])
|
|||||||
AC_DEFUN([AM_MISSING_HAS_RUN],
|
AC_DEFUN([AM_MISSING_HAS_RUN],
|
||||||
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
|
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
|
||||||
AC_REQUIRE_AUX_FILE([missing])dnl
|
AC_REQUIRE_AUX_FILE([missing])dnl
|
||||||
test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
|
if test x"${MISSING+set}" != xset; then
|
||||||
|
case $am_aux_dir in
|
||||||
|
*\ * | *\ *)
|
||||||
|
MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;;
|
||||||
|
*)
|
||||||
|
MISSING="\${SHELL} $am_aux_dir/missing" ;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
# Use eval to expand $SHELL
|
# Use eval to expand $SHELL
|
||||||
if eval "$MISSING --run true"; then
|
if eval "$MISSING --run true"; then
|
||||||
am_missing_run="$MISSING --run "
|
am_missing_run="$MISSING --run "
|
||||||
@ -818,12 +907,15 @@ else
|
|||||||
fi
|
fi
|
||||||
])
|
])
|
||||||
|
|
||||||
# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
|
# Copyright (C) 2003, 2004, 2005, 2006, 2011 Free Software Foundation,
|
||||||
|
# Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
# serial 1
|
||||||
|
|
||||||
# AM_PROG_MKDIR_P
|
# AM_PROG_MKDIR_P
|
||||||
# ---------------
|
# ---------------
|
||||||
# Check for `mkdir -p'.
|
# Check for `mkdir -p'.
|
||||||
@ -846,13 +938,14 @@ esac
|
|||||||
|
|
||||||
# Helper functions for option handling. -*- Autoconf -*-
|
# Helper functions for option handling. -*- Autoconf -*-
|
||||||
|
|
||||||
# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
|
# Copyright (C) 2001, 2002, 2003, 2005, 2008, 2010 Free Software
|
||||||
|
# Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
# serial 3
|
# serial 5
|
||||||
|
|
||||||
# _AM_MANGLE_OPTION(NAME)
|
# _AM_MANGLE_OPTION(NAME)
|
||||||
# -----------------------
|
# -----------------------
|
||||||
@ -860,16 +953,16 @@ AC_DEFUN([_AM_MANGLE_OPTION],
|
|||||||
[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
|
[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
|
||||||
|
|
||||||
# _AM_SET_OPTION(NAME)
|
# _AM_SET_OPTION(NAME)
|
||||||
# ------------------------------
|
# --------------------
|
||||||
# Set option NAME. Presently that only means defining a flag for this option.
|
# Set option NAME. Presently that only means defining a flag for this option.
|
||||||
AC_DEFUN([_AM_SET_OPTION],
|
AC_DEFUN([_AM_SET_OPTION],
|
||||||
[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
|
[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
|
||||||
|
|
||||||
# _AM_SET_OPTIONS(OPTIONS)
|
# _AM_SET_OPTIONS(OPTIONS)
|
||||||
# ----------------------------------
|
# ------------------------
|
||||||
# OPTIONS is a space-separated list of Automake options.
|
# OPTIONS is a space-separated list of Automake options.
|
||||||
AC_DEFUN([_AM_SET_OPTIONS],
|
AC_DEFUN([_AM_SET_OPTIONS],
|
||||||
[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
|
[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
|
||||||
|
|
||||||
# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
|
# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
|
||||||
# -------------------------------------------
|
# -------------------------------------------
|
||||||
@ -879,14 +972,14 @@ AC_DEFUN([_AM_IF_OPTION],
|
|||||||
|
|
||||||
# Check to make sure that the build environment is sane. -*- Autoconf -*-
|
# Check to make sure that the build environment is sane. -*- Autoconf -*-
|
||||||
|
|
||||||
# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
|
# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008
|
||||||
# Free Software Foundation, Inc.
|
# Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
# serial 4
|
# serial 5
|
||||||
|
|
||||||
# AM_SANITY_CHECK
|
# AM_SANITY_CHECK
|
||||||
# ---------------
|
# ---------------
|
||||||
@ -895,16 +988,29 @@ AC_DEFUN([AM_SANITY_CHECK],
|
|||||||
# Just in case
|
# Just in case
|
||||||
sleep 1
|
sleep 1
|
||||||
echo timestamp > conftest.file
|
echo timestamp > conftest.file
|
||||||
|
# Reject unsafe characters in $srcdir or the absolute working directory
|
||||||
|
# name. Accept space and tab only in the latter.
|
||||||
|
am_lf='
|
||||||
|
'
|
||||||
|
case `pwd` in
|
||||||
|
*[[\\\"\#\$\&\'\`$am_lf]]*)
|
||||||
|
AC_MSG_ERROR([unsafe absolute working directory name]);;
|
||||||
|
esac
|
||||||
|
case $srcdir in
|
||||||
|
*[[\\\"\#\$\&\'\`$am_lf\ \ ]]*)
|
||||||
|
AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);;
|
||||||
|
esac
|
||||||
|
|
||||||
# Do `set' in a subshell so we don't clobber the current shell's
|
# Do `set' in a subshell so we don't clobber the current shell's
|
||||||
# arguments. Must try -L first in case configure is actually a
|
# arguments. Must try -L first in case configure is actually a
|
||||||
# symlink; some systems play weird games with the mod time of symlinks
|
# symlink; some systems play weird games with the mod time of symlinks
|
||||||
# (eg FreeBSD returns the mod time of the symlink's containing
|
# (eg FreeBSD returns the mod time of the symlink's containing
|
||||||
# directory).
|
# directory).
|
||||||
if (
|
if (
|
||||||
set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
|
set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null`
|
||||||
if test "$[*]" = "X"; then
|
if test "$[*]" = "X"; then
|
||||||
# -L didn't work.
|
# -L didn't work.
|
||||||
set X `ls -t $srcdir/configure conftest.file`
|
set X `ls -t "$srcdir/configure" conftest.file`
|
||||||
fi
|
fi
|
||||||
rm -f conftest.file
|
rm -f conftest.file
|
||||||
if test "$[*]" != "X $srcdir/configure conftest.file" \
|
if test "$[*]" != "X $srcdir/configure conftest.file" \
|
||||||
@ -929,12 +1035,14 @@ Check your system clock])
|
|||||||
fi
|
fi
|
||||||
AC_MSG_RESULT(yes)])
|
AC_MSG_RESULT(yes)])
|
||||||
|
|
||||||
# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
|
# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
# serial 1
|
||||||
|
|
||||||
# AM_PROG_INSTALL_STRIP
|
# AM_PROG_INSTALL_STRIP
|
||||||
# ---------------------
|
# ---------------------
|
||||||
# One issue with vendor `install' (even GNU) is that you can't
|
# One issue with vendor `install' (even GNU) is that you can't
|
||||||
@ -957,21 +1065,28 @@ fi
|
|||||||
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
|
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
|
||||||
AC_SUBST([INSTALL_STRIP_PROGRAM])])
|
AC_SUBST([INSTALL_STRIP_PROGRAM])])
|
||||||
|
|
||||||
# Copyright (C) 2006 Free Software Foundation, Inc.
|
# Copyright (C) 2006, 2008, 2010 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
# serial 3
|
||||||
|
|
||||||
# _AM_SUBST_NOTMAKE(VARIABLE)
|
# _AM_SUBST_NOTMAKE(VARIABLE)
|
||||||
# ---------------------------
|
# ---------------------------
|
||||||
# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
|
# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
|
||||||
# This macro is traced by Automake.
|
# This macro is traced by Automake.
|
||||||
AC_DEFUN([_AM_SUBST_NOTMAKE])
|
AC_DEFUN([_AM_SUBST_NOTMAKE])
|
||||||
|
|
||||||
|
# AM_SUBST_NOTMAKE(VARIABLE)
|
||||||
|
# --------------------------
|
||||||
|
# Public sister of _AM_SUBST_NOTMAKE.
|
||||||
|
AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
|
||||||
|
|
||||||
# Check how to create a tarball. -*- Autoconf -*-
|
# Check how to create a tarball. -*- Autoconf -*-
|
||||||
|
|
||||||
# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
|
# Copyright (C) 2004, 2005, 2012 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
@ -993,10 +1108,11 @@ AC_DEFUN([_AM_SUBST_NOTMAKE])
|
|||||||
# a tarball read from stdin.
|
# a tarball read from stdin.
|
||||||
# $(am__untar) < result.tar
|
# $(am__untar) < result.tar
|
||||||
AC_DEFUN([_AM_PROG_TAR],
|
AC_DEFUN([_AM_PROG_TAR],
|
||||||
[# Always define AMTAR for backward compatibility.
|
[# Always define AMTAR for backward compatibility. Yes, it's still used
|
||||||
AM_MISSING_PROG([AMTAR], [tar])
|
# in the wild :-( We should find a proper way to deprecate it ...
|
||||||
|
AC_SUBST([AMTAR], ['$${TAR-tar}'])
|
||||||
m4_if([$1], [v7],
|
m4_if([$1], [v7],
|
||||||
[am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
|
[am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
|
||||||
[m4_case([$1], [ustar],, [pax],,
|
[m4_case([$1], [ustar],, [pax],,
|
||||||
[m4_fatal([Unknown tar format])])
|
[m4_fatal([Unknown tar format])])
|
||||||
AC_MSG_CHECKING([how to create a $1 tar archive])
|
AC_MSG_CHECKING([how to create a $1 tar archive])
|
||||||
|
2
autogen.sh
Normal file → Executable file
@ -7,4 +7,4 @@
|
|||||||
aclocal
|
aclocal
|
||||||
autoconf
|
autoconf
|
||||||
autoheader
|
autoheader
|
||||||
automake -a
|
automake -a -Woverride -Wportability
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
#
|
#
|
||||||
## Copyright (C) 2001-2008 Graeme Walker <graeme_walker@users.sourceforge.net>
|
## Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>
|
||||||
##
|
##
|
||||||
## This program is free software: you can redistribute it and/or modify
|
## This program is free software: you can redistribute it and/or modify
|
||||||
## it under the terms of the GNU General Public License as published by
|
## it under the terms of the GNU General Public License as published by
|
||||||
## the Free Software Foundation, either version 3 of the License, or
|
## the Free Software Foundation, either version 3 of the License, or
|
||||||
## (at your option) any later version.
|
## (at your option) any later version.
|
||||||
##
|
##
|
||||||
## This program is distributed in the hope that it will be useful,
|
## This program is distributed in the hope that it will be useful,
|
||||||
@ -26,6 +26,7 @@ endif
|
|||||||
EXTRA_DIST = \
|
EXTRA_DIST = \
|
||||||
emailrelay.sh_ \
|
emailrelay.sh_ \
|
||||||
doxygen.sh_ \
|
doxygen.sh_ \
|
||||||
|
doxygen_fixup.pl_ \
|
||||||
txt2html.sh_ \
|
txt2html.sh_ \
|
||||||
txt2mu.sh_ \
|
txt2mu.sh_ \
|
||||||
mu2html.sh_ \
|
mu2html.sh_ \
|
||||||
@ -37,18 +38,21 @@ EXTRA_DIST = \
|
|||||||
emailrelay-process.sh_ \
|
emailrelay-process.sh_ \
|
||||||
emailrelay-runperl.js \
|
emailrelay-runperl.js \
|
||||||
emailrelay-resubmit.js \
|
emailrelay-resubmit.js \
|
||||||
emailrelay-change-auth.js \
|
emailrelay-edit-content.js \
|
||||||
|
emailrelay-edit-envelope.js \
|
||||||
emailrelay-submit.sh_ \
|
emailrelay-submit.sh_ \
|
||||||
emailrelay-multicast.sh_ \
|
emailrelay-multicast.sh_ \
|
||||||
make-setup.sh_ \
|
make-setup.sh_ \
|
||||||
make-qt-enabled.sh_ \
|
make-qt-enabled.sh_ \
|
||||||
make-bundle.sh_ \
|
make-bundle.sh_ \
|
||||||
|
configure-dev.sh \
|
||||||
|
configure-fhs.sh \
|
||||||
configure-mac.sh \
|
configure-mac.sh \
|
||||||
startup-mac.plist \
|
startup-mac.plist
|
||||||
fragment.pl_
|
|
||||||
|
|
||||||
work_scripts = \
|
work_scripts = \
|
||||||
doxygen.sh \
|
doxygen.sh \
|
||||||
|
doxygen_fixup.pl \
|
||||||
txt2mu.sh \
|
txt2mu.sh \
|
||||||
mu2html.sh \
|
mu2html.sh \
|
||||||
mu2docbook.sh \
|
mu2docbook.sh \
|
||||||
@ -57,13 +61,13 @@ work_scripts = \
|
|||||||
emailrelay.sh \
|
emailrelay.sh \
|
||||||
make-setup.sh \
|
make-setup.sh \
|
||||||
make-qt-enabled.sh \
|
make-qt-enabled.sh \
|
||||||
make-bundle.sh \
|
make-bundle.sh
|
||||||
fragment.pl
|
|
||||||
|
|
||||||
noinst_SCRIPTS = \
|
noinst_SCRIPTS = \
|
||||||
emailrelay-runperl.js \
|
emailrelay-runperl.js \
|
||||||
emailrelay-resubmit.js \
|
emailrelay-resubmit.js \
|
||||||
emailrelay-change-auth.js \
|
emailrelay-edit-content.js \
|
||||||
|
emailrelay-edit-envelope.js \
|
||||||
$(work_scripts)
|
$(work_scripts)
|
||||||
|
|
||||||
e_examples_DATA = \
|
e_examples_DATA = \
|
||||||
@ -74,9 +78,9 @@ e_examples_DATA = \
|
|||||||
emailrelay-submit.sh \
|
emailrelay-submit.sh \
|
||||||
emailrelay-multicast.sh
|
emailrelay-multicast.sh
|
||||||
|
|
||||||
CLEANFILES = $(e_init_SCRIPTS) $(e_examples_DATA) $(work_scripts) $(e_init_SCRIPTS)
|
CLEANFILES = $(e_init_SCRIPTS) $(e_examples_DATA) $(work_scripts)
|
||||||
|
|
||||||
SUFFIXES = .sh_ .sh
|
SUFFIXES = .sh_ .sh .pl_ .pl
|
||||||
|
|
||||||
.sh_.sh:
|
.sh_.sh:
|
||||||
cat "$(top_srcdir)/bin/$*.sh_" | sed "s%__SPOOL_DIR__%${e_spooldir}%g;s%__SBIN_DIR__%${sbindir}%g;s%__SYSCONF_DIR__%${e_sysconfdir}%g;"'s/\[:digit:\]/0-9/g;s/\[:space:\]/ \\t/g' > "$*.tmp" && mv "$*.tmp" "$*.sh"
|
cat "$(top_srcdir)/bin/$*.sh_" | sed "s%__SPOOL_DIR__%${e_spooldir}%g;s%__SBIN_DIR__%${sbindir}%g;s%__SYSCONF_DIR__%${e_sysconfdir}%g;"'s/\[:digit:\]/0-9/g;s/\[:space:\]/ \\t/g' > "$*.tmp" && mv "$*.tmp" "$*.sh"
|
||||||
|
205
bin/Makefile.in
@ -1,8 +1,9 @@
|
|||||||
# Makefile.in generated by automake 1.10.1 from Makefile.am.
|
# Makefile.in generated by automake 1.11.3 from Makefile.am.
|
||||||
# @configure_input@
|
# @configure_input@
|
||||||
|
|
||||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||||
# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
|
# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
|
||||||
|
# Foundation, Inc.
|
||||||
# This Makefile.in is free software; the Free Software Foundation
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
@ -20,8 +21,9 @@
|
|||||||
|
|
||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
pkgdatadir = $(datadir)/@PACKAGE@
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
pkglibdir = $(libdir)/@PACKAGE@
|
|
||||||
pkgincludedir = $(includedir)/@PACKAGE@
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
|
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||||
install_sh_DATA = $(install_sh) -c -m 644
|
install_sh_DATA = $(install_sh) -c -m 644
|
||||||
install_sh_PROGRAM = $(install_sh) -c
|
install_sh_PROGRAM = $(install_sh) -c
|
||||||
@ -44,20 +46,39 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
|||||||
mkinstalldirs = $(install_sh) -d
|
mkinstalldirs = $(install_sh) -d
|
||||||
CONFIG_HEADER = $(top_builddir)/config.h
|
CONFIG_HEADER = $(top_builddir)/config.h
|
||||||
CONFIG_CLEAN_FILES =
|
CONFIG_CLEAN_FILES =
|
||||||
am__installdirs = "$(DESTDIR)$(e_initdir)" \
|
CONFIG_CLEAN_VPATH_FILES =
|
||||||
"$(DESTDIR)$(e_examplesdir)" "$(DESTDIR)$(e_initdir)"
|
|
||||||
e_initSCRIPT_INSTALL = $(INSTALL_SCRIPT)
|
|
||||||
SCRIPTS = $(e_init_SCRIPTS) $(noinst_SCRIPTS)
|
|
||||||
SOURCES =
|
|
||||||
DIST_SOURCES =
|
|
||||||
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
||||||
am__vpath_adj = case $$p in \
|
am__vpath_adj = case $$p in \
|
||||||
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
||||||
*) f=$$p;; \
|
*) f=$$p;; \
|
||||||
esac;
|
esac;
|
||||||
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
|
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
|
||||||
e_examplesDATA_INSTALL = $(INSTALL_DATA)
|
am__install_max = 40
|
||||||
e_initDATA_INSTALL = $(INSTALL_DATA)
|
am__nobase_strip_setup = \
|
||||||
|
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
|
||||||
|
am__nobase_strip = \
|
||||||
|
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
|
||||||
|
am__nobase_list = $(am__nobase_strip_setup); \
|
||||||
|
for p in $$list; do echo "$$p $$p"; done | \
|
||||||
|
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
|
||||||
|
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
|
||||||
|
if (++n[$$2] == $(am__install_max)) \
|
||||||
|
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
|
||||||
|
END { for (dir in files) print dir, files[dir] }'
|
||||||
|
am__base_list = \
|
||||||
|
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
|
||||||
|
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
|
||||||
|
am__uninstall_files_from_dir = { \
|
||||||
|
test -z "$$files" \
|
||||||
|
|| { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|
||||||
|
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
|
||||||
|
$(am__cd) "$$dir" && rm -f $$files; }; \
|
||||||
|
}
|
||||||
|
am__installdirs = "$(DESTDIR)$(e_initdir)" \
|
||||||
|
"$(DESTDIR)$(e_examplesdir)" "$(DESTDIR)$(e_initdir)"
|
||||||
|
SCRIPTS = $(e_init_SCRIPTS) $(noinst_SCRIPTS)
|
||||||
|
SOURCES =
|
||||||
|
DIST_SOURCES =
|
||||||
DATA = $(e_examples_DATA) $(e_init_DATA)
|
DATA = $(e_examples_DATA) $(e_init_DATA)
|
||||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||||
ACLOCAL = @ACLOCAL@
|
ACLOCAL = @ACLOCAL@
|
||||||
@ -84,9 +105,9 @@ ECHO_N = @ECHO_N@
|
|||||||
ECHO_T = @ECHO_T@
|
ECHO_T = @ECHO_T@
|
||||||
EGREP = @EGREP@
|
EGREP = @EGREP@
|
||||||
EXEEXT = @EXEEXT@
|
EXEEXT = @EXEEXT@
|
||||||
FRAGMENTS_LIST = @FRAGMENTS_LIST@
|
|
||||||
GREP = @GREP@
|
GREP = @GREP@
|
||||||
GZIP = @GZIP@
|
GZIP = @GZIP@
|
||||||
|
G_CAPABILITIES = @G_CAPABILITIES@
|
||||||
HAVE_DOXYGEN = @HAVE_DOXYGEN@
|
HAVE_DOXYGEN = @HAVE_DOXYGEN@
|
||||||
HAVE_MAN2HTML = @HAVE_MAN2HTML@
|
HAVE_MAN2HTML = @HAVE_MAN2HTML@
|
||||||
INSTALL = @INSTALL@
|
INSTALL = @INSTALL@
|
||||||
@ -109,9 +130,14 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
|||||||
PACKAGE_NAME = @PACKAGE_NAME@
|
PACKAGE_NAME = @PACKAGE_NAME@
|
||||||
PACKAGE_STRING = @PACKAGE_STRING@
|
PACKAGE_STRING = @PACKAGE_STRING@
|
||||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||||
|
PACKAGE_URL = @PACKAGE_URL@
|
||||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
|
PAM_INCLUDE = @PAM_INCLUDE@
|
||||||
|
PAM_LIBS = @PAM_LIBS@
|
||||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
PKG_CONFIG = @PKG_CONFIG@
|
PKG_CONFIG = @PKG_CONFIG@
|
||||||
|
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
|
||||||
|
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
|
||||||
QT_CFLAGS = @QT_CFLAGS@
|
QT_CFLAGS = @QT_CFLAGS@
|
||||||
QT_LIBS = @QT_LIBS@
|
QT_LIBS = @QT_LIBS@
|
||||||
RANLIB = @RANLIB@
|
RANLIB = @RANLIB@
|
||||||
@ -122,6 +148,7 @@ STATIC_END = @STATIC_END@
|
|||||||
STATIC_START = @STATIC_START@
|
STATIC_START = @STATIC_START@
|
||||||
STRIP = @STRIP@
|
STRIP = @STRIP@
|
||||||
VERSION = @VERSION@
|
VERSION = @VERSION@
|
||||||
|
ZLIB_LIBS = @ZLIB_LIBS@
|
||||||
abs_builddir = @abs_builddir@
|
abs_builddir = @abs_builddir@
|
||||||
abs_srcdir = @abs_srcdir@
|
abs_srcdir = @abs_srcdir@
|
||||||
abs_top_builddir = @abs_top_builddir@
|
abs_top_builddir = @abs_top_builddir@
|
||||||
@ -142,8 +169,10 @@ docdir = @docdir@
|
|||||||
dvidir = @dvidir@
|
dvidir = @dvidir@
|
||||||
e_docdir = @e_docdir@
|
e_docdir = @e_docdir@
|
||||||
e_examplesdir = @e_examplesdir@
|
e_examplesdir = @e_examplesdir@
|
||||||
|
e_icondir = @e_icondir@
|
||||||
e_initdir = @e_initdir@
|
e_initdir = @e_initdir@
|
||||||
e_libexecdir = @e_libexecdir@
|
e_libexecdir = @e_libexecdir@
|
||||||
|
e_pamdir = @e_pamdir@
|
||||||
e_qtmoc = @e_qtmoc@
|
e_qtmoc = @e_qtmoc@
|
||||||
e_spooldir = @e_spooldir@
|
e_spooldir = @e_spooldir@
|
||||||
e_sysconfdir = @e_sysconfdir@
|
e_sysconfdir = @e_sysconfdir@
|
||||||
@ -169,6 +198,7 @@ sharedstatedir = @sharedstatedir@
|
|||||||
srcdir = @srcdir@
|
srcdir = @srcdir@
|
||||||
sysconfdir = @sysconfdir@
|
sysconfdir = @sysconfdir@
|
||||||
target_alias = @target_alias@
|
target_alias = @target_alias@
|
||||||
|
top_build_prefix = @top_build_prefix@
|
||||||
top_builddir = @top_builddir@
|
top_builddir = @top_builddir@
|
||||||
top_srcdir = @top_srcdir@
|
top_srcdir = @top_srcdir@
|
||||||
@MAC_FALSE@e_init_SCRIPTS = emailrelay
|
@MAC_FALSE@e_init_SCRIPTS = emailrelay
|
||||||
@ -178,6 +208,7 @@ top_srcdir = @top_srcdir@
|
|||||||
EXTRA_DIST = \
|
EXTRA_DIST = \
|
||||||
emailrelay.sh_ \
|
emailrelay.sh_ \
|
||||||
doxygen.sh_ \
|
doxygen.sh_ \
|
||||||
|
doxygen_fixup.pl_ \
|
||||||
txt2html.sh_ \
|
txt2html.sh_ \
|
||||||
txt2mu.sh_ \
|
txt2mu.sh_ \
|
||||||
mu2html.sh_ \
|
mu2html.sh_ \
|
||||||
@ -189,18 +220,21 @@ EXTRA_DIST = \
|
|||||||
emailrelay-process.sh_ \
|
emailrelay-process.sh_ \
|
||||||
emailrelay-runperl.js \
|
emailrelay-runperl.js \
|
||||||
emailrelay-resubmit.js \
|
emailrelay-resubmit.js \
|
||||||
emailrelay-change-auth.js \
|
emailrelay-edit-content.js \
|
||||||
|
emailrelay-edit-envelope.js \
|
||||||
emailrelay-submit.sh_ \
|
emailrelay-submit.sh_ \
|
||||||
emailrelay-multicast.sh_ \
|
emailrelay-multicast.sh_ \
|
||||||
make-setup.sh_ \
|
make-setup.sh_ \
|
||||||
make-qt-enabled.sh_ \
|
make-qt-enabled.sh_ \
|
||||||
make-bundle.sh_ \
|
make-bundle.sh_ \
|
||||||
|
configure-dev.sh \
|
||||||
|
configure-fhs.sh \
|
||||||
configure-mac.sh \
|
configure-mac.sh \
|
||||||
startup-mac.plist \
|
startup-mac.plist
|
||||||
fragment.pl_
|
|
||||||
|
|
||||||
work_scripts = \
|
work_scripts = \
|
||||||
doxygen.sh \
|
doxygen.sh \
|
||||||
|
doxygen_fixup.pl \
|
||||||
txt2mu.sh \
|
txt2mu.sh \
|
||||||
mu2html.sh \
|
mu2html.sh \
|
||||||
mu2docbook.sh \
|
mu2docbook.sh \
|
||||||
@ -209,13 +243,13 @@ work_scripts = \
|
|||||||
emailrelay.sh \
|
emailrelay.sh \
|
||||||
make-setup.sh \
|
make-setup.sh \
|
||||||
make-qt-enabled.sh \
|
make-qt-enabled.sh \
|
||||||
make-bundle.sh \
|
make-bundle.sh
|
||||||
fragment.pl
|
|
||||||
|
|
||||||
noinst_SCRIPTS = \
|
noinst_SCRIPTS = \
|
||||||
emailrelay-runperl.js \
|
emailrelay-runperl.js \
|
||||||
emailrelay-resubmit.js \
|
emailrelay-resubmit.js \
|
||||||
emailrelay-change-auth.js \
|
emailrelay-edit-content.js \
|
||||||
|
emailrelay-edit-envelope.js \
|
||||||
$(work_scripts)
|
$(work_scripts)
|
||||||
|
|
||||||
e_examples_DATA = \
|
e_examples_DATA = \
|
||||||
@ -226,24 +260,24 @@ e_examples_DATA = \
|
|||||||
emailrelay-submit.sh \
|
emailrelay-submit.sh \
|
||||||
emailrelay-multicast.sh
|
emailrelay-multicast.sh
|
||||||
|
|
||||||
CLEANFILES = $(e_init_SCRIPTS) $(e_examples_DATA) $(work_scripts) $(e_init_SCRIPTS)
|
CLEANFILES = $(e_init_SCRIPTS) $(e_examples_DATA) $(work_scripts)
|
||||||
SUFFIXES = .sh_ .sh
|
SUFFIXES = .sh_ .sh .pl_ .pl
|
||||||
all: all-am
|
all: all-am
|
||||||
|
|
||||||
.SUFFIXES:
|
.SUFFIXES:
|
||||||
.SUFFIXES: .sh_ .sh .pl .pl_
|
.SUFFIXES: .sh_ .sh .pl_ .pl
|
||||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||||
@for dep in $?; do \
|
@for dep in $?; do \
|
||||||
case '$(am__configure_deps)' in \
|
case '$(am__configure_deps)' in \
|
||||||
*$$dep*) \
|
*$$dep*) \
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||||
&& exit 0; \
|
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||||
exit 1;; \
|
exit 1;; \
|
||||||
esac; \
|
esac; \
|
||||||
done; \
|
done; \
|
||||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu bin/Makefile'; \
|
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu bin/Makefile'; \
|
||||||
cd $(top_srcdir) && \
|
$(am__cd) $(top_srcdir) && \
|
||||||
$(AUTOMAKE) --gnu bin/Makefile
|
$(AUTOMAKE) --gnu bin/Makefile
|
||||||
.PRECIOUS: Makefile
|
.PRECIOUS: Makefile
|
||||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||||
@case '$?' in \
|
@case '$?' in \
|
||||||
@ -261,59 +295,75 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
|||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
$(am__aclocal_m4_deps):
|
||||||
install-e_initSCRIPTS: $(e_init_SCRIPTS)
|
install-e_initSCRIPTS: $(e_init_SCRIPTS)
|
||||||
@$(NORMAL_INSTALL)
|
@$(NORMAL_INSTALL)
|
||||||
test -z "$(e_initdir)" || $(MKDIR_P) "$(DESTDIR)$(e_initdir)"
|
test -z "$(e_initdir)" || $(MKDIR_P) "$(DESTDIR)$(e_initdir)"
|
||||||
@list='$(e_init_SCRIPTS)'; for p in $$list; do \
|
@list='$(e_init_SCRIPTS)'; test -n "$(e_initdir)" || list=; \
|
||||||
|
for p in $$list; do \
|
||||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||||
if test -f $$d$$p; then \
|
if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
|
||||||
f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
|
done | \
|
||||||
echo " $(e_initSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(e_initdir)/$$f'"; \
|
sed -e 'p;s,.*/,,;n' \
|
||||||
$(e_initSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(e_initdir)/$$f"; \
|
-e 'h;s|.*|.|' \
|
||||||
else :; fi; \
|
-e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
|
||||||
done
|
$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
|
||||||
|
{ d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
|
||||||
|
if ($$2 == $$4) { files[d] = files[d] " " $$1; \
|
||||||
|
if (++n[d] == $(am__install_max)) { \
|
||||||
|
print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
|
||||||
|
else { print "f", d "/" $$4, $$1 } } \
|
||||||
|
END { for (d in files) print "f", d, files[d] }' | \
|
||||||
|
while read type dir files; do \
|
||||||
|
if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
|
||||||
|
test -z "$$files" || { \
|
||||||
|
echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(e_initdir)$$dir'"; \
|
||||||
|
$(INSTALL_SCRIPT) $$files "$(DESTDIR)$(e_initdir)$$dir" || exit $$?; \
|
||||||
|
} \
|
||||||
|
; done
|
||||||
|
|
||||||
uninstall-e_initSCRIPTS:
|
uninstall-e_initSCRIPTS:
|
||||||
@$(NORMAL_UNINSTALL)
|
@$(NORMAL_UNINSTALL)
|
||||||
@list='$(e_init_SCRIPTS)'; for p in $$list; do \
|
@list='$(e_init_SCRIPTS)'; test -n "$(e_initdir)" || exit 0; \
|
||||||
f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
|
files=`for p in $$list; do echo "$$p"; done | \
|
||||||
echo " rm -f '$(DESTDIR)$(e_initdir)/$$f'"; \
|
sed -e 's,.*/,,;$(transform)'`; \
|
||||||
rm -f "$(DESTDIR)$(e_initdir)/$$f"; \
|
dir='$(DESTDIR)$(e_initdir)'; $(am__uninstall_files_from_dir)
|
||||||
done
|
|
||||||
install-e_examplesDATA: $(e_examples_DATA)
|
install-e_examplesDATA: $(e_examples_DATA)
|
||||||
@$(NORMAL_INSTALL)
|
@$(NORMAL_INSTALL)
|
||||||
test -z "$(e_examplesdir)" || $(MKDIR_P) "$(DESTDIR)$(e_examplesdir)"
|
test -z "$(e_examplesdir)" || $(MKDIR_P) "$(DESTDIR)$(e_examplesdir)"
|
||||||
@list='$(e_examples_DATA)'; for p in $$list; do \
|
@list='$(e_examples_DATA)'; test -n "$(e_examplesdir)" || list=; \
|
||||||
|
for p in $$list; do \
|
||||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||||
f=$(am__strip_dir) \
|
echo "$$d$$p"; \
|
||||||
echo " $(e_examplesDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(e_examplesdir)/$$f'"; \
|
done | $(am__base_list) | \
|
||||||
$(e_examplesDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(e_examplesdir)/$$f"; \
|
while read files; do \
|
||||||
|
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(e_examplesdir)'"; \
|
||||||
|
$(INSTALL_DATA) $$files "$(DESTDIR)$(e_examplesdir)" || exit $$?; \
|
||||||
done
|
done
|
||||||
|
|
||||||
uninstall-e_examplesDATA:
|
uninstall-e_examplesDATA:
|
||||||
@$(NORMAL_UNINSTALL)
|
@$(NORMAL_UNINSTALL)
|
||||||
@list='$(e_examples_DATA)'; for p in $$list; do \
|
@list='$(e_examples_DATA)'; test -n "$(e_examplesdir)" || list=; \
|
||||||
f=$(am__strip_dir) \
|
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
|
||||||
echo " rm -f '$(DESTDIR)$(e_examplesdir)/$$f'"; \
|
dir='$(DESTDIR)$(e_examplesdir)'; $(am__uninstall_files_from_dir)
|
||||||
rm -f "$(DESTDIR)$(e_examplesdir)/$$f"; \
|
|
||||||
done
|
|
||||||
install-e_initDATA: $(e_init_DATA)
|
install-e_initDATA: $(e_init_DATA)
|
||||||
@$(NORMAL_INSTALL)
|
@$(NORMAL_INSTALL)
|
||||||
test -z "$(e_initdir)" || $(MKDIR_P) "$(DESTDIR)$(e_initdir)"
|
test -z "$(e_initdir)" || $(MKDIR_P) "$(DESTDIR)$(e_initdir)"
|
||||||
@list='$(e_init_DATA)'; for p in $$list; do \
|
@list='$(e_init_DATA)'; test -n "$(e_initdir)" || list=; \
|
||||||
|
for p in $$list; do \
|
||||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||||
f=$(am__strip_dir) \
|
echo "$$d$$p"; \
|
||||||
echo " $(e_initDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(e_initdir)/$$f'"; \
|
done | $(am__base_list) | \
|
||||||
$(e_initDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(e_initdir)/$$f"; \
|
while read files; do \
|
||||||
|
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(e_initdir)'"; \
|
||||||
|
$(INSTALL_DATA) $$files "$(DESTDIR)$(e_initdir)" || exit $$?; \
|
||||||
done
|
done
|
||||||
|
|
||||||
uninstall-e_initDATA:
|
uninstall-e_initDATA:
|
||||||
@$(NORMAL_UNINSTALL)
|
@$(NORMAL_UNINSTALL)
|
||||||
@list='$(e_init_DATA)'; for p in $$list; do \
|
@list='$(e_init_DATA)'; test -n "$(e_initdir)" || list=; \
|
||||||
f=$(am__strip_dir) \
|
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
|
||||||
echo " rm -f '$(DESTDIR)$(e_initdir)/$$f'"; \
|
dir='$(DESTDIR)$(e_initdir)'; $(am__uninstall_files_from_dir)
|
||||||
rm -f "$(DESTDIR)$(e_initdir)/$$f"; \
|
|
||||||
done
|
|
||||||
tags: TAGS
|
tags: TAGS
|
||||||
TAGS:
|
TAGS:
|
||||||
|
|
||||||
@ -337,13 +387,17 @@ distdir: $(DISTFILES)
|
|||||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||||
if test -d $$d/$$file; then \
|
if test -d $$d/$$file; then \
|
||||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
if test -d "$(distdir)/$$file"; then \
|
||||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||||
fi; \
|
fi; \
|
||||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||||
|
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||||
|
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||||
|
fi; \
|
||||||
|
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||||
else \
|
else \
|
||||||
test -f $(distdir)/$$file \
|
test -f "$(distdir)/$$file" \
|
||||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||||
|| exit 1; \
|
|| exit 1; \
|
||||||
fi; \
|
fi; \
|
||||||
done
|
done
|
||||||
@ -364,10 +418,15 @@ install-am: all-am
|
|||||||
|
|
||||||
installcheck: installcheck-am
|
installcheck: installcheck-am
|
||||||
install-strip:
|
install-strip:
|
||||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
if test -z '$(STRIP)'; then \
|
||||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
`test -z '$(STRIP)' || \
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
install; \
|
||||||
|
else \
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
|
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||||
|
fi
|
||||||
mostlyclean-generic:
|
mostlyclean-generic:
|
||||||
|
|
||||||
clean-generic:
|
clean-generic:
|
||||||
@ -375,6 +434,7 @@ clean-generic:
|
|||||||
|
|
||||||
distclean-generic:
|
distclean-generic:
|
||||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||||
|
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||||
|
|
||||||
maintainer-clean-generic:
|
maintainer-clean-generic:
|
||||||
@echo "This command is intended for maintainers to use"
|
@echo "This command is intended for maintainers to use"
|
||||||
@ -393,6 +453,8 @@ dvi-am:
|
|||||||
|
|
||||||
html: html-am
|
html: html-am
|
||||||
|
|
||||||
|
html-am:
|
||||||
|
|
||||||
info: info-am
|
info: info-am
|
||||||
|
|
||||||
info-am:
|
info-am:
|
||||||
@ -402,18 +464,28 @@ install-data-am: install-data-local install-e_examplesDATA \
|
|||||||
|
|
||||||
install-dvi: install-dvi-am
|
install-dvi: install-dvi-am
|
||||||
|
|
||||||
|
install-dvi-am:
|
||||||
|
|
||||||
install-exec-am:
|
install-exec-am:
|
||||||
|
|
||||||
install-html: install-html-am
|
install-html: install-html-am
|
||||||
|
|
||||||
|
install-html-am:
|
||||||
|
|
||||||
install-info: install-info-am
|
install-info: install-info-am
|
||||||
|
|
||||||
|
install-info-am:
|
||||||
|
|
||||||
install-man:
|
install-man:
|
||||||
|
|
||||||
install-pdf: install-pdf-am
|
install-pdf: install-pdf-am
|
||||||
|
|
||||||
|
install-pdf-am:
|
||||||
|
|
||||||
install-ps: install-ps-am
|
install-ps: install-ps-am
|
||||||
|
|
||||||
|
install-ps-am:
|
||||||
|
|
||||||
installcheck-am:
|
installcheck-am:
|
||||||
|
|
||||||
maintainer-clean: maintainer-clean-am
|
maintainer-clean: maintainer-clean-am
|
||||||
@ -480,6 +552,7 @@ install-data-local: install-e_examplesDATA install-e_initSCRIPTS
|
|||||||
|
|
||||||
uninstall-local:
|
uninstall-local:
|
||||||
-rmdir "$(DESTDIR)$(e_examplesdir)" 2>/dev/null
|
-rmdir "$(DESTDIR)$(e_examplesdir)" 2>/dev/null
|
||||||
|
|
||||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
.NOEXPORT:
|
.NOEXPORT:
|
||||||
|
72
bin/configure-dev.sh
Executable file
@ -0,0 +1,72 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program 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.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
# ===
|
||||||
|
#
|
||||||
|
# configure-dev.sh
|
||||||
|
#
|
||||||
|
# A convenience script that runs the emailrelay "../configure" script
|
||||||
|
# for developers.
|
||||||
|
#
|
||||||
|
|
||||||
|
configure="./configure"
|
||||||
|
if test ! -f "${configure}" ; then configure="../configure" ; fi
|
||||||
|
if test ! -f "${configure}" ; then configure="../../configure" ; fi
|
||||||
|
chmod +x "${configure}" 2> /dev/null
|
||||||
|
|
||||||
|
gnu()
|
||||||
|
{
|
||||||
|
env \
|
||||||
|
CPPFLAGS="-D_FORTIFY_SOURCE=2" \
|
||||||
|
CXXFLAGS="-Wall -Wextra -pedantic -g -O0 -fno-omit-frame-pointer -fstack-protector" \
|
||||||
|
CFLAGS="-Wall -Wextra -pedantic -g -O0 -fstack-protector" \
|
||||||
|
LDFLAGS="-g" \
|
||||||
|
"$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
llvm()
|
||||||
|
{
|
||||||
|
w_on="-Wall -Wextra -Weverything -pedantic"
|
||||||
|
w_off="-Wno-weak-vtables -Wno-padded -Wno-exit-time-destructors -Wno-missing-noreturn -Wno-global-constructors"
|
||||||
|
#sanity="-fsanitize=address -fsanitize=init-order -fsanitize=integer -fsanitize=undefined -fsanitize=dataflow"
|
||||||
|
env \
|
||||||
|
CC=clang \
|
||||||
|
CXX=clang++ \
|
||||||
|
CPP="clang -E" \
|
||||||
|
LD=clang++ \
|
||||||
|
CPPFLAGS="-D_FORTIFY_SOURCE=2" \
|
||||||
|
CXXFLAGS="$w_on $w_off -g -O0 -fno-omit-frame-pointer -fstack-protector $sanity" \
|
||||||
|
CFLAGS="$w_on -g -O0 -fstack-protector" \
|
||||||
|
LDFLAGS="-g" \
|
||||||
|
"$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
args()
|
||||||
|
{
|
||||||
|
echo \
|
||||||
|
--enable-debug \
|
||||||
|
--prefix=$HOME/tmp/usr \
|
||||||
|
--exec-prefix=$HOME/tmp/usr \
|
||||||
|
--datadir=$HOME/tmp/usr/share \
|
||||||
|
--localstatedir=$HOME/tmp/var \
|
||||||
|
--libexecdir=$HOME/tmp/usr/lib \
|
||||||
|
--sysconfdir=$HOME/etc \
|
||||||
|
e_initdir=$HOME/etc/init.d
|
||||||
|
}
|
||||||
|
|
||||||
|
#gnu ${configure} `args` "$@"
|
||||||
|
llvm ${configure} `args` "$@"
|
||||||
|
|
44
bin/configure-fhs.sh
Executable file
@ -0,0 +1,44 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program 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.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
# ===
|
||||||
|
#
|
||||||
|
# configure-fhs.sh
|
||||||
|
#
|
||||||
|
# A convenience script that runs the emailrelay "../configure" script with
|
||||||
|
# directory options that are more FHS-like.
|
||||||
|
#
|
||||||
|
# $ cd src/emailrelay-1.99
|
||||||
|
# $ mkdir build
|
||||||
|
# $ cd build
|
||||||
|
# $ sh ../bin/configure-fhs.sh
|
||||||
|
# $ make
|
||||||
|
# $ sudo make install
|
||||||
|
#
|
||||||
|
|
||||||
|
configure="./configure"
|
||||||
|
if test ! -f "${configure}" ; then configure="../configure" ; fi
|
||||||
|
if test ! -f "${configure}" ; then configure="../../configure" ; fi
|
||||||
|
chmod +x "${configure}" 2> /dev/null
|
||||||
|
|
||||||
|
${configure} \
|
||||||
|
--prefix=/usr \
|
||||||
|
--exec-prefix=/usr \
|
||||||
|
--datadir=/usr/share \
|
||||||
|
--localstatedir=/var \
|
||||||
|
--libexecdir=/usr/lib \
|
||||||
|
--sysconfdir=/etc \
|
||||||
|
e_initdir=/etc/init.d "$@"
|
14
bin/configure-mac.sh
Normal file → Executable file
@ -1,10 +1,10 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
#
|
#
|
||||||
# Copyright (C) 2001-2008 Graeme Walker <graeme_walker@users.sourceforge.net>
|
# Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This program is distributed in the hope that it will be useful,
|
# This program is distributed in the hope that it will be useful,
|
||||||
@ -24,10 +24,10 @@
|
|||||||
# $ cd src/emailrelay-1.99
|
# $ cd src/emailrelay-1.99
|
||||||
# $ mkdir build
|
# $ mkdir build
|
||||||
# $ cd build
|
# $ cd build
|
||||||
# $ sh ../bin/configure-mac.sh_
|
# $ sh ../bin/configure-mac.sh
|
||||||
# $ make
|
# $ make
|
||||||
#
|
#
|
||||||
# After configuring with these switches the installation can be done
|
# After configuring with this script the installation can be done
|
||||||
# with "make install" for a system-wide installation, or with
|
# with "make install" for a system-wide installation, or with
|
||||||
# "make install DESTDIR=~" for a private installation.
|
# "make install DESTDIR=~" for a private installation.
|
||||||
#
|
#
|
||||||
@ -40,16 +40,20 @@ lib="/Library"
|
|||||||
|
|
||||||
configure="./configure"
|
configure="./configure"
|
||||||
if test ! -f "${configure}" ; then configure="../configure" ; fi
|
if test ! -f "${configure}" ; then configure="../configure" ; fi
|
||||||
|
if test ! -f "${configure}" ; then configure="../../configure" ; fi
|
||||||
chmod +x "${configure}" 2> /dev/null
|
chmod +x "${configure}" 2> /dev/null
|
||||||
|
|
||||||
${configure} \
|
${configure} \
|
||||||
--enable-mac \
|
--enable-mac \
|
||||||
--sbindir="${app}" \
|
--sbindir="${app}" \
|
||||||
|
e_qtmoc=/usr/bin/moc \
|
||||||
e_libexecdir="${app}" \
|
e_libexecdir="${app}" \
|
||||||
e_examplesdir="${app}/Documentation/examples" \
|
e_examplesdir="${app}/Documentation/examples" \
|
||||||
e_sysconfdir="${app}" \
|
e_sysconfdir="${app}" \
|
||||||
--mandir="${app}/Documentation/man" \
|
--mandir="${app}/Documentation/man" \
|
||||||
|
e_icondir="${app}" \
|
||||||
e_docdir="${app}/Documentation" \
|
e_docdir="${app}/Documentation" \
|
||||||
e_spooldir="${lib}/Mail/Spool" \
|
e_spooldir="${lib}/Mail/Spool" \
|
||||||
e_initdir="${lib}/StartupItems/E-MailRelay"
|
e_pamdir="/etc/pam.d" \
|
||||||
|
e_initdir="${lib}/StartupItems/E-MailRelay" "$@"
|
||||||
|
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
#
|
#
|
||||||
# Copyright (C) 2001-2008 Graeme Walker <graeme_walker@users.sourceforge.net>
|
# Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This program is distributed in the hope that it will be useful,
|
# This program is distributed in the hope that it will be useful,
|
||||||
@ -18,24 +18,31 @@
|
|||||||
#
|
#
|
||||||
# doxygen.sh
|
# doxygen.sh
|
||||||
#
|
#
|
||||||
# Used by doc/Makefile to run doxygen with a bit of
|
# Used by doc/Makefile to run doxygen with a bit of config-file pre-processing.
|
||||||
# config-file pre-processing.
|
|
||||||
#
|
#
|
||||||
# usage: doxygen <have-doxygen> <top-srcdir> <top-builddir>
|
# usage: doxygen <have-doxygen> <top-srcdir> <top-builddir> [<doxyfile-out>]
|
||||||
#
|
#
|
||||||
|
|
||||||
HAVE_DOXYGEN="$1"
|
HAVE_DOXYGEN="$1"
|
||||||
top_srcdir="$2"
|
top_srcdir="$2"
|
||||||
top_builddir="$3"
|
top_builddir="$3"
|
||||||
|
doxyfile_out="$4"
|
||||||
|
|
||||||
if test "$HAVE_DOXYGEN" = "yes"
|
if test "$HAVE_DOXYGEN" = "yes"
|
||||||
then
|
then
|
||||||
cat "${top_srcdir}/src/main/doxygen.cfg" | \
|
if test "${doxyfile_out}" != ""
|
||||||
|
then
|
||||||
|
cat "${top_srcdir}/doc/doxygen.cfg" | \
|
||||||
|
sed "s:__TOP_SRC__:${top_srcdir}:g" | \
|
||||||
|
sed "s:__TOP_BUILD__:${top_builddir}:g" | \
|
||||||
|
cat > "${doxyfile_out}"
|
||||||
|
fi
|
||||||
|
cat "${top_srcdir}/doc/doxygen.cfg" | \
|
||||||
sed "s:__TOP_SRC__:${top_srcdir}:g" | \
|
sed "s:__TOP_SRC__:${top_srcdir}:g" | \
|
||||||
sed "s:__TOP_BUILD__:${top_builddir}:g" | \
|
sed "s:__TOP_BUILD__:${top_builddir}:g" | \
|
||||||
doxygen -
|
doxygen -
|
||||||
else
|
else
|
||||||
mkdir doxygen 2>/dev/null
|
mkdir doxygen 2>/dev/null
|
||||||
cp -f "${top_srcdir}/doc/doxygen_missing.html" doxygen/index.html
|
cp -f "${top_srcdir}/doc/doxygen-missing.html" doxygen/index.html
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
96
bin/doxygen_fixup.pl_
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
#!/usr/bin/perl
|
||||||
|
#
|
||||||
|
# Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program 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.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
# ===
|
||||||
|
#
|
||||||
|
# doxygen_fixup.pl
|
||||||
|
#
|
||||||
|
# usage: doxygen_fixup.pl [<doc-doxygen-directory>]
|
||||||
|
#
|
||||||
|
# Does fixups on the doxygen-generated html files by adding
|
||||||
|
# css styles that emailrelay-doxygen.css can operate on.
|
||||||
|
#
|
||||||
|
# Note that the html header file speficied in doc/doxygen.cfg
|
||||||
|
# (typically doc/doxygen-header.html) should include the
|
||||||
|
# emailrelay-doxygen.css stylesheet after including doxygen.css.
|
||||||
|
#
|
||||||
|
# Designed for doxygen 1.6.x/1.7.x and does nothing (with an exit
|
||||||
|
# code of 1) if there is no suitable version marker in the html files.
|
||||||
|
#
|
||||||
|
# Typically run by the emailrelay/doc makefile after it has run
|
||||||
|
# doxygen.
|
||||||
|
#
|
||||||
|
|
||||||
|
use strict ;
|
||||||
|
use FileHandle ;
|
||||||
|
|
||||||
|
my $dir = @ARGV ? $ARGV[0] : "." ;
|
||||||
|
|
||||||
|
my $any_file_changed = 0 ;
|
||||||
|
my $marker = 'edited by doxygen_fixup.pl' ;
|
||||||
|
my $comment = '<!-- '.$marker.' -->' ;
|
||||||
|
for my $f ( <$dir/*> )
|
||||||
|
{
|
||||||
|
if( $f =~ m/\.html$/ )
|
||||||
|
{
|
||||||
|
my $input = new FileHandle( $f , "r" ) or die "cannot open $f" ;
|
||||||
|
my $output = new FileHandle( "$f.tmp" , "w" ) or die "cannot create $f.tmp" ;
|
||||||
|
my $seen_marker = undef ;
|
||||||
|
my $file_changed = undef ;
|
||||||
|
while ( <$input> )
|
||||||
|
{
|
||||||
|
chomp( my $line = $_ ) ;
|
||||||
|
$seen_marker ||= ( $line =~ m/Generated by Doxygen 1\.6/ ) ;
|
||||||
|
$seen_marker ||= ( $line =~ m/Generated by Doxygen 1\.7/ ) ;
|
||||||
|
my $old_line = $line ;
|
||||||
|
$line =~ s/p>References/p class="references">References/g ;
|
||||||
|
$line =~ s/p>Referenced by/p class="referencedby">Referenced by/g ;
|
||||||
|
$line =~ s/p>Definition at/p class="definitionat">Definition at/g ;
|
||||||
|
$line =~ s/p>Implements /p class="implements">Implements /g ;
|
||||||
|
if( $line =~ m/<td class="memname".* <\/td> *$/ )
|
||||||
|
{
|
||||||
|
$line =~ s/>/> /g ;
|
||||||
|
$line =~ s/</ </g ;
|
||||||
|
my @word = split( ' ' , $line ) ;
|
||||||
|
if( scalar(@word) > 2 )
|
||||||
|
{
|
||||||
|
my $n = scalar(@word) - 2 ;
|
||||||
|
if( $n =~ m/^[A-Za-z0-9&;:_]+$/ )
|
||||||
|
{
|
||||||
|
$word[$n] = '<span class="realmemname">' . $word[$n] . "</span>" ;
|
||||||
|
$line = join( " " , @word ) ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
my $line_changed = ( $line ne $old_line ) ;
|
||||||
|
my $line_has_comment = ( $line =~ m/$marker/ ) ;
|
||||||
|
print $output $line , ( ( $line_changed && !$line_has_comment ) ? "" : $comment ) , "\n" ;
|
||||||
|
$file_changed ||= $line_changed ;
|
||||||
|
}
|
||||||
|
$output->close() or die "cannot write $f.tmp" ;
|
||||||
|
$input->close() ;
|
||||||
|
if( $file_changed && $seen_marker )
|
||||||
|
{
|
||||||
|
rename( "$f.tmp" , $f ) or die "cannot rename $f.tmp to $f" ;
|
||||||
|
$any_file_changed = 1 ;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
unlink( "$f.tmp" ) ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exit( $any_file_changed ? 0 : 1 ) ;
|
@ -1,10 +1,10 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
#
|
#
|
||||||
# Copyright (C) 2001-2008 Graeme Walker <graeme_walker@users.sourceforge.net>
|
# Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This program is distributed in the hope that it will be useful,
|
# This program is distributed in the hope that it will be useful,
|
||||||
@ -18,11 +18,16 @@
|
|||||||
#
|
#
|
||||||
# emailrelay-deliver.sh
|
# emailrelay-deliver.sh
|
||||||
#
|
#
|
||||||
# Looks for local mail in the E-MailRelay spool directory, and delivers
|
# Looks for local mail in the E-MailRelay spool directory and delivers is using
|
||||||
# it using 'procmail'.
|
# 'procmail'.
|
||||||
#
|
#
|
||||||
# usage: emailrelay-deliver.sh [<spool-dir>]
|
# usage: emailrelay-deliver.sh [<spool-dir>]
|
||||||
#
|
#
|
||||||
|
# This illustrates how delivery to local "postmaster" mailboxes could be done,
|
||||||
|
# although it is not likely to be a useful feature for a typical mail relay
|
||||||
|
# setup.
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
store="__SPOOL_DIR__"
|
store="__SPOOL_DIR__"
|
||||||
postmaster="root"
|
postmaster="root"
|
||||||
|
68
bin/emailrelay-edit-content.js
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
//
|
||||||
|
// Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>
|
||||||
|
//
|
||||||
|
// This program is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// This program 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.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
// ===
|
||||||
|
//
|
||||||
|
// emailrelay-edit-content.js
|
||||||
|
//
|
||||||
|
// An example "--filter" script for Windows that edits the message's content
|
||||||
|
// file.
|
||||||
|
//
|
||||||
|
// In this example every "teh" is changed to "the".
|
||||||
|
//
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// parse the command-line to get the content filename
|
||||||
|
var content = WScript.Arguments(0) ;
|
||||||
|
|
||||||
|
// open the content file
|
||||||
|
var fs = WScript.CreateObject( "Scripting.FileSystemObject" ) ;
|
||||||
|
var in_ = fs.OpenTextFile( content , 1 , false ) ;
|
||||||
|
|
||||||
|
// create the new content file
|
||||||
|
var out_ = fs.OpenTextFile( content + ".tmp" , 8 , true ) ;
|
||||||
|
|
||||||
|
// read the headers
|
||||||
|
while( !in_.AtEndOfStream )
|
||||||
|
{
|
||||||
|
var line = in_.ReadLine() ;
|
||||||
|
out_.WriteLine( line ) ;
|
||||||
|
if( line == "" )
|
||||||
|
break ;
|
||||||
|
}
|
||||||
|
|
||||||
|
// read and edit the body
|
||||||
|
var re = new RegExp( "\\bteh\\b" , "gi" ) ;
|
||||||
|
while( !in_.AtEndOfStream )
|
||||||
|
{
|
||||||
|
var line = in_.ReadLine() ;
|
||||||
|
line = line.replace( re , "the" ) ;
|
||||||
|
out_.WriteLine( line ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
// replace the content file
|
||||||
|
in_.Close() ;
|
||||||
|
out_.Close() ;
|
||||||
|
fs.MoveFile( content + ".tmp" , content ) ;
|
||||||
|
|
||||||
|
// successful exit
|
||||||
|
WScript.Quit( 0 ) ;
|
||||||
|
}
|
||||||
|
catch( e )
|
||||||
|
{
|
||||||
|
// report errors using the special <<...>> markers
|
||||||
|
WScript.StdOut.WriteLine( "<<" + e + ">>" ) ;
|
||||||
|
WScript.Quit( 1 ) ;
|
||||||
|
}
|
@ -1,9 +1,9 @@
|
|||||||
//
|
//
|
||||||
// Copyright (C) 2001-2008 Graeme Walker <graeme_walker@users.sourceforge.net>
|
// Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// This program is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
// (at your option) any later version.
|
// (at your option) any later version.
|
||||||
//
|
//
|
||||||
// This program is distributed in the hope that it will be useful,
|
// This program is distributed in the hope that it will be useful,
|
||||||
@ -15,33 +15,47 @@
|
|||||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
// ===
|
// ===
|
||||||
//
|
//
|
||||||
// emailrelay-change-auth.js
|
// emailrelay-edit-envelope.js
|
||||||
//
|
//
|
||||||
// An example "--filter" script for Windows that changes the
|
// An example "--filter" script for Windows that edits the message's envelope
|
||||||
// authentication field in the message's envelope file. This
|
// file.
|
||||||
// field is used as the AUTH parameter in the MAIL command
|
//
|
||||||
// when the emailrelay server forwards the message to the
|
// In this example the "Authentication" field in the envelope file is modified.
|
||||||
// downstream server. By default it is the name used by the
|
// This field is used as the AUTH parameter when the emailrelay server forwards
|
||||||
// client when it authenticated with emailrelay.
|
// the message to the downstream server.
|
||||||
//
|
//
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var auth = "secret" ; // change this
|
// parse the command-line to get the envelope filename
|
||||||
var content = WScript.Arguments(0) ;
|
var content = WScript.Arguments(0) ;
|
||||||
var envelope = content.substr(0,content.length-7) + "envelope.new" ;
|
var envelope = content.substr(0,content.length-7) + "envelope.new" ;
|
||||||
|
|
||||||
|
// open the envelope file
|
||||||
var fs = WScript.CreateObject( "Scripting.FileSystemObject" ) ;
|
var fs = WScript.CreateObject( "Scripting.FileSystemObject" ) ;
|
||||||
var ts = fs.OpenTextFile( envelope , 1 , false ) ;
|
var ts = fs.OpenTextFile( envelope , 1 , false ) ;
|
||||||
|
|
||||||
|
// read the contents of the envelope file
|
||||||
var txt = ts.ReadAll() ;
|
var txt = ts.ReadAll() ;
|
||||||
ts.Close() ;
|
ts.Close() ;
|
||||||
|
|
||||||
|
// configuration -- this is what we are putting into the envelope file
|
||||||
|
var auth = "secret" ;
|
||||||
|
|
||||||
|
// make the change
|
||||||
var re = new RegExp( "X-MailRelay-Authentication: *\\w*" ) ;
|
var re = new RegExp( "X-MailRelay-Authentication: *\\w*" ) ;
|
||||||
txt = txt.replace( re , "X-MailRelay-Authentication: " + auth ) ;
|
txt = txt.replace( re , "X-MailRelay-Authentication: " + auth ) ;
|
||||||
|
|
||||||
|
// write the envelope file back out
|
||||||
ts = fs.OpenTextFile( envelope , 2 , false ) ;
|
ts = fs.OpenTextFile( envelope , 2 , false ) ;
|
||||||
ts.Write( txt ) ;
|
ts.Write( txt ) ;
|
||||||
ts.Close() ;
|
ts.Close() ;
|
||||||
|
|
||||||
|
// successful exit
|
||||||
WScript.Quit( 0 ) ;
|
WScript.Quit( 0 ) ;
|
||||||
}
|
}
|
||||||
catch( e )
|
catch( e )
|
||||||
{
|
{
|
||||||
WScript.Echo( "<<" + e + ">>" ) ;
|
// report errors using the special <<...>> markers
|
||||||
|
WScript.StdOut.WriteLine( "<<" + e + ">>" ) ;
|
||||||
WScript.Quit( 1 ) ;
|
WScript.Quit( 1 ) ;
|
||||||
}
|
}
|
@ -1,10 +1,10 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
#
|
#
|
||||||
# Copyright (C) 2001-2008 Graeme Walker <graeme_walker@users.sourceforge.net>
|
# Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This program is distributed in the hope that it will be useful,
|
# This program is distributed in the hope that it will be useful,
|
||||||
@ -18,36 +18,23 @@
|
|||||||
#
|
#
|
||||||
# emailrelay-multicast.sh
|
# emailrelay-multicast.sh
|
||||||
#
|
#
|
||||||
# An example filter script that copies/links each new message
|
# An example "--filter" script that copies/links each new message into all
|
||||||
# into all avaliable sub-directories of the main spool
|
# avaliable sub-directories of the main spool directory. The original message
|
||||||
# directory. The original message files are deleted if they
|
# files are deleted if they were successfully copied/linked into all
|
||||||
# were successfully copied/linked into all sub-directories.
|
# sub-directories.
|
||||||
#
|
#
|
||||||
# Typically used for smtp multicast with an emailrelay
|
# This can be used for doing SMTP multicast by having an emailrelay forwarding
|
||||||
# forwarding process polling each sub-directory (with
|
# process polling each sub-directory. (For POP multicasting use the
|
||||||
# eg. "--log -e --no-smtp --poll 10 --forward-to ...").
|
# "emailrelay-filter-copy" program with the "pop-by-name" feature so that
|
||||||
|
# there is no need to copy or link content files.)
|
||||||
#
|
#
|
||||||
# Hard links are used for the content files in order to
|
# Hard links are used for the content files in order to conserve disk space. Log
|
||||||
# conserve disk space.
|
# entries are written into the base envelope file to help with error recovery.
|
||||||
#
|
#
|
||||||
# Log entries are written into the base envelope file
|
# The remote SMTP client which is submitting the message will be notified of any
|
||||||
# to help with error recovery.
|
# failures in this script via SMTP error responses. Alternatively an "exit 0"
|
||||||
#
|
# can be used to silently leave the message in the main spool directory (see
|
||||||
# Note that the remote smtp client which is submitting the
|
# below).
|
||||||
# message will be notified of any failures in this script.
|
|
||||||
# Alternatively an "exit 0" can be used to silently leave
|
|
||||||
# the message in the main spool directory (see below).
|
|
||||||
#
|
|
||||||
# (This script is similar to the emailrelay-filter-copy
|
|
||||||
# program that is used for "pop-by-name" -- ie. smtp to
|
|
||||||
# pop multicasting. However, in the pop case we exploit
|
|
||||||
# a feature of the pop server where the content file
|
|
||||||
# can stay in the parent directory without linking or
|
|
||||||
# copying into the sub-directory, which allows "pop-by-name"
|
|
||||||
# to be fully cross-platform while avoiding content-file
|
|
||||||
# bloat. The smtp server does not support that way of
|
|
||||||
# working so here we just link the content file and
|
|
||||||
# forget about windows.)
|
|
||||||
#
|
#
|
||||||
|
|
||||||
# parse the command-line
|
# parse the command-line
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
#
|
#
|
||||||
# Copyright (C) 2001-2008 Graeme Walker <graeme_walker@users.sourceforge.net>
|
# Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This program is distributed in the hope that it will be useful,
|
# This program is distributed in the hope that it will be useful,
|
||||||
@ -18,15 +18,14 @@
|
|||||||
#
|
#
|
||||||
# emailrelay-notify.sh
|
# emailrelay-notify.sh
|
||||||
#
|
#
|
||||||
# Looks for failed mail in the E-MailRelay spool directory, and sends failure
|
# Looks for failed mail in the E-MailRelay spool directory and sends failure
|
||||||
# notification messages using 'procmail'.
|
# notification messages using 'procmail'.
|
||||||
#
|
#
|
||||||
# usage: emailrelay-notify.sh [<spool-dir>]
|
# usage: emailrelay-notify.sh [<spool-dir>]
|
||||||
#
|
#
|
||||||
# Notification of failed e-mail by means of e-mail messages is a
|
# Notification of failed e-mail by means of e-mail messages is a requirement
|
||||||
# requirement imposed by the SMTP specification. However, a simpler
|
# imposed by the SMTP specification. However, a simpler approach might be more
|
||||||
# approach might be more appropriate -- for example, a line like this in
|
# appropriate -- for example, a line like this in a ".profile" script:
|
||||||
# a ".profile" script:
|
|
||||||
#
|
#
|
||||||
# if test -f /var/spool/emailrelay/*.envelope.bad ; then echo Failed mail >&2 ; fi
|
# if test -f /var/spool/emailrelay/*.envelope.bad ; then echo Failed mail >&2 ; fi
|
||||||
#
|
#
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
#
|
#
|
||||||
# Copyright (C) 2001-2008 Graeme Walker <graeme_walker@users.sourceforge.net>
|
# Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This program is distributed in the hope that it will be useful,
|
# This program is distributed in the hope that it will be useful,
|
||||||
@ -18,10 +18,8 @@
|
|||||||
#
|
#
|
||||||
# emailrelay-process.sh
|
# emailrelay-process.sh
|
||||||
#
|
#
|
||||||
# An example pre-processing script for the E-MailRelay
|
# An example "--filter" script for the E-MailRelay SMTP server which does
|
||||||
# SMTP server which does rot-13 masking. (The pre-processor
|
# rot-13 masking.
|
||||||
# is specified using the "--filter" switch on the emailrelay
|
|
||||||
# command line.)
|
|
||||||
#
|
#
|
||||||
|
|
||||||
awk="awk"
|
awk="awk"
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
//
|
//
|
||||||
// Copyright (C) 2001-2008 Graeme Walker <graeme_walker@users.sourceforge.net>
|
// Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// This program is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
// (at your option) any later version.
|
// (at your option) any later version.
|
||||||
//
|
//
|
||||||
// This program is distributed in the hope that it will be useful,
|
// This program is distributed in the hope that it will be useful,
|
||||||
@ -17,18 +17,18 @@
|
|||||||
//
|
//
|
||||||
// emailrelay-resubmit.js
|
// emailrelay-resubmit.js
|
||||||
//
|
//
|
||||||
// Looks for all failed e-mails in the E-MailRelay spool directory
|
// A utility script for Windows that looks for all failed e-mails in the
|
||||||
// and resubmits them. However, if an e-mail has been retried five
|
// E-MailRelay spool directory and resubmits them. However, if an e-mail has
|
||||||
// times already then it is not submitted again.
|
// been retried five times already then it is not submitted again.
|
||||||
//
|
//
|
||||||
// usage: cscript //nologo emailrelay-resubmit.js [<spool-dir>]
|
// usage: cscript //nologo emailrelay-resubmit.js [<spool-dir>]
|
||||||
//
|
//
|
||||||
|
|
||||||
// configuration
|
// configuration
|
||||||
//
|
//
|
||||||
var cfg_store = "__SPOOL_DIR__" ;
|
var cfg_store = "c:/windows/spool/emailrelay" ;
|
||||||
var cfg_retry_limit = 5 ;
|
var cfg_retry_limit = 5 ;
|
||||||
var cfg_debug = true ;
|
var cfg_debug = false ;
|
||||||
|
|
||||||
// parse the command line
|
// parse the command line
|
||||||
//
|
//
|
||||||
@ -44,7 +44,7 @@ function debug( line )
|
|||||||
{
|
{
|
||||||
if( cfg_debug )
|
if( cfg_debug )
|
||||||
{
|
{
|
||||||
WScript.Echo( "debug: " + line ) ;
|
WScript.StdOut.WriteLine( "debug: " + line ) ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -53,7 +53,7 @@ function debug( line )
|
|||||||
var fso = WScript.CreateObject( "Scripting.FileSystemObject" ) ;
|
var fso = WScript.CreateObject( "Scripting.FileSystemObject" ) ;
|
||||||
if( ! fso.FolderExists( cfg_store ) )
|
if( ! fso.FolderExists( cfg_store ) )
|
||||||
{
|
{
|
||||||
WScript.Echo( "invalid spool directory: \"" + cfg_store + "\"" ) ;
|
WScript.StdOut.WriteLine( "invalid spool directory: \"" + cfg_store + "\"" ) ;
|
||||||
WScript.Quit( 1 ) ;
|
WScript.Quit( 1 ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
#
|
#
|
||||||
# Copyright (C) 2001-2008 Graeme Walker <graeme_walker@users.sourceforge.net>
|
# Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This program is distributed in the hope that it will be useful,
|
# This program is distributed in the hope that it will be useful,
|
||||||
@ -18,12 +18,14 @@
|
|||||||
#
|
#
|
||||||
# emailrelay-resubmit.sh
|
# emailrelay-resubmit.sh
|
||||||
#
|
#
|
||||||
# Looks for all failed e-mails in the E-MailRelay spool directory
|
# Looks for all failed e-mails in the E-MailRelay spool directory and resubmits
|
||||||
# and resubmits them. However, if an e-mail has been retried five
|
# them. However, if an e-mail has been retried five times already then it is not
|
||||||
# times already then it is not resubmitted again.
|
# resubmitted again.
|
||||||
#
|
#
|
||||||
# usage: emailrelay-resubmit.sh [<spool-dir>]
|
# usage: emailrelay-resubmit.sh [<spool-dir>]
|
||||||
#
|
#
|
||||||
|
# See also emailrelay-resubmit.js for Windows.
|
||||||
|
#
|
||||||
|
|
||||||
store="__SPOOL_DIR__"
|
store="__SPOOL_DIR__"
|
||||||
retry_limit="5"
|
retry_limit="5"
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
//
|
//
|
||||||
// Copyright (C) 2001-2008 Graeme Walker <graeme_walker@users.sourceforge.net>
|
// Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>
|
||||||
//
|
//
|
||||||
// This program is free software: you can redistribute it and/or modify
|
// This program is free software: you can redistribute it and/or modify
|
||||||
// it under the terms of the GNU General Public License as published by
|
// it under the terms of the GNU General Public License as published by
|
||||||
// the Free Software Foundation, either version 3 of the License, or
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
// (at your option) any later version.
|
// (at your option) any later version.
|
||||||
//
|
//
|
||||||
// This program is distributed in the hope that it will be useful,
|
// This program is distributed in the hope that it will be useful,
|
||||||
@ -18,10 +18,11 @@
|
|||||||
// emailrelay-runperl.js
|
// emailrelay-runperl.js
|
||||||
//
|
//
|
||||||
// An example "--filter" script for Windows that runs a perl script
|
// An example "--filter" script for Windows that runs a perl script
|
||||||
// to process the message content via its standard input and standard
|
// to process e-mails.
|
||||||
// output.
|
|
||||||
//
|
//
|
||||||
// The name of the perl script is hard-coded below: edit as necessary.
|
// The perl script is expected to read the e-mail content on its
|
||||||
|
// standard input and write it out again on standard output, with
|
||||||
|
// a zero exit code on success (like spamassassin, for example).
|
||||||
//
|
//
|
||||||
// The E-MailRelay command-line should look something like this:
|
// The E-MailRelay command-line should look something like this:
|
||||||
//
|
//
|
||||||
@ -29,55 +30,67 @@
|
|||||||
//
|
//
|
||||||
// Note the backslash to escape the space in the path.
|
// Note the backslash to escape the space in the path.
|
||||||
//
|
//
|
||||||
// The implementation of this JavaScript makes use of "CMD.EXE", which may be
|
|
||||||
// not be available on some versions of Windows.
|
|
||||||
//
|
|
||||||
// Edit the next two lines as necessary, but avoid spaces in paths:
|
|
||||||
var cfg_perl="perl -S -T -w"
|
|
||||||
var cfg_perl_script="spamassassin"
|
|
||||||
|
|
||||||
// parse our command line
|
var rc = 1 ;
|
||||||
var args = WScript.Arguments
|
try
|
||||||
var filename = args(0)
|
|
||||||
|
|
||||||
// prepare a command using CMD.EXE to do file redirection
|
|
||||||
var cmd_in = "\"" + filename + "\""
|
|
||||||
var cmd_out = "\"" + filename + ".tmp\""
|
|
||||||
var cmd_err = "\"" + filename + ".err\""
|
|
||||||
var cmd_perl = "cmd /c " + cfg_perl + " " + cfg_perl_script
|
|
||||||
var cmd = cmd_perl + " < " + cmd_in + " > " + cmd_out + " 2> " + cmd_err
|
|
||||||
|
|
||||||
// run the command
|
|
||||||
var sh = WScript.CreateObject("WScript.Shell")
|
|
||||||
var rc = sh.Run( cmd , 0 , true )
|
|
||||||
|
|
||||||
// check the file redirection
|
|
||||||
var fs = WScript.CreateObject("Scripting.FileSystemObject")
|
|
||||||
if( !fs.FileExists(filename+".tmp") || !fs.FileExists(filename+".err") )
|
|
||||||
{
|
{
|
||||||
WScript.Echo("<<file redirection error>>")
|
// configuration -- edit these lines as necessary, but avoid spaces in paths
|
||||||
WScript.Quit( 2 )
|
var cfg_perl = "perl -S -T -w" ;
|
||||||
}
|
var cfg_perl_script = "spamassassin" ;
|
||||||
|
|
||||||
// success or failure
|
// parse our command line
|
||||||
if( rc == 0 )
|
var args = WScript.Arguments ;
|
||||||
{
|
var filename = args(0) ;
|
||||||
fs.DeleteFile( filename )
|
|
||||||
fs.MoveFile( filename + ".tmp" , filename )
|
// prepare a perl commandline with quotes and redirection etc
|
||||||
fs.DeleteFile( filename + ".err" )
|
var cmd_in = "\"" + filename + "\"" ;
|
||||||
WScript.Quit( 0 )
|
var cmd_out = "\"" + filename + ".tmp\"" ;
|
||||||
}
|
var cmd_err = "\"" + filename + ".err\"" ;
|
||||||
else
|
var cmd_perl = "cmd /c " + cfg_perl + " " + cfg_perl_script ;
|
||||||
{
|
var cmd = cmd_perl + " < " + cmd_in + " > " + cmd_out + " 2> " + cmd_err ;
|
||||||
fs.DeleteFile( filename + ".tmp" )
|
|
||||||
var error = fs.OpenTextFile( filename + ".err" , 1 )
|
// run the perl command
|
||||||
if( ! error.AtEndOfStream )
|
var sh = WScript.CreateObject("WScript.Shell") ;
|
||||||
|
rc = sh.Run( cmd , 0 , true ) ;
|
||||||
|
|
||||||
|
// check the file redirection worked
|
||||||
|
var fs = WScript.CreateObject("Scripting.FileSystemObject") ;
|
||||||
|
if( !fs.FileExists(filename+".tmp") || !fs.FileExists(filename+".err") )
|
||||||
{
|
{
|
||||||
var reason = error.ReadLine()
|
throw "file redirection error" ;
|
||||||
WScript.Echo( "<<" + reason + ">>" )
|
|
||||||
}
|
}
|
||||||
error.Close()
|
|
||||||
fs.DeleteFile( filename + ".err" )
|
// check for perl script errors
|
||||||
WScript.Quit( rc )
|
if( rc != 0 )
|
||||||
|
{
|
||||||
|
// read one line of the perl script's standard error
|
||||||
|
var reason = "non-zero exit" ;
|
||||||
|
var errorstream = fs.OpenTextFile( filename + ".err" , 1 )
|
||||||
|
if( ! errorstream.AtEndOfStream )
|
||||||
|
reason = errorstream.ReadLine() ;
|
||||||
|
errorstream.Close() ;
|
||||||
|
|
||||||
|
// clean up
|
||||||
|
fs.DeleteFile( filename + ".err" ) ;
|
||||||
|
fs.DeleteFile( filename + ".tmp" ) ;
|
||||||
|
|
||||||
|
throw reason ;
|
||||||
|
}
|
||||||
|
|
||||||
|
// clean up
|
||||||
|
fs.DeleteFile( filename ) ;
|
||||||
|
fs.DeleteFile( filename + ".err" ) ;
|
||||||
|
|
||||||
|
// install the perl script output as the new content file
|
||||||
|
fs.MoveFile( filename + ".tmp" , filename ) ;
|
||||||
|
|
||||||
|
// successful exit
|
||||||
|
WScript.Quit( 0 ) ;
|
||||||
|
}
|
||||||
|
catch( e )
|
||||||
|
{
|
||||||
|
// report errors using the special <<...>> markers
|
||||||
|
WScript.StdOut.WriteLine( "<<" + e + ">>" ) ;
|
||||||
|
WScript.Quit( rc ) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
#
|
#
|
||||||
# Copyright (C) 2001-2008 Graeme Walker <graeme_walker@users.sourceforge.net>
|
# Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This program is distributed in the hope that it will be useful,
|
# This program is distributed in the hope that it will be useful,
|
||||||
@ -18,15 +18,10 @@
|
|||||||
#
|
#
|
||||||
# emailrelay-submit.sh
|
# emailrelay-submit.sh
|
||||||
#
|
#
|
||||||
# An example wrapper script for the "emailrelay-submit" utility
|
# An example script that deposits e-mail messages into sub-directories
|
||||||
# that adds the capability of copying messages into multiple
|
# of the main E-MailRelay spool directory depending on the "To:"
|
||||||
# subdirectories based on the message content. This script
|
# address. This could be used with an E-MailRelay POP server running
|
||||||
# should be used as a replacement for the "emailrelay-submit"
|
# with the "pop-by-name" option so that messages get routed appropriately.
|
||||||
# utility so it reads the message content from the standard
|
|
||||||
# input. All output goes to a log file.
|
|
||||||
#
|
|
||||||
# Typically called by fetchmail as the local delivery agent
|
|
||||||
# with an emailrelay pop server running in "pop-by-name" mode.
|
|
||||||
#
|
#
|
||||||
# usage: emailrelay-submit.sh
|
# usage: emailrelay-submit.sh
|
||||||
#
|
#
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
#
|
#
|
||||||
# Copyright (C) 2001-2008 Graeme Walker <graeme_walker@users.sourceforge.net>
|
# Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This program is distributed in the hope that it will be useful,
|
# This program is distributed in the hope that it will be useful,
|
||||||
@ -18,19 +18,15 @@
|
|||||||
#
|
#
|
||||||
# emailrelay
|
# emailrelay
|
||||||
#
|
#
|
||||||
# A shell-script wrapper for E-MailRelay designed for use in the SysV-init
|
# A shell-script wrapper for E-MailRelay for use in the SysV-init system.
|
||||||
# system (/etc/init.d).
|
|
||||||
#
|
#
|
||||||
# Additional command-line switches for the emailrelay daemon are sourced
|
# Additional command-line options for the emailrelay daemon are sourced from
|
||||||
# from the file "/etc/emailrelay.conf" if it exists. Uncommented lines in this
|
# the file "/etc/emailrelay.conf" if it exists. Uncommented lines in this
|
||||||
# file have "--" prepended to them and then they are pasted onto the command
|
# file have "--" prepended to them and then they are pasted onto the command
|
||||||
# line.
|
# line.
|
||||||
#
|
#
|
||||||
# usage: emailrelay { start | stop | restart | force-reload | status }
|
# usage: emailrelay { start | stop | restart | force-reload | status }
|
||||||
#
|
#
|
||||||
# See also: LSB, start_daemon (lsb), startproc (suse), install_initd (lsb),
|
|
||||||
# insserv (suse), /usr/share/doc/initscripts*/sysvinitfiles (redhat)
|
|
||||||
#
|
|
||||||
|
|
||||||
##
|
##
|
||||||
# LSB comment block...
|
# LSB comment block...
|
||||||
@ -39,213 +35,191 @@
|
|||||||
# Provides: emailrelay
|
# Provides: emailrelay
|
||||||
# Required-Start: $network
|
# Required-Start: $network
|
||||||
# Required-Stop: $network
|
# Required-Stop: $network
|
||||||
# Default-Start: 3 4 5
|
# Default-Start: 2 3 4 5
|
||||||
# Default-Stop: 0 1 2 6
|
# Default-Stop: 0 1 6
|
||||||
# Short-Description: E-MailRelay SMTP proxy and store-and-forward MTA.
|
# Short-Description: E-MailRelay SMTP proxy and store-and-forward MTA.
|
||||||
### END INIT INFO
|
### END INIT INFO
|
||||||
##
|
##
|
||||||
|
|
||||||
# choose an infrastructure style -- linux-standard-base (lsb) or unix
|
# initialise
|
||||||
#
|
#
|
||||||
if test -f /lib/lsb/init-functions
|
PATH="$PATH:/sbin:/bin:/usr/bin"
|
||||||
then
|
|
||||||
style="lsb"
|
|
||||||
. /lib/lsb/init-functions
|
|
||||||
else
|
|
||||||
style="unix"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# script configuration
|
|
||||||
#
|
|
||||||
var_run="/var/run"
|
|
||||||
emailrelay="__SBIN_DIR__/emailrelay" # (absolute path required in some environments)
|
|
||||||
if test \! -d "${var_run}" ; then var_run="/tmp" ; fi
|
|
||||||
if test \! -x "${emailrelay}" ; then emailrelay="`pwd`/emailrelay" ; fi
|
|
||||||
pid_file="${var_run}/emailrelay.pid"
|
|
||||||
PATH="${PATH}:/sbin:/bin:/usr/bin"
|
|
||||||
ECHO="echo" ; if test -x /bin/echo ; then ECHO="/bin/echo" ; fi
|
ECHO="echo" ; if test -x /bin/echo ; then ECHO="/bin/echo" ; fi
|
||||||
cfg_file="__SYSCONF_DIR__/emailrelay.conf"
|
var_run="/var/run" ; if test -d "$var_run" -a -w "$var_run" ; then : ; else var_run="/tmp" ; fi
|
||||||
|
pid_file="$var_run/emailrelay.pid"
|
||||||
# server configuration using the config file
|
config_file="__SYSCONF_DIR__/emailrelay.conf"
|
||||||
#
|
config_file_template="__SYSCONF_DIR__/emailrelay.conf.template"
|
||||||
ConfigSwitches()
|
emailrelay="__SBIN_DIR__/emailrelay" # (absolute path required in some environments)
|
||||||
{
|
if test \! -x "$emailrelay" ; then emailrelay="`pwd`/emailrelay" ; fi
|
||||||
cat "${cfg_file}" 2>/dev/null | egrep -v '^#|^ *$' | sed 's/^/--/'
|
local_errno=0
|
||||||
}
|
|
||||||
StartSwitches()
|
|
||||||
{
|
|
||||||
echo --as-server --pid-file \"${pid_file}\" `ConfigSwitches`
|
|
||||||
}
|
|
||||||
|
|
||||||
# functions...
|
|
||||||
#
|
|
||||||
# <style>_reset() -- initialise
|
|
||||||
# <style>_cmd_stop() -- stop command
|
|
||||||
# <style>_cmd_start() -- start command
|
|
||||||
# <style>_cmd_restarted() -- called after stop/start
|
|
||||||
# <style>_cmd_status() -- status command
|
|
||||||
# <style>_exit() -- exit with saved errno
|
|
||||||
|
|
||||||
unix_reset()
|
|
||||||
{
|
|
||||||
unix_errno="0"
|
|
||||||
}
|
|
||||||
|
|
||||||
unix_cmd_start()
|
|
||||||
{
|
|
||||||
$ECHO -n "${1}"
|
|
||||||
shift
|
|
||||||
"$@"
|
|
||||||
unix_errno="$?"
|
|
||||||
if test "${unix_errno}" -eq 0
|
|
||||||
then
|
|
||||||
echo " ... done"
|
|
||||||
else
|
|
||||||
echo " ... failed"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
unix_cmd_stop()
|
|
||||||
{
|
|
||||||
$ECHO -n "${1}"
|
|
||||||
if test -f "${pid_file}" && test "`cat \"${pid_file}\"`" != ""
|
|
||||||
then
|
|
||||||
kill "`cat ${pid_file}`"
|
|
||||||
rm -f "${pid_file}" 2>/dev/null
|
|
||||||
fi
|
|
||||||
echo " ... done"
|
|
||||||
unix_errno="0" # (could do better)
|
|
||||||
}
|
|
||||||
|
|
||||||
unix_cmd_restarted()
|
|
||||||
{
|
|
||||||
unix_errno="$?"
|
|
||||||
}
|
|
||||||
|
|
||||||
unix_cmd_status()
|
|
||||||
{
|
|
||||||
$ECHO -n "${1}"
|
|
||||||
if test -f "${pid_file}" && test "`cat \"${pid_file}\"`" != "" && kill -0 "`cat \"${pid_file}\"`" 2>/dev/null
|
|
||||||
then
|
|
||||||
echo " ... running"
|
|
||||||
unix_errno="0"
|
|
||||||
elif test -f "${pid_file}"
|
|
||||||
then
|
|
||||||
echo " ... failed"
|
|
||||||
unix_errno="1"
|
|
||||||
else
|
|
||||||
echo " ... not running"
|
|
||||||
unix_errno="3"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
unix_exit()
|
|
||||||
{
|
|
||||||
exit "${unix_errno}"
|
|
||||||
}
|
|
||||||
|
|
||||||
##
|
|
||||||
|
|
||||||
lsb_reset()
|
|
||||||
{
|
|
||||||
lsb_errno="0"
|
|
||||||
}
|
|
||||||
|
|
||||||
lsb_cmd_start()
|
|
||||||
{
|
|
||||||
lsb_text="${1}"
|
|
||||||
shift
|
|
||||||
start_daemon "$@"
|
|
||||||
lsb_errno=$?
|
|
||||||
if test "${lsb_errno}" -eq 0
|
|
||||||
then
|
|
||||||
log_success_msg "${lsb_text}"
|
|
||||||
else
|
|
||||||
log_failure_msg "${lsb_text}"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
lsb_cmd_stop()
|
|
||||||
{
|
|
||||||
lsb_text="${1}"
|
|
||||||
killproc "`basename \"${2}\"`"
|
|
||||||
lsb_errno=$?
|
|
||||||
if test "${lsb_errno}" -eq 0
|
|
||||||
then
|
|
||||||
log_success_msg "${lsb_text}"
|
|
||||||
else
|
|
||||||
log_failure_msg "${lsb_text}"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
lsb_cmd_restarted()
|
|
||||||
{
|
|
||||||
lsb_errno="$?"
|
|
||||||
}
|
|
||||||
|
|
||||||
lsb_cmd_status()
|
|
||||||
{
|
|
||||||
lsb_text="${1}"
|
|
||||||
base="`basename \"${2}\"`"
|
|
||||||
pids="`pidofproc \"${base}\" | sed 's/ *$//'`"
|
|
||||||
if test "${pids}" != ""
|
|
||||||
then
|
|
||||||
lsb_errno="0"
|
|
||||||
log_success_msg "${lsb_text}"
|
|
||||||
else
|
|
||||||
lsb_errno="1"
|
|
||||||
log_failure_msg "${lsb_text}"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
lsb_exit()
|
|
||||||
{
|
|
||||||
exit ${lsb_errno}
|
|
||||||
}
|
|
||||||
|
|
||||||
# check the command line
|
# check the command line
|
||||||
#
|
#
|
||||||
usage="{ start | stop | restart | force-reload | status }"
|
usage="{ start | stop | restart | force-reload | status }"
|
||||||
if test $# -eq 0
|
if test $# -eq 0
|
||||||
then
|
then
|
||||||
echo usage: `basename $0` "${usage}" >&2
|
echo usage: `basename $0` "$usage" >&2
|
||||||
exit 2
|
exit 2
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# choose an infrastructure -- linux-standard-base (lsb) or not
|
||||||
|
#
|
||||||
|
if test -f /lib/lsb/init-functions
|
||||||
|
then
|
||||||
|
. /lib/lsb/init-functions
|
||||||
|
do_cmd_start()
|
||||||
|
{
|
||||||
|
lsb_text="$1"
|
||||||
|
shift
|
||||||
|
start_daemon -p "$pid_file" "$@"
|
||||||
|
local_errno=$?
|
||||||
|
if test "$local_errno" -eq 0
|
||||||
|
then
|
||||||
|
log_success_msg "$lsb_text"
|
||||||
|
else
|
||||||
|
log_failure_msg "$lsb_text"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
do_cmd_stop()
|
||||||
|
{
|
||||||
|
lsb_text="$1"
|
||||||
|
killproc -p "$pid_file" "`basename \"$2\"`"
|
||||||
|
local_errno=$?
|
||||||
|
if test "$local_errno" -eq 0
|
||||||
|
then
|
||||||
|
log_success_msg "$lsb_text"
|
||||||
|
else
|
||||||
|
log_failure_msg "$lsb_text"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
do_cmd_restarted()
|
||||||
|
{
|
||||||
|
local_errno="$?"
|
||||||
|
}
|
||||||
|
do_cmd_status()
|
||||||
|
{
|
||||||
|
lsb_text="$1"
|
||||||
|
base="`basename \"$2\"`"
|
||||||
|
pids="`pidofproc -p \"$pid_file\" \"$base\" | sed 's/ *$//'`"
|
||||||
|
if test "$pids" != ""
|
||||||
|
then
|
||||||
|
local_errno="0"
|
||||||
|
log_success_msg "$lsb_text"
|
||||||
|
else
|
||||||
|
local_errno="1"
|
||||||
|
log_failure_msg "$lsb_text"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
do_exit()
|
||||||
|
{
|
||||||
|
exit "$local_errno"
|
||||||
|
}
|
||||||
|
else
|
||||||
|
do_cmd_start()
|
||||||
|
{
|
||||||
|
$ECHO -n "$1"
|
||||||
|
shift
|
||||||
|
"$@"
|
||||||
|
local_errno="$?"
|
||||||
|
if test "$local_errno" -eq 0
|
||||||
|
then
|
||||||
|
$ECHO " ... done"
|
||||||
|
else
|
||||||
|
$ECHO " ... failed"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
do_cmd_stop()
|
||||||
|
{
|
||||||
|
$ECHO -n "$1"
|
||||||
|
if test -f "$pid_file" && test "`cat \"$pid_file\"`" != ""
|
||||||
|
then
|
||||||
|
kill "`cat $pid_file`"
|
||||||
|
rm -f "$pid_file" 2>/dev/null
|
||||||
|
fi
|
||||||
|
$ECHO " ... done"
|
||||||
|
local_errno="0" # (could do better)
|
||||||
|
}
|
||||||
|
do_cmd_restarted()
|
||||||
|
{
|
||||||
|
local_errno="$?"
|
||||||
|
}
|
||||||
|
do_cmd_status()
|
||||||
|
{
|
||||||
|
$ECHO -n "$1"
|
||||||
|
if test -f "$pid_file" && test "`cat \"$pid_file\"`" != "" && kill -0 "`cat \"$pid_file\"`" 2>/dev/null
|
||||||
|
then
|
||||||
|
$ECHO " ... running"
|
||||||
|
local_errno="0"
|
||||||
|
elif test -f "$pid_file"
|
||||||
|
then
|
||||||
|
$ECHO " ... failed"
|
||||||
|
local_errno="1"
|
||||||
|
else
|
||||||
|
$ECHO " ... not running"
|
||||||
|
local_errno="3"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
do_exit()
|
||||||
|
{
|
||||||
|
exit "$local_errno"
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
|
||||||
|
install_on_first_run()
|
||||||
|
{
|
||||||
|
# create a default config file if necessary and if possible
|
||||||
|
if test -f "$config_file_template" -a ! -f "$config_file"
|
||||||
|
then
|
||||||
|
cp -p "$config_file_template" "$config_file"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
config_options()
|
||||||
|
{
|
||||||
|
# echo --options from the config file
|
||||||
|
cat "$config_file" 2>/dev/null | egrep -v '^#|^gui-|^ *$' | sed 's/^/--/'
|
||||||
|
}
|
||||||
|
|
||||||
|
start_options()
|
||||||
|
{
|
||||||
|
# echo start command tail
|
||||||
|
echo --as-server --pid-file "$pid_file" `config_options`
|
||||||
|
}
|
||||||
|
|
||||||
# process the command line
|
# process the command line
|
||||||
#
|
#
|
||||||
${style}_reset
|
install_on_first_run
|
||||||
case "${1}" in
|
case "$1" in
|
||||||
|
|
||||||
start)
|
start)
|
||||||
shift
|
shift
|
||||||
eval ${style}_cmd_start \"Starting E-MailRelay server\" \"${emailrelay}\" `StartSwitches` "$@"
|
do_cmd_start "Starting E-MailRelay server" "$emailrelay" `start_options` "$@"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
stop)
|
stop)
|
||||||
${style}_cmd_stop "Shutting down E-MailRelay" "${emailrelay}"
|
do_cmd_stop "Shutting down E-MailRelay" "$emailrelay"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
restart|force-reload)
|
restart|force-reload)
|
||||||
shift
|
shift
|
||||||
$0 stop
|
$0 stop
|
||||||
$0 start "$@"
|
$0 start "$@"
|
||||||
${style}_cmd_restarted
|
do_cmd_restarted
|
||||||
;;
|
;;
|
||||||
|
|
||||||
reload)
|
try-restart|reload|force-reload)
|
||||||
echo usage: `basename $0` reload: not implemented >&2
|
echo `basename $0`: $1 not implemented >&2
|
||||||
exit 3
|
exit 3
|
||||||
;;
|
;;
|
||||||
|
|
||||||
status)
|
status)
|
||||||
${style}_cmd_status "Checking for E-MailRelay" "${emailrelay}"
|
do_cmd_status "Checking for E-MailRelay" "$emailrelay"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
*)
|
*)
|
||||||
echo usage: `basename $0` "${usage}" >&2
|
echo usage: `basename $0` "$usage" >&2
|
||||||
exit 2
|
exit 2
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
${style}_exit
|
do_exit
|
||||||
|
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
#
|
#
|
||||||
# Copyright (C) 2001-2008 Graeme Walker <graeme_walker@users.sourceforge.net>
|
# Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This program is distributed in the hope that it will be useful,
|
# This program is distributed in the hope that it will be useful,
|
||||||
@ -40,7 +40,7 @@ Usage()
|
|||||||
|
|
||||||
tmp="/tmp/`basename $0`.$$.tmp"
|
tmp="/tmp/`basename $0`.$$.tmp"
|
||||||
|
|
||||||
awk="gawk"
|
awk=`( gawk 'END {print "gawk"}' ; nawk 'END {print "nawk"}' ; echo awk ) 2>/dev/null < /dev/null | head -1`
|
||||||
if test "${1}" = "-a"
|
if test "${1}" = "-a"
|
||||||
then
|
then
|
||||||
shift
|
shift
|
||||||
@ -83,7 +83,7 @@ Expand()
|
|||||||
{
|
{
|
||||||
modified = 1
|
modified = 1
|
||||||
head = substr(line,1,rstart-1)
|
head = substr(line,1,rstart-1)
|
||||||
if( match(head,"^[[:space:]]*$") )
|
if( match(head,"^[\t ]*$") )
|
||||||
{
|
{
|
||||||
system( cat " " path )
|
system( cat " " path )
|
||||||
}
|
}
|
||||||
|
270
bin/fragment.pl_
@ -1,270 +0,0 @@
|
|||||||
#!/usr/bin/perl
|
|
||||||
#
|
|
||||||
# Copyright (C) 2001-2008 Graeme Walker <graeme_walker@users.sourceforge.net>
|
|
||||||
#
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program 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.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
# ===
|
|
||||||
#
|
|
||||||
# fragment.pl
|
|
||||||
#
|
|
||||||
# Splits a source file into small fragments so that
|
|
||||||
# they can be compiled separately.
|
|
||||||
#
|
|
||||||
# Starts a fragment at the start of a namespace or
|
|
||||||
# a method. Ends a fragment at a blank line following
|
|
||||||
# a closing brace in column one. If there is a comment
|
|
||||||
# "//pragma fragments" in the source file then it marks
|
|
||||||
# the end of the common, unfragmented code (eg. local
|
|
||||||
# declarations).
|
|
||||||
#
|
|
||||||
# usage: fragment.sh [-r] <dir-in> <dir-out>
|
|
||||||
#
|
|
||||||
# Pokes inside "Makefile.am" files to get a lists of files.
|
|
||||||
#
|
|
||||||
# Logs all created files on stdout, suitable for backticks.
|
|
||||||
#
|
|
||||||
|
|
||||||
use strict ;
|
|
||||||
use FileHandle ;
|
|
||||||
|
|
||||||
sub makefile_variable
|
|
||||||
{
|
|
||||||
return "FRAGMENTS_EXTRA_DIST" ;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub debug
|
|
||||||
{
|
|
||||||
# print @_ , "\n" ;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub file_list_from_makefile
|
|
||||||
{
|
|
||||||
my ( $dir_in ) = @_ ;
|
|
||||||
my $path = "$dir_in/Makefile.am" ;
|
|
||||||
debug( "makefile: $path" ) ;
|
|
||||||
my $f = new FileHandle( $path ) or return () ;
|
|
||||||
my %full_hash = () ;
|
|
||||||
while( <$f> )
|
|
||||||
{
|
|
||||||
my $line = $_ ;
|
|
||||||
chomp $line ;
|
|
||||||
my $v = makefile_variable() ;
|
|
||||||
if( $line =~ m/^$v/ )
|
|
||||||
{
|
|
||||||
$line =~ s/$v[[:space:]]*=[[:space:]]*// ;
|
|
||||||
my @list = split( '\s+' , $line ) ;
|
|
||||||
for my $l ( @list ) { $full_hash{$l} = 1 }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
debug( "makefile: $path: [".join("][",keys %full_hash)."]" ) ;
|
|
||||||
return keys %full_hash ;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub sub_directory_list
|
|
||||||
{
|
|
||||||
my ( $base ) = @_ ;
|
|
||||||
opendir( DIR , $base ) or return () ;
|
|
||||||
my @list = grep { !m/^\./ && -d "$base/$_" } readdir(DIR) ;
|
|
||||||
closedir( DIR ) ;
|
|
||||||
debug( "sub_directory_list: [".join("][",@list)."]" ) ;
|
|
||||||
return @list ;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub basename
|
|
||||||
{
|
|
||||||
my ( $path ) = @_ ;
|
|
||||||
$path =~ s:.*/:: ;
|
|
||||||
return $path ;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub dirname
|
|
||||||
{
|
|
||||||
my ( $path ) = @_ ;
|
|
||||||
$path =~ s:/[^/]*$:: ;
|
|
||||||
return $path eq "" ? "." : $path ;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub noextension
|
|
||||||
{
|
|
||||||
my ( $name ) = @_ ;
|
|
||||||
$name =~ s/\.[a-z]*$// ;
|
|
||||||
return $name ;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub name_to_show
|
|
||||||
{
|
|
||||||
my ( $path ) = @_ ;
|
|
||||||
$path =~ s/.cpp$/.o/ ;
|
|
||||||
return basename($path) ;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub mkdir_for
|
|
||||||
{
|
|
||||||
my ( $path_out ) = @_ ;
|
|
||||||
my $dir_out = dirname( $path_out ) ;
|
|
||||||
if( ! -d $dir_out )
|
|
||||||
{
|
|
||||||
debug( "mkdir [$dir_out]" ) ;
|
|
||||||
mkdir($dir_out) or die basename($0).": cannot create directory [$dir_out] ($!)" ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sub print_banner
|
|
||||||
{
|
|
||||||
my ( $output , $file_in , $file_out ) = @_ ;
|
|
||||||
my $me = basename($0) ;
|
|
||||||
my $filename_out = basename( $file_out ) ;
|
|
||||||
my $filename_in = basename( $file_in ) ;
|
|
||||||
print $output "//\n" ;
|
|
||||||
print $output "// $filename_out -- autogenerated from $filename_in by $me\n" ;
|
|
||||||
print $output "//\n" ;
|
|
||||||
print $output "\n" ;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub print_header
|
|
||||||
{
|
|
||||||
my ( $output , $head_ref ) = @_ ;
|
|
||||||
for my $h ( @$head_ref )
|
|
||||||
{
|
|
||||||
print $output $h , "\n" ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
my $n_ = 0 ;
|
|
||||||
sub first_file_out
|
|
||||||
{
|
|
||||||
$n_ = 0 ;
|
|
||||||
}
|
|
||||||
sub next_file_out
|
|
||||||
{
|
|
||||||
my ( $file_in , $dir_out ) = @_ ;
|
|
||||||
|
|
||||||
my $name = noextension(basename($file_in)) ;
|
|
||||||
my $file_out = "$dir_out/$name.$n_.cpp" ;
|
|
||||||
$n_++ ;
|
|
||||||
debug( "next: [$file_in] [$dir_out] [$file_out]" ) ;
|
|
||||||
return $file_out ;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub is_pragma
|
|
||||||
{
|
|
||||||
my ( $line ) = @_ ;
|
|
||||||
return $line =~ m:^ *//pragma *fragments: ;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub has_pragma
|
|
||||||
{
|
|
||||||
my ( $file_in ) = @_ ;
|
|
||||||
my $input = new FileHandle( $file_in , "<" ) ;
|
|
||||||
while( <$input> ) { return 1 if is_pragma($_) }
|
|
||||||
return 0 ;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub fragment
|
|
||||||
{
|
|
||||||
my ( $file_in , $dir_out ) = @_ ;
|
|
||||||
|
|
||||||
my $has_pragma = has_pragma( $file_in ) ;
|
|
||||||
my $input = new FileHandle( $file_in , "<" ) or die basename($0).": cannot open input file [$file_in]" ;
|
|
||||||
my $output = undef ;
|
|
||||||
my @head = () ;
|
|
||||||
my $state = 0 ;
|
|
||||||
my $previous_line = "" ;
|
|
||||||
my $was_brace = 0 ;
|
|
||||||
my $was_hash_if = 0 ;
|
|
||||||
my $seen_pragma = 0 ;
|
|
||||||
my @file_list = () ;
|
|
||||||
first_file_out() ;
|
|
||||||
while( <$input> )
|
|
||||||
{
|
|
||||||
my $line = $_ ;
|
|
||||||
chomp $line ;
|
|
||||||
|
|
||||||
my $is_pragma = is_pragma($line) ;
|
|
||||||
my $is_namespace = $line =~ m/^namespace/ ;
|
|
||||||
my $is_method = $line =~ m/^[^[:space:]].*::.*\(/ ;
|
|
||||||
my $is_blank = $line =~ m/^[[:space:]]*$/ ;
|
|
||||||
my $is_brace = $line =~ m/^}/ ;
|
|
||||||
my $is_hash_if = $line =~ m/^#if/ ;
|
|
||||||
|
|
||||||
if( ( $state == 0 || $state == 2 ) && ( ($seen_pragma || !$has_pragma) && ( $is_namespace || $is_method ) ) )
|
|
||||||
{
|
|
||||||
$state = 1 ;
|
|
||||||
my $file_out = next_file_out( $file_in , $dir_out ) ;
|
|
||||||
mkdir_for( $file_out ) ;
|
|
||||||
$output = new FileHandle( $file_out , ">" ) or die basename($0).": cannot create output file [$file_out]" ;
|
|
||||||
push @file_list , name_to_show($file_out) ;
|
|
||||||
print_banner( $output , $file_in , $file_out ) ;
|
|
||||||
print_header( $output , \@head ) ;
|
|
||||||
if( $was_hash_if ) { print $output $previous_line , "\n" }
|
|
||||||
print $output $line , "\n" ;
|
|
||||||
}
|
|
||||||
elsif( $state == 1 && $was_brace && $is_blank )
|
|
||||||
{
|
|
||||||
$state = 2 ;
|
|
||||||
}
|
|
||||||
elsif( $state == 1 )
|
|
||||||
{
|
|
||||||
print $output $line , "\n" ;
|
|
||||||
}
|
|
||||||
elsif( $state == 0 )
|
|
||||||
{
|
|
||||||
push @head , $line unless $is_pragma ;
|
|
||||||
}
|
|
||||||
$was_brace = $is_brace ;
|
|
||||||
$was_hash_if = $is_hash_if ;
|
|
||||||
$seen_pragma = $seen_pragma || $is_pragma ;
|
|
||||||
$previous_line = $line ;
|
|
||||||
}
|
|
||||||
close $input or die ;
|
|
||||||
if( defined($output) ) { close $output or die basename($0).": cannot close output file" }
|
|
||||||
return @file_list ;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub main
|
|
||||||
{
|
|
||||||
my $recursive = scalar(@ARGV) && $ARGV[0] eq "-r" ;
|
|
||||||
shift @ARGV if $recursive ;
|
|
||||||
|
|
||||||
my $dir_in = shift @ARGV ;
|
|
||||||
if( ! -d $dir_in )
|
|
||||||
{
|
|
||||||
die basename($0) . ": not a valid directory [$dir_in]" ;
|
|
||||||
}
|
|
||||||
|
|
||||||
my $dir_out = shift @ARGV ;
|
|
||||||
if( ! -d $dir_out )
|
|
||||||
{
|
|
||||||
die basename($0) . ": not a valid directory [$dir_out]" ;
|
|
||||||
}
|
|
||||||
|
|
||||||
my @list_out = () ;
|
|
||||||
my @dir_list_in = ( "." ) ;
|
|
||||||
push @dir_list_in , sub_directory_list($dir_in) if $recursive ;
|
|
||||||
|
|
||||||
for my $subdir ( @dir_list_in )
|
|
||||||
{
|
|
||||||
my $dir_in = "$dir_in/$subdir" ;
|
|
||||||
my @list_in = file_list_from_makefile( $dir_in ) ;
|
|
||||||
for my $file_in ( @list_in )
|
|
||||||
{
|
|
||||||
my $path_in = $dir_in . "/" . $file_in ;
|
|
||||||
push @list_out , fragment( $path_in , $dir_out ) ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
print join(" ",@list_out) , "\n" ;
|
|
||||||
}
|
|
||||||
|
|
||||||
main() ;
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
#
|
#
|
||||||
# Copyright (C) 2001-2008 Graeme Walker <graeme_walker@users.sourceforge.net>
|
# Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This program is distributed in the hope that it will be useful,
|
# This program is distributed in the hope that it will be useful,
|
||||||
@ -21,15 +21,16 @@
|
|||||||
# Makes a Mac OS X application bundle. Called from make.
|
# Makes a Mac OS X application bundle. Called from make.
|
||||||
#
|
#
|
||||||
# usage: make-bundle.sh [-f] <name> <exe> <icon> [<version>]
|
# usage: make-bundle.sh [-f] <name> <exe> <icon> [<version>]
|
||||||
|
# -f : force running on non-Mac systems
|
||||||
#
|
#
|
||||||
# Silently does nothing on non-Mac systems.
|
# Silently does nothing on non-Mac systems (unless forced).
|
||||||
#
|
#
|
||||||
|
|
||||||
force="0" ; if test "$1" = "-f" ; then force="1" ; shift ; fi
|
force="0" ; if test "$1" = "-f" ; then force="1" ; shift ; fi
|
||||||
name="$1"
|
name="$1"
|
||||||
exe="$2"
|
exe="$2"
|
||||||
icon="$3"
|
icon="$3"
|
||||||
version="$4" ; if test "${version}" = "" ; then version="1.8.1.0" ; fi
|
version="$4" ; if test "${version}" = "" ; then version="1.9.0" ; fi
|
||||||
|
|
||||||
if test "${name}" = ""
|
if test "${name}" = ""
|
||||||
then
|
then
|
||||||
@ -62,6 +63,7 @@ dir="${name}.app/Contents"
|
|||||||
mkdir -p "${dir}/MacOS" 2>/dev/null
|
mkdir -p "${dir}/MacOS" 2>/dev/null
|
||||||
mkdir -p "${dir}/Resources" 2>/dev/null
|
mkdir -p "${dir}/Resources" 2>/dev/null
|
||||||
|
|
||||||
|
# hard-link the binary and copy the icon
|
||||||
ln -f "${exe}" "${dir}/MacOS/${name}"
|
ln -f "${exe}" "${dir}/MacOS/${name}"
|
||||||
cp "${icon}" "${dir}/Resources/${name}.icns"
|
cp "${icon}" "${dir}/Resources/${name}.icns"
|
||||||
|
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
#
|
#
|
||||||
# Copyright (C) 2001-2008 Graeme Walker <graeme_walker@users.sourceforge.net>
|
# Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This program is distributed in the hope that it will be useful,
|
# This program is distributed in the hope that it will be useful,
|
||||||
@ -27,7 +27,7 @@
|
|||||||
#
|
#
|
||||||
# Silently does nothing on non-Mac systems.
|
# Silently does nothing on non-Mac systems.
|
||||||
#
|
#
|
||||||
# See "http://doc.trolltech.com/4.3/deployment-mac.html".
|
# See "http://qt-project.org/doc/qt-4.8/deployment-mac.html".
|
||||||
#
|
#
|
||||||
|
|
||||||
force="0" ; if test "$1" = "-f" ; then force="1" ; shift ; fi
|
force="0" ; if test "$1" = "-f" ; then force="1" ; shift ; fi
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
#
|
#
|
||||||
# Copyright (C) 2001-2008 Graeme Walker <graeme_walker@users.sourceforge.net>
|
# Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This program is distributed in the hope that it will be useful,
|
# This program is distributed in the hope that it will be useful,
|
||||||
@ -21,7 +21,7 @@
|
|||||||
# Builds a "setup" self-extracting archive -- or a payload file for
|
# Builds a "setup" self-extracting archive -- or a payload file for
|
||||||
# one -- derived from running "make install" into a temporary directory.
|
# one -- derived from running "make install" into a temporary directory.
|
||||||
#
|
#
|
||||||
# usage: make-setup.sh [-d] <output> <stub> <pack-utility> <icon>
|
# usage: make-setup.sh [-d] <output> {<stub>|NONE} <pack-utility> <icon>
|
||||||
#
|
#
|
||||||
# Normally run by "make setup" in the "src/gui".
|
# Normally run by "make setup" in the "src/gui".
|
||||||
#
|
#
|
||||||
@ -61,18 +61,25 @@ Fail()
|
|||||||
}
|
}
|
||||||
|
|
||||||
# check the command-line
|
# check the command-line
|
||||||
if test "$setup" = "" -o ! -f "$stub" -o ! -x "$pack"
|
if test "$setup" = "" -o \( "$stub" != "NONE" -a ! -f "$stub" \) -o ! -x "$pack"
|
||||||
then
|
then
|
||||||
echo usage: `basename $0` '<setup> <stub> <pack>' >&2
|
echo usage: `basename $0` '<setup> <stub> <pack>' >&2
|
||||||
exit 2
|
exit 2
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# run "make install"
|
# run "make install"
|
||||||
echo `basename $0`: running make install into $install
|
echo `basename $0`: running make install into $install
|
||||||
mkdir -p $install
|
mkdir -p $install
|
||||||
( cd ../.. && make install HAVE_DOXYGEN=no DESTDIR=$install ) > /dev/null 2>&1
|
( cd ../.. && make install HAVE_DOXYGEN=no DESTDIR=$install ) > /dev/null 2>&1
|
||||||
|
|
||||||
# add in some extras
|
# check the "./configure" directories were sane (see bin/configure-fhs.sh)
|
||||||
|
if test ! -d "$install/usr/lib/emailrelay" -a ! -d "$install/Applications/E-MailRelay"
|
||||||
|
then
|
||||||
|
echo `basename $0`: cannot see expected directories in the install tree >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# add some extras into the install
|
||||||
if test -d "$install/usr/lib/emailrelay/"
|
if test -d "$install/usr/lib/emailrelay/"
|
||||||
then
|
then
|
||||||
cp "$icon" $install/usr/lib/emailrelay/
|
cp "$icon" $install/usr/lib/emailrelay/
|
||||||
@ -94,8 +101,8 @@ find $install -type f | Filter | grep -n . | sed 's/:/1 /' > $list
|
|||||||
( cd $install && find . -type f ) | Filter | grep -n . | sed 's/:/2 /' | Edit >> $list
|
( cd $install && find . -type f ) | Filter | grep -n . | sed 's/:/2 /' | Edit >> $list
|
||||||
sort -n $list | sed 's/^[0-9][0-9]* //' > $list.tmp && mv $list.tmp $list
|
sort -n $list | sed 's/^[0-9][0-9]* //' > $list.tmp && mv $list.tmp $list
|
||||||
|
|
||||||
# create the packed file
|
# create the packed file - dont bother compressing any more (-p)
|
||||||
echo `basename $0`: packing
|
echo `basename $0`: packing
|
||||||
PATH=".:$PATH"
|
PATH=".:$PATH"
|
||||||
"$pack" -q -f "$list" "$setup" "$stub"
|
"$pack" -p -q -f "$list" "$setup" "$stub"
|
||||||
|
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
#
|
#
|
||||||
# Copyright (C) 2001-2008 Graeme Walker <graeme_walker@users.sourceforge.net>
|
# Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This program is distributed in the hope that it will be useful,
|
# This program is distributed in the hope that it will be useful,
|
||||||
@ -36,7 +36,7 @@
|
|||||||
# text for the title.)
|
# text for the title.)
|
||||||
#
|
#
|
||||||
|
|
||||||
awk="gawk"
|
awk=`( gawk 'END {print "gawk"}' ; nawk 'END {print "nawk"}' ; echo awk ) 2>/dev/null < /dev/null | head -1`
|
||||||
if test "${1}" = "-a"
|
if test "${1}" = "-a"
|
||||||
then
|
then
|
||||||
shift
|
shift
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
#
|
#
|
||||||
# Copyright (C) 2001-2008 Graeme Walker <graeme_walker@users.sourceforge.net>
|
# Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This program is distributed in the hope that it will be useful,
|
# This program is distributed in the hope that it will be useful,
|
||||||
@ -26,18 +26,21 @@
|
|||||||
# "<em></em>" tags, and it converts "*foo* [bar]" text into
|
# "<em></em>" tags, and it converts "*foo* [bar]" text into
|
||||||
# hypertext links.
|
# hypertext links.
|
||||||
#
|
#
|
||||||
|
# usage: mu2html.sh [-a <awk>] [-x] [-i] [<title> [<stylesheet>]]
|
||||||
|
#
|
||||||
# The "-x" flag suppresses the output of html header and
|
# The "-x" flag suppresses the output of html header and
|
||||||
# footer sections. This is useful when the output is to be
|
# footer sections. This is useful when the output is to be
|
||||||
# spliced into another html document.
|
# spliced into another html document.
|
||||||
#
|
#
|
||||||
# usage: mu2html.sh [-a <awk>] [-x] [<title> [<stylesheet>]]
|
# The "-i" flag makes the stylesheet inline, in the <header>
|
||||||
|
# section.
|
||||||
#
|
#
|
||||||
# (If the title is not supplied then the input is copied
|
# (If the title is not supplied then the input is copied
|
||||||
# to a temporary file in order to extract the H1 header
|
# to a temporary file in order to extract the H1 header
|
||||||
# text for the title.)
|
# text for the title.)
|
||||||
#
|
#
|
||||||
|
|
||||||
awk="gawk"
|
awk=`( gawk 'END {print "gawk"}' ; nawk 'END {print "nawk"}' ; echo awk ) 2>/dev/null < /dev/null | head -1`
|
||||||
if test "${1}" = "-a"
|
if test "${1}" = "-a"
|
||||||
then
|
then
|
||||||
shift
|
shift
|
||||||
@ -52,6 +55,13 @@ then
|
|||||||
shift
|
shift
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
inline="0"
|
||||||
|
if test "${1}" = "-i"
|
||||||
|
then
|
||||||
|
inline="1"
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
|
||||||
title="${1}"
|
title="${1}"
|
||||||
stylesheet="${2}"
|
stylesheet="${2}"
|
||||||
|
|
||||||
@ -63,7 +73,7 @@ fi
|
|||||||
|
|
||||||
Main()
|
Main()
|
||||||
{
|
{
|
||||||
${awk} -v prefix="`basename $0`" -v title="${1}" -v stylesheet="${2}" -v full="${3}" '
|
${awk} -v prefix="`basename $0`" -v title="${1}" -v stylesheet="${2}" -v full="${3}" -v inline="${4}" '
|
||||||
BEGIN {
|
BEGIN {
|
||||||
if( full )
|
if( full )
|
||||||
{
|
{
|
||||||
@ -75,7 +85,18 @@ Main()
|
|||||||
printf( " <title>%s</title>\n" , title )
|
printf( " <title>%s</title>\n" , title )
|
||||||
printf( " <meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\">\n" )
|
printf( " <meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\">\n" )
|
||||||
if( length(stylesheet) )
|
if( length(stylesheet) )
|
||||||
printf( " <link rel=\"stylesheet\" href=\"%s\" type=\"text/css\">\n" , stylesheet )
|
{
|
||||||
|
if(inline)
|
||||||
|
{
|
||||||
|
printf( " <style>\n" )
|
||||||
|
system( "cat " stylesheet )
|
||||||
|
printf( " </style>\n" )
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf( " <link rel=\"stylesheet\" href=\"%s\" type=\"text/css\">\n" , stylesheet )
|
||||||
|
}
|
||||||
|
}
|
||||||
printf( " </head>\n" )
|
printf( " </head>\n" )
|
||||||
printf( " <body>\n" )
|
printf( " <body>\n" )
|
||||||
printf( " <!-- index:0::::%s -->\n" , title )
|
printf( " <!-- index:0::::%s -->\n" , title )
|
||||||
@ -269,9 +290,9 @@ then
|
|||||||
${awk} '{print}' > "${tmp}"
|
${awk} '{print}' > "${tmp}"
|
||||||
touch "${tmp}"
|
touch "${tmp}"
|
||||||
title="`${awk} '/^h1/ { sub(\"[^:]*:\",\"\") ; print ; exit }' \"${tmp}\"`"
|
title="`${awk} '/^h1/ { sub(\"[^:]*:\",\"\") ; print ; exit }' \"${tmp}\"`"
|
||||||
${awk} '{print}' "${tmp}" | Main "${title}" "${stylesheet}" "${full}" | Anchorise
|
${awk} '{print}' "${tmp}" | Main "${title}" "${stylesheet}" "${full}" "${inline}" | Anchorise
|
||||||
rm -f "${tmp}"
|
rm -f "${tmp}"
|
||||||
else
|
else
|
||||||
Main "${title}" "${stylesheet}" "${full}" | Anchorise
|
Main "${title}" "${stylesheet}" "${full}" "${inline}" | Anchorise
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
#
|
#
|
||||||
# Copyright (C) 2001-2008 Graeme Walker <graeme_walker@users.sourceforge.net>
|
# Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This program is distributed in the hope that it will be useful,
|
# This program is distributed in the hope that it will be useful,
|
||||||
@ -31,7 +31,7 @@
|
|||||||
# usage: txt2html.sh [-a <awk-binary>] [-v] [-x] [-t] [<input-file> [<stylesheet> [<graphics-dir> [<title>]]]]
|
# usage: txt2html.sh [-a <awk-binary>] [-v] [-x] [-t] [<input-file> [<stylesheet> [<graphics-dir> [<title>]]]]
|
||||||
#
|
#
|
||||||
|
|
||||||
awk="gawk"
|
awk=`( gawk 'END {print "gawk"}' ; nawk 'END {print "nawk"}' ; echo awk ) 2>/dev/null < /dev/null | head -1`
|
||||||
if test "${1}" = "-a"
|
if test "${1}" = "-a"
|
||||||
then
|
then
|
||||||
shift
|
shift
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
#
|
#
|
||||||
# Copyright (C) 2001-2008 Graeme Walker <graeme_walker@users.sourceforge.net>
|
# Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
#
|
#
|
||||||
# This program is distributed in the hope that it will be useful,
|
# This program is distributed in the hope that it will be useful,
|
||||||
@ -28,7 +28,7 @@
|
|||||||
# usage: txt2mu.sh [-a <awk-binary>] [-t] [<input-file>]
|
# usage: txt2mu.sh [-a <awk-binary>] [-t] [<input-file>]
|
||||||
#
|
#
|
||||||
|
|
||||||
awk="gawk"
|
awk=`( gawk 'END {print "gawk"}' ; nawk 'END {print "nawk"}' ; echo awk ) 2>/dev/null < /dev/null | head -1`
|
||||||
if test "${1}" = "-a"
|
if test "${1}" = "-a"
|
||||||
then
|
then
|
||||||
shift
|
shift
|
||||||
@ -74,23 +74,23 @@ Main()
|
|||||||
function process( line , next_ )
|
function process( line , next_ )
|
||||||
{
|
{
|
||||||
tab = " "
|
tab = " "
|
||||||
is_blank = match( line , "^[[:space:]]*$" )
|
is_blank = match( line , "^[\t ]*$" )
|
||||||
is_heading = match( next_ , "^==*[[:space:]]*$" )
|
is_heading = match( next_ , "^==*[\t ]*$" )
|
||||||
is_footer = match( line , "^____*[[:space:]]*$" )
|
is_footer = match( line , "^____*[\t ]*$" )
|
||||||
is_sub_heading = match( next_ , "^--*[[:space:]]*$" )
|
is_sub_heading = match( next_ , "^--*[\t ]*$" )
|
||||||
is_item = match( line , "^\\* " )
|
is_item = match( line , "^\\* " )
|
||||||
is_item_name = match( line , "^\\# " )
|
is_item_name = match( line , "^\\# " )
|
||||||
is_item_detail = match( line , "^ [^- ]" )
|
is_item_detail = match( line , "^ [^- ]" )
|
||||||
is_item_numbered = match( line , "^\\([[:digit:]][[:digit:]]*\\)" )
|
is_item_numbered = match( line , "^\\([0123456789][0123456789]*\\)" )
|
||||||
is_heading_line = match( line , "^==*[[:space:]]*$" )
|
is_heading_line = match( line , "^==*[\t ]*$" )
|
||||||
is_sub_heading_line = match( line , "^--*[[:space:]]*$" )
|
is_sub_heading_line = match( line , "^--*[\t ]*$" )
|
||||||
is_image = match( line , "^[[:space:]]*<<.*>>[[:space:]]*$" )
|
is_image = match( line , "^[\t ]*<<.*>>[\t ]*$" )
|
||||||
|
|
||||||
if( text_mode )
|
if( text_mode )
|
||||||
{
|
{
|
||||||
is_citation = match( line , "^" tab "[^" tab "]" )
|
is_citation = match( line , "^" tab "[^" tab "]" )
|
||||||
is_author = match( line , "^" tab tab )
|
is_author = match( line , "^" tab tab )
|
||||||
is_html = match( line , "^<.*>[[:space:]]*$" )
|
is_html = match( line , "^<.*>[\t ]*$" )
|
||||||
is_code = 0
|
is_code = 0
|
||||||
is_item_outer = 0
|
is_item_outer = 0
|
||||||
is_item_inner = 0
|
is_item_inner = 0
|
||||||
@ -116,8 +116,8 @@ Main()
|
|||||||
}
|
}
|
||||||
else if( is_image )
|
else if( is_image )
|
||||||
{
|
{
|
||||||
sub( "^[[:space:]]*<<" , "" , line )
|
sub( "^[\t ]*<<" , "" , line )
|
||||||
sub( ">>[[:space:]]*$" , "" , line )
|
sub( ">>[\t ]*$" , "" , line )
|
||||||
tagOutputRaw( line , "image" )
|
tagOutputRaw( line , "image" )
|
||||||
}
|
}
|
||||||
else if( is_html )
|
else if( is_html )
|
||||||
@ -155,7 +155,7 @@ Main()
|
|||||||
}
|
}
|
||||||
else if( is_item_numbered )
|
else if( is_item_numbered )
|
||||||
{
|
{
|
||||||
gsub( "^\\([[:digit:]][[:digit:]]*\\) " , "" , line )
|
gsub( "^\\([0123456789][0123456789]*\\) " , "" , line )
|
||||||
tagOutput( line , "item-numbered" )
|
tagOutput( line , "item-numbered" )
|
||||||
}
|
}
|
||||||
else if( is_citation )
|
else if( is_citation )
|
||||||
@ -264,7 +264,7 @@ Compress()
|
|||||||
function process( previous , line , next_ )
|
function process( previous , line , next_ )
|
||||||
{
|
{
|
||||||
re_blank = "^blank:"
|
re_blank = "^blank:"
|
||||||
re_heading = "^h[[:digit:]][:,]"
|
re_heading = "^h[0123456789][:,]"
|
||||||
re_detail = "^item-detail:"
|
re_detail = "^item-detail:"
|
||||||
re_pre_start = "^code,1[:,]"
|
re_pre_start = "^code,1[:,]"
|
||||||
|
|
||||||
|
10
config.h.in
@ -16,6 +16,9 @@
|
|||||||
/* Define to 1 if getipnodebyname() is available */
|
/* Define to 1 if getipnodebyname() is available */
|
||||||
#undef HAVE_GETIPNODEBYNAME
|
#undef HAVE_GETIPNODEBYNAME
|
||||||
|
|
||||||
|
/* Define to 1 if getpwnam_r in pwd.h */
|
||||||
|
#undef HAVE_GETPWNAM_R
|
||||||
|
|
||||||
/* Define to 1 if you have the `glob' function. */
|
/* Define to 1 if you have the `glob' function. */
|
||||||
#undef HAVE_GLOB
|
#undef HAVE_GLOB
|
||||||
|
|
||||||
@ -78,8 +81,8 @@
|
|||||||
/* Define to 1 if you have the <unistd.h> header file. */
|
/* Define to 1 if you have the <unistd.h> header file. */
|
||||||
#undef HAVE_UNISTD_H
|
#undef HAVE_UNISTD_H
|
||||||
|
|
||||||
/* Define to 1 if you have the <zlib.h> header file. */
|
/* Define to enable use of zlib */
|
||||||
#undef HAVE_ZLIB_H
|
#undef HAVE_ZLIB
|
||||||
|
|
||||||
/* Define to the address where bug reports for this package should be sent. */
|
/* Define to the address where bug reports for this package should be sent. */
|
||||||
#undef PACKAGE_BUGREPORT
|
#undef PACKAGE_BUGREPORT
|
||||||
@ -93,6 +96,9 @@
|
|||||||
/* Define to the one symbol short name of this package. */
|
/* Define to the one symbol short name of this package. */
|
||||||
#undef PACKAGE_TARNAME
|
#undef PACKAGE_TARNAME
|
||||||
|
|
||||||
|
/* Define to the home page for this package. */
|
||||||
|
#undef PACKAGE_URL
|
||||||
|
|
||||||
/* Define to the version of this package. */
|
/* Define to the version of this package. */
|
||||||
#undef PACKAGE_VERSION
|
#undef PACKAGE_VERSION
|
||||||
|
|
||||||
|
89
configure.ac
@ -1,8 +1,8 @@
|
|||||||
dnl Copyright (C) 2001-2008 Graeme Walker <graeme_walker@users.sourceforge.net>
|
dnl Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>
|
||||||
dnl
|
dnl
|
||||||
dnl This program is free software: you can redistribute it and/or modify
|
dnl This program is free software: you can redistribute it and/or modify
|
||||||
dnl it under the terms of the GNU General Public License as published by
|
dnl it under the terms of the GNU General Public License as published by
|
||||||
dnl the Free Software Foundation, either version 3 of the License, or
|
dnl the Free Software Foundation, either version 3 of the License, or
|
||||||
dnl (at your option) any later version.
|
dnl (at your option) any later version.
|
||||||
dnl
|
dnl
|
||||||
dnl This program is distributed in the hope that it will be useful,
|
dnl This program is distributed in the hope that it will be useful,
|
||||||
@ -17,11 +17,12 @@ dnl
|
|||||||
dnl Process this file with autoconf to produce a configure script.
|
dnl Process this file with autoconf to produce a configure script.
|
||||||
dnl
|
dnl
|
||||||
|
|
||||||
AC_INIT([E-MailRelay],[1.8.1],,[emailrelay])
|
AC_INIT([E-MailRelay],[1.9],[],[emailrelay])
|
||||||
AC_CONFIG_SRCDIR(src/gsmtp/gsmtp.h)
|
AC_CONFIG_SRCDIR(src/gsmtp/gsmtp.h)
|
||||||
AM_INIT_AUTOMAKE([no-define])
|
AM_INIT_AUTOMAKE([no-define])
|
||||||
AM_CONFIG_HEADER(config.h)
|
AM_CONFIG_HEADER(config.h)
|
||||||
AM_MAINTAINER_MODE
|
AM_MAINTAINER_MODE
|
||||||
|
AC_DISABLE_OPTION_CHECKING
|
||||||
|
|
||||||
dnl ===
|
dnl ===
|
||||||
dnl check for programs...
|
dnl check for programs...
|
||||||
@ -38,14 +39,14 @@ AC_CHECK_PROGS(GZIP,gzip)
|
|||||||
AC_CHECK_PROG(HAVE_DOXYGEN,doxygen,yes)
|
AC_CHECK_PROG(HAVE_DOXYGEN,doxygen,yes)
|
||||||
AC_CHECK_PROG(HAVE_MAN2HTML,man2html,yes)
|
AC_CHECK_PROG(HAVE_MAN2HTML,man2html,yes)
|
||||||
ACLOCAL_COMPILER_VERSION
|
ACLOCAL_COMPILER_VERSION
|
||||||
|
ACLOCAL_CAPABILITIES
|
||||||
|
|
||||||
dnl ===
|
dnl ===
|
||||||
dnl check for libraries...
|
dnl check for libraries...
|
||||||
dnl
|
dnl
|
||||||
AC_LANG_C
|
AC_LANG([C])
|
||||||
AC_SEARCH_LIBS(gethostbyname,nsl)
|
AC_SEARCH_LIBS(gethostbyname,nsl)
|
||||||
AC_SEARCH_LIBS(connect,socket)
|
AC_SEARCH_LIBS(connect,socket)
|
||||||
AC_SEARCH_LIBS(compress2,z)
|
|
||||||
|
|
||||||
dnl ===
|
dnl ===
|
||||||
dnl check for header files, functions and typedefs...
|
dnl check for header files, functions and typedefs...
|
||||||
@ -55,14 +56,16 @@ AC_HEADER_DIRENT
|
|||||||
AC_HEADER_TIME
|
AC_HEADER_TIME
|
||||||
AC_CHECK_HEADERS(unistd.h)
|
AC_CHECK_HEADERS(unistd.h)
|
||||||
AC_CHECK_HEADERS(sys/time.h)
|
AC_CHECK_HEADERS(sys/time.h)
|
||||||
AC_CHECK_HEADERS(zlib.h)
|
|
||||||
AC_CHECK_FUNCS(glob)
|
AC_CHECK_FUNCS(glob)
|
||||||
AC_LANG_CPLUSPLUS
|
AC_LANG([C++])
|
||||||
ACLOCAL_TYPE_SOCKLEN_T
|
ACLOCAL_TYPE_SOCKLEN_T
|
||||||
ACLOCAL_CHECK_IPV6
|
ACLOCAL_CHECK_IPV6
|
||||||
ACLOCAL_CHECK_GETIPNODEBYNAME
|
ACLOCAL_CHECK_GETIPNODEBYNAME
|
||||||
ACLOCAL_CHECK_SIN6_LEN
|
ACLOCAL_CHECK_SIN6_LEN
|
||||||
ACLOCAL_CHECK_BUGGY_CTIME
|
ACLOCAL_CHECK_BUGGY_CTIME
|
||||||
|
ACLOCAL_CHECK_PAM_HEADERS
|
||||||
|
ACLOCAL_CHECK_PAM
|
||||||
|
ACLOCAL_CHECK_GETPWNAM_R
|
||||||
ACLOCAL_CHECK_GMTIME_R
|
ACLOCAL_CHECK_GMTIME_R
|
||||||
ACLOCAL_CHECK_LOCALTIME_R
|
ACLOCAL_CHECK_LOCALTIME_R
|
||||||
ACLOCAL_CHECK_SETGROUPS
|
ACLOCAL_CHECK_SETGROUPS
|
||||||
@ -76,142 +79,155 @@ PKG_PROG_PKG_CONFIG(0.9.0)
|
|||||||
dnl ===
|
dnl ===
|
||||||
dnl "--enable-debug"
|
dnl "--enable-debug"
|
||||||
dnl
|
dnl
|
||||||
AC_ARG_ENABLE(debug,AC_HELP_STRING([--enable-debug],[enable extra debug messages at compile-time (default no)]))
|
AC_ARG_ENABLE(debug,AS_HELP_STRING([--enable-debug],[enable extra debug messages at compile-time (default no)]))
|
||||||
ENABLE_DEBUG
|
ENABLE_DEBUG
|
||||||
|
|
||||||
dnl ===
|
dnl ===
|
||||||
dnl "--enable-ipv6"
|
dnl "--enable-ipv6"
|
||||||
dnl
|
dnl
|
||||||
AC_ARG_ENABLE(ipv6,AC_HELP_STRING([--enable-ipv6],[enable ipv6 (default no)]))
|
AC_ARG_ENABLE(ipv6,AS_HELP_STRING([--enable-ipv6],[enable ipv6 (default no)]))
|
||||||
ENABLE_IPV6
|
ENABLE_IPV6
|
||||||
|
|
||||||
dnl ===
|
dnl ===
|
||||||
dnl "--enable-gui"
|
dnl "--enable-gui"
|
||||||
dnl
|
dnl
|
||||||
AC_ARG_ENABLE(gui,AC_HELP_STRING([--enable-gui],[enable configuration gui (requires Qt4) (default auto)]))
|
AC_ARG_ENABLE(gui,AS_HELP_STRING([--enable-gui],[enable configuration gui (requires Qt4) (default auto)]))
|
||||||
ENABLE_GUI
|
ENABLE_GUI
|
||||||
|
|
||||||
dnl ===
|
dnl ===
|
||||||
dnl "--enable-verbose"
|
dnl "--enable-verbose"
|
||||||
dnl
|
dnl
|
||||||
AC_ARG_ENABLE(verbose,AC_HELP_STRING([--enable-verbose],[enable verbose logging (default yes)]))
|
AC_ARG_ENABLE(verbose,AS_HELP_STRING([--enable-verbose],[enable verbose logging (default yes)]))
|
||||||
ENABLE_VERBOSE
|
ENABLE_VERBOSE
|
||||||
|
|
||||||
dnl ===
|
dnl ===
|
||||||
dnl "--enable-pop"
|
dnl "--enable-pop"
|
||||||
dnl
|
dnl
|
||||||
AC_ARG_ENABLE(pop,AC_HELP_STRING([--enable-pop],[enable pop3 protocol (default yes)]))
|
AC_ARG_ENABLE(pop,AS_HELP_STRING([--enable-pop],[enable pop3 server protocol (default yes)]))
|
||||||
ENABLE_POP
|
ENABLE_POP
|
||||||
|
|
||||||
dnl ===
|
dnl ===
|
||||||
dnl "--enable-exec"
|
dnl "--enable-exec"
|
||||||
dnl
|
dnl
|
||||||
AC_ARG_ENABLE(exec,AC_HELP_STRING([--enable-exec],[enable running of external programs (disable-exec requires disable-gui) (default yes)]))
|
AC_ARG_ENABLE(exec,AS_HELP_STRING([--enable-exec],[enable running of external programs (disable-exec requires disable-gui) (default yes)]))
|
||||||
ENABLE_EXEC
|
ENABLE_EXEC
|
||||||
|
|
||||||
dnl ===
|
dnl ===
|
||||||
dnl "--enable-admin"
|
dnl "--enable-admin"
|
||||||
dnl
|
dnl
|
||||||
AC_ARG_ENABLE(exec,AC_HELP_STRING([--enable-admin],[enable admin interface (default yes)]))
|
AC_ARG_ENABLE(exec,AS_HELP_STRING([--enable-admin],[enable admin interface (default yes)]))
|
||||||
ENABLE_ADMIN
|
ENABLE_ADMIN
|
||||||
|
|
||||||
dnl ===
|
dnl ===
|
||||||
dnl "--enable-auth"
|
dnl "--enable-auth"
|
||||||
dnl
|
dnl
|
||||||
AC_ARG_ENABLE(exec,AC_HELP_STRING([--enable-auth],[enable authentication (disable-auth requires disable-pop) (default yes)]))
|
AC_ARG_ENABLE(exec,AS_HELP_STRING([--enable-auth],[enable authentication (disable-auth requires disable-pop) (default yes)]))
|
||||||
ENABLE_AUTH
|
ENABLE_AUTH
|
||||||
|
|
||||||
dnl ===
|
dnl ===
|
||||||
dnl "--enable-dns"
|
dnl "--enable-dns"
|
||||||
dnl
|
dnl
|
||||||
AC_ARG_ENABLE(exec,AC_HELP_STRING([--enable-dns],[enable dns lookup (default yes)]))
|
AC_ARG_ENABLE(exec,AS_HELP_STRING([--enable-dns],[enable dns lookup (default yes)]))
|
||||||
ENABLE_DNS
|
ENABLE_DNS
|
||||||
|
|
||||||
dnl ===
|
dnl ===
|
||||||
dnl "--enable-identity"
|
dnl "--enable-identity"
|
||||||
dnl
|
dnl
|
||||||
AC_ARG_ENABLE(exec,AC_HELP_STRING([--enable-identity],[enable process userid switching (default yes)]))
|
AC_ARG_ENABLE(exec,AS_HELP_STRING([--enable-identity],[enable process userid switching (default yes)]))
|
||||||
ENABLE_IDENTITY
|
ENABLE_IDENTITY
|
||||||
|
|
||||||
dnl ===
|
dnl ===
|
||||||
dnl "--enable-small-config"
|
dnl "--enable-small-config"
|
||||||
dnl
|
dnl
|
||||||
AC_ARG_ENABLE(exec,AC_HELP_STRING([--enable-small-config],[enable simplified confuration code for smaller binaries (rtfm) (default no)]))
|
AC_ARG_ENABLE(exec,AS_HELP_STRING([--enable-small-config],[enable simplified confuration code for smaller binaries (rtfm) (default no)]))
|
||||||
ENABLE_SMALL_CONFIG
|
ENABLE_SMALL_CONFIG
|
||||||
|
|
||||||
dnl ===
|
|
||||||
dnl "--enable-small-fragments"
|
|
||||||
dnl
|
|
||||||
AC_ARG_ENABLE(exec,AC_HELP_STRING([--enable-small-fragments],[enable fragmented object files for smaller binaries (default no)]))
|
|
||||||
ENABLE_SMALL_FRAGMENTS
|
|
||||||
|
|
||||||
dnl ===
|
dnl ===
|
||||||
dnl "--enable-small-exceptions"
|
dnl "--enable-small-exceptions"
|
||||||
dnl
|
dnl
|
||||||
AC_ARG_ENABLE(small_exceptions,AC_HELP_STRING([--enable-small-exceptions],[optimise exception classes for smaller binaries (default no)]))
|
AC_ARG_ENABLE(small_exceptions,AS_HELP_STRING([--enable-small-exceptions],[optimise exception classes for smaller binaries (default no)]))
|
||||||
ENABLE_SMALL_EXCEPTIONS
|
ENABLE_SMALL_EXCEPTIONS
|
||||||
|
|
||||||
dnl ===
|
dnl ===
|
||||||
dnl "--enable-proxy"
|
dnl "--enable-proxy"
|
||||||
dnl
|
dnl
|
||||||
AC_ARG_ENABLE(proxy,AC_HELP_STRING([--enable-proxy],[enable proxying (default yes)]))
|
AC_ARG_ENABLE(proxy,AS_HELP_STRING([--enable-proxy],[enable proxying (default yes)]))
|
||||||
ENABLE_PROXY
|
ENABLE_PROXY
|
||||||
|
|
||||||
dnl ===
|
dnl ===
|
||||||
dnl "--enable-mac"
|
dnl "--enable-mac"
|
||||||
dnl
|
dnl
|
||||||
AC_ARG_ENABLE(mac,AC_HELP_STRING([--enable-mac],[enable building for a mac os x target (default auto)]))
|
AC_ARG_ENABLE(mac,AS_HELP_STRING([--enable-mac],[enable building for a mac os x target (default auto)]))
|
||||||
ENABLE_MAC
|
ENABLE_MAC
|
||||||
|
|
||||||
|
dnl ===
|
||||||
|
dnl "--enable-testing"
|
||||||
|
dnl
|
||||||
|
AC_ARG_ENABLE(testing,AS_HELP_STRING([--enable-testing],[enable make-check tests (default yes)]))
|
||||||
|
ENABLE_TESTING
|
||||||
|
|
||||||
|
dnl ===
|
||||||
|
dnl "--with-zlib"
|
||||||
|
dnl
|
||||||
|
AC_ARG_WITH(zlib,AS_HELP_STRING([--with-zlib],[use zlib for compressed installation packages (default auto)]))
|
||||||
|
WITH_ZLIB
|
||||||
|
|
||||||
dnl ===
|
dnl ===
|
||||||
dnl "--with-doxygen"
|
dnl "--with-doxygen"
|
||||||
dnl
|
dnl
|
||||||
AC_ARG_WITH(doxygen,AC_HELP_STRING([--with-doxygen],[generate source code documentation with doxygen (default auto)]))
|
AC_ARG_WITH(doxygen,AS_HELP_STRING([--with-doxygen],[generate source code documentation with doxygen (default auto)]))
|
||||||
WITH_DOXYGEN
|
WITH_DOXYGEN
|
||||||
|
|
||||||
dnl ===
|
dnl ===
|
||||||
dnl "--with-man2html"
|
dnl "--with-man2html"
|
||||||
dnl
|
dnl
|
||||||
AC_ARG_WITH(man2html,AC_HELP_STRING([--with-man2html],[convert man pages to html using man2html (default auto)]))
|
AC_ARG_WITH(man2html,AS_HELP_STRING([--with-man2html],[convert man pages to html using man2html (default auto)]))
|
||||||
WITH_MAN2HTML
|
WITH_MAN2HTML
|
||||||
|
|
||||||
dnl ===
|
dnl ===
|
||||||
dnl "--with-openssl"
|
dnl "--with-openssl"
|
||||||
dnl
|
dnl
|
||||||
AC_ARG_WITH(openssl,AC_HELP_STRING([--with-openssl],[use openssl for smtp client tls extension (default auto)]))
|
AC_ARG_WITH(openssl,AS_HELP_STRING([--with-openssl],[use openssl for tls/ssl encryption (default auto)]))
|
||||||
WITH_OPENSSL
|
WITH_OPENSSL
|
||||||
|
|
||||||
dnl ===
|
dnl ===
|
||||||
dnl "--with-glob"
|
dnl "--with-glob"
|
||||||
dnl
|
dnl
|
||||||
AC_ARG_WITH(glob,AC_HELP_STRING([--with-glob],[use glob() for reading directories (default auto)]))
|
AC_ARG_WITH(glob,AS_HELP_STRING([--with-glob],[use glob() for reading directories (default auto)]))
|
||||||
WITH_GLOB
|
WITH_GLOB
|
||||||
|
|
||||||
|
dnl ===
|
||||||
|
dnl "--with-pam"
|
||||||
|
dnl
|
||||||
|
AC_ARG_WITH(pam,AS_HELP_STRING([--with-pam],[use linux pam for authentication (default auto)]))
|
||||||
|
WITH_PAM
|
||||||
|
|
||||||
dnl ===
|
dnl ===
|
||||||
dnl "--enable-static-linking"
|
dnl "--enable-static-linking"
|
||||||
dnl
|
dnl
|
||||||
AC_ARG_ENABLE(static-linking,AC_HELP_STRING([--enable-static-linking],[prefer static linking for some libraries (default no)]))
|
AC_ARG_ENABLE(static-linking,AS_HELP_STRING([--enable-static-linking],[prefer static linking for some libraries (default no)]))
|
||||||
ENABLE_STATIC_LINKING
|
ENABLE_STATIC_LINKING
|
||||||
|
|
||||||
dnl ===
|
dnl ===
|
||||||
dnl "--enable-install-hook"
|
dnl "--enable-install-hook"
|
||||||
dnl
|
dnl
|
||||||
AC_ARG_ENABLE(install-hook,AC_HELP_STRING([--enable-install-hook],[enable fixing up the start/stop configuration file at install time (default yes)]))
|
AC_ARG_ENABLE(install-hook,AS_HELP_STRING([--enable-install-hook],[enable fixing up the start/stop configuration file at install time (default yes)]))
|
||||||
ENABLE_INSTALL_HOOK
|
ENABLE_INSTALL_HOOK
|
||||||
|
|
||||||
dnl ===
|
dnl ===
|
||||||
dnl directory tweaking and "--enable-fhs" ...
|
dnl directory tweaking ...
|
||||||
dnl
|
dnl
|
||||||
dnl define e_ prefixed directory variables
|
dnl define e_ prefixed directory variables
|
||||||
dnl
|
dnl
|
||||||
dnl not AC_PREFIX_DEFAULT([/usr])
|
dnl not AC_PREFIX_DEFAULT([/usr])
|
||||||
AC_ARG_ENABLE(fhs,AC_HELP_STRING([--enable-fhs],[force linux FHS-compliant directories, ignoring --prefix etc (default no)]))
|
|
||||||
SET_DIRECTORIES
|
SET_DIRECTORIES
|
||||||
AC_SUBST(e_docdir)
|
AC_SUBST(e_docdir)
|
||||||
AC_SUBST(e_initdir)
|
AC_SUBST(e_initdir)
|
||||||
|
AC_SUBST(e_icondir)
|
||||||
AC_SUBST(e_spooldir)
|
AC_SUBST(e_spooldir)
|
||||||
AC_SUBST(e_examplesdir)
|
AC_SUBST(e_examplesdir)
|
||||||
AC_SUBST(e_libexecdir)
|
AC_SUBST(e_libexecdir)
|
||||||
|
AC_SUBST(e_pamdir)
|
||||||
AC_SUBST(e_sysconfdir)
|
AC_SUBST(e_sysconfdir)
|
||||||
AC_SUBST(e_qtmoc)
|
AC_SUBST(e_qtmoc)
|
||||||
if test "$e_qtmoc" = "" ; then e_qtmoc="moc" ; fi
|
if test "$e_qtmoc" = "" ; then e_qtmoc="moc" ; fi
|
||||||
@ -219,5 +235,6 @@ if test "$e_qtmoc" = "" ; then e_qtmoc="moc" ; fi
|
|||||||
dnl ===
|
dnl ===
|
||||||
dnl generate files...
|
dnl generate files...
|
||||||
dnl
|
dnl
|
||||||
AC_OUTPUT(Makefile src/Makefile src/glib/Makefile src/gssl/Makefile src/gnet/Makefile src/gsmtp/Makefile src/gpop/Makefile src/main/Makefile src/win32/Makefile src/gui/Makefile lib/Makefile lib/gcc2.95/Makefile lib/msvc6.0/Makefile bin/Makefile doc/Makefile etc/Makefile test/Makefile extra/Makefile extra/mips/Makefile debian/Makefile src/fragments/Makefile)
|
AC_CONFIG_FILES([Makefile src/Makefile src/glib/Makefile src/gssl/Makefile src/gnet/Makefile src/gauth/Makefile src/gsmtp/Makefile src/gpop/Makefile src/main/Makefile src/win32/Makefile src/gui/Makefile lib/Makefile lib/gcc2.95/Makefile lib/msvc6.0/Makefile bin/Makefile doc/Makefile etc/Makefile test/Makefile extra/Makefile debian/Makefile])
|
||||||
|
AC_OUTPUT
|
||||||
|
|
||||||
|
4
debian/Makefile.am
vendored
@ -1,9 +1,9 @@
|
|||||||
#
|
#
|
||||||
## Copyright (C) 2001-2008 Graeme Walker <graeme_walker@users.sourceforge.net>
|
## Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>
|
||||||
##
|
##
|
||||||
## This program is free software: you can redistribute it and/or modify
|
## This program is free software: you can redistribute it and/or modify
|
||||||
## it under the terms of the GNU General Public License as published by
|
## it under the terms of the GNU General Public License as published by
|
||||||
## the Free Software Foundation, either version 3 of the License, or
|
## the Free Software Foundation, either version 3 of the License, or
|
||||||
## (at your option) any later version.
|
## (at your option) any later version.
|
||||||
##
|
##
|
||||||
## This program is distributed in the hope that it will be useful,
|
## This program is distributed in the hope that it will be useful,
|
||||||
|
72
debian/Makefile.in
vendored
@ -1,8 +1,9 @@
|
|||||||
# Makefile.in generated by automake 1.10.1 from Makefile.am.
|
# Makefile.in generated by automake 1.11.3 from Makefile.am.
|
||||||
# @configure_input@
|
# @configure_input@
|
||||||
|
|
||||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||||
# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
|
# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
|
||||||
|
# Foundation, Inc.
|
||||||
# This Makefile.in is free software; the Free Software Foundation
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
@ -15,8 +16,9 @@
|
|||||||
@SET_MAKE@
|
@SET_MAKE@
|
||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
pkgdatadir = $(datadir)/@PACKAGE@
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
pkglibdir = $(libdir)/@PACKAGE@
|
|
||||||
pkgincludedir = $(includedir)/@PACKAGE@
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
|
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||||
install_sh_DATA = $(install_sh) -c -m 644
|
install_sh_DATA = $(install_sh) -c -m 644
|
||||||
install_sh_PROGRAM = $(install_sh) -c
|
install_sh_PROGRAM = $(install_sh) -c
|
||||||
@ -39,6 +41,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
|||||||
mkinstalldirs = $(install_sh) -d
|
mkinstalldirs = $(install_sh) -d
|
||||||
CONFIG_HEADER = $(top_builddir)/config.h
|
CONFIG_HEADER = $(top_builddir)/config.h
|
||||||
CONFIG_CLEAN_FILES =
|
CONFIG_CLEAN_FILES =
|
||||||
|
CONFIG_CLEAN_VPATH_FILES =
|
||||||
SOURCES =
|
SOURCES =
|
||||||
DIST_SOURCES =
|
DIST_SOURCES =
|
||||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||||
@ -66,9 +69,9 @@ ECHO_N = @ECHO_N@
|
|||||||
ECHO_T = @ECHO_T@
|
ECHO_T = @ECHO_T@
|
||||||
EGREP = @EGREP@
|
EGREP = @EGREP@
|
||||||
EXEEXT = @EXEEXT@
|
EXEEXT = @EXEEXT@
|
||||||
FRAGMENTS_LIST = @FRAGMENTS_LIST@
|
|
||||||
GREP = @GREP@
|
GREP = @GREP@
|
||||||
GZIP = @GZIP@
|
GZIP = @GZIP@
|
||||||
|
G_CAPABILITIES = @G_CAPABILITIES@
|
||||||
HAVE_DOXYGEN = @HAVE_DOXYGEN@
|
HAVE_DOXYGEN = @HAVE_DOXYGEN@
|
||||||
HAVE_MAN2HTML = @HAVE_MAN2HTML@
|
HAVE_MAN2HTML = @HAVE_MAN2HTML@
|
||||||
INSTALL = @INSTALL@
|
INSTALL = @INSTALL@
|
||||||
@ -91,9 +94,14 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
|||||||
PACKAGE_NAME = @PACKAGE_NAME@
|
PACKAGE_NAME = @PACKAGE_NAME@
|
||||||
PACKAGE_STRING = @PACKAGE_STRING@
|
PACKAGE_STRING = @PACKAGE_STRING@
|
||||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||||
|
PACKAGE_URL = @PACKAGE_URL@
|
||||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
|
PAM_INCLUDE = @PAM_INCLUDE@
|
||||||
|
PAM_LIBS = @PAM_LIBS@
|
||||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
PKG_CONFIG = @PKG_CONFIG@
|
PKG_CONFIG = @PKG_CONFIG@
|
||||||
|
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
|
||||||
|
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
|
||||||
QT_CFLAGS = @QT_CFLAGS@
|
QT_CFLAGS = @QT_CFLAGS@
|
||||||
QT_LIBS = @QT_LIBS@
|
QT_LIBS = @QT_LIBS@
|
||||||
RANLIB = @RANLIB@
|
RANLIB = @RANLIB@
|
||||||
@ -104,6 +112,7 @@ STATIC_END = @STATIC_END@
|
|||||||
STATIC_START = @STATIC_START@
|
STATIC_START = @STATIC_START@
|
||||||
STRIP = @STRIP@
|
STRIP = @STRIP@
|
||||||
VERSION = @VERSION@
|
VERSION = @VERSION@
|
||||||
|
ZLIB_LIBS = @ZLIB_LIBS@
|
||||||
abs_builddir = @abs_builddir@
|
abs_builddir = @abs_builddir@
|
||||||
abs_srcdir = @abs_srcdir@
|
abs_srcdir = @abs_srcdir@
|
||||||
abs_top_builddir = @abs_top_builddir@
|
abs_top_builddir = @abs_top_builddir@
|
||||||
@ -124,8 +133,10 @@ docdir = @docdir@
|
|||||||
dvidir = @dvidir@
|
dvidir = @dvidir@
|
||||||
e_docdir = @e_docdir@
|
e_docdir = @e_docdir@
|
||||||
e_examplesdir = @e_examplesdir@
|
e_examplesdir = @e_examplesdir@
|
||||||
|
e_icondir = @e_icondir@
|
||||||
e_initdir = @e_initdir@
|
e_initdir = @e_initdir@
|
||||||
e_libexecdir = @e_libexecdir@
|
e_libexecdir = @e_libexecdir@
|
||||||
|
e_pamdir = @e_pamdir@
|
||||||
e_qtmoc = @e_qtmoc@
|
e_qtmoc = @e_qtmoc@
|
||||||
e_spooldir = @e_spooldir@
|
e_spooldir = @e_spooldir@
|
||||||
e_sysconfdir = @e_sysconfdir@
|
e_sysconfdir = @e_sysconfdir@
|
||||||
@ -151,6 +162,7 @@ sharedstatedir = @sharedstatedir@
|
|||||||
srcdir = @srcdir@
|
srcdir = @srcdir@
|
||||||
sysconfdir = @sysconfdir@
|
sysconfdir = @sysconfdir@
|
||||||
target_alias = @target_alias@
|
target_alias = @target_alias@
|
||||||
|
top_build_prefix = @top_build_prefix@
|
||||||
top_builddir = @top_builddir@
|
top_builddir = @top_builddir@
|
||||||
top_srcdir = @top_srcdir@
|
top_srcdir = @top_srcdir@
|
||||||
|
|
||||||
@ -164,14 +176,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
|
|||||||
@for dep in $?; do \
|
@for dep in $?; do \
|
||||||
case '$(am__configure_deps)' in \
|
case '$(am__configure_deps)' in \
|
||||||
*$$dep*) \
|
*$$dep*) \
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||||
&& exit 0; \
|
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||||
exit 1;; \
|
exit 1;; \
|
||||||
esac; \
|
esac; \
|
||||||
done; \
|
done; \
|
||||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu debian/Makefile'; \
|
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu debian/Makefile'; \
|
||||||
cd $(top_srcdir) && \
|
$(am__cd) $(top_srcdir) && \
|
||||||
$(AUTOMAKE) --gnu debian/Makefile
|
$(AUTOMAKE) --gnu debian/Makefile
|
||||||
.PRECIOUS: Makefile
|
.PRECIOUS: Makefile
|
||||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||||
@case '$?' in \
|
@case '$?' in \
|
||||||
@ -189,6 +201,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
|||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
$(am__aclocal_m4_deps):
|
||||||
tags: TAGS
|
tags: TAGS
|
||||||
TAGS:
|
TAGS:
|
||||||
|
|
||||||
@ -212,13 +225,17 @@ distdir: $(DISTFILES)
|
|||||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||||
if test -d $$d/$$file; then \
|
if test -d $$d/$$file; then \
|
||||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
if test -d "$(distdir)/$$file"; then \
|
||||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||||
fi; \
|
fi; \
|
||||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||||
|
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||||
|
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||||
|
fi; \
|
||||||
|
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||||
else \
|
else \
|
||||||
test -f $(distdir)/$$file \
|
test -f "$(distdir)/$$file" \
|
||||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||||
|| exit 1; \
|
|| exit 1; \
|
||||||
fi; \
|
fi; \
|
||||||
done
|
done
|
||||||
@ -236,16 +253,22 @@ install-am: all-am
|
|||||||
|
|
||||||
installcheck: installcheck-am
|
installcheck: installcheck-am
|
||||||
install-strip:
|
install-strip:
|
||||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
if test -z '$(STRIP)'; then \
|
||||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
`test -z '$(STRIP)' || \
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
install; \
|
||||||
|
else \
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
|
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||||
|
fi
|
||||||
mostlyclean-generic:
|
mostlyclean-generic:
|
||||||
|
|
||||||
clean-generic:
|
clean-generic:
|
||||||
|
|
||||||
distclean-generic:
|
distclean-generic:
|
||||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||||
|
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||||
|
|
||||||
maintainer-clean-generic:
|
maintainer-clean-generic:
|
||||||
@echo "This command is intended for maintainers to use"
|
@echo "This command is intended for maintainers to use"
|
||||||
@ -264,6 +287,8 @@ dvi-am:
|
|||||||
|
|
||||||
html: html-am
|
html: html-am
|
||||||
|
|
||||||
|
html-am:
|
||||||
|
|
||||||
info: info-am
|
info: info-am
|
||||||
|
|
||||||
info-am:
|
info-am:
|
||||||
@ -272,18 +297,28 @@ install-data-am:
|
|||||||
|
|
||||||
install-dvi: install-dvi-am
|
install-dvi: install-dvi-am
|
||||||
|
|
||||||
|
install-dvi-am:
|
||||||
|
|
||||||
install-exec-am:
|
install-exec-am:
|
||||||
|
|
||||||
install-html: install-html-am
|
install-html: install-html-am
|
||||||
|
|
||||||
|
install-html-am:
|
||||||
|
|
||||||
install-info: install-info-am
|
install-info: install-info-am
|
||||||
|
|
||||||
|
install-info-am:
|
||||||
|
|
||||||
install-man:
|
install-man:
|
||||||
|
|
||||||
install-pdf: install-pdf-am
|
install-pdf: install-pdf-am
|
||||||
|
|
||||||
|
install-pdf-am:
|
||||||
|
|
||||||
install-ps: install-ps-am
|
install-ps: install-ps-am
|
||||||
|
|
||||||
|
install-ps-am:
|
||||||
|
|
||||||
installcheck-am:
|
installcheck-am:
|
||||||
|
|
||||||
maintainer-clean: maintainer-clean-am
|
maintainer-clean: maintainer-clean-am
|
||||||
@ -316,6 +351,7 @@ uninstall-am:
|
|||||||
maintainer-clean maintainer-clean-generic mostlyclean \
|
maintainer-clean maintainer-clean-generic mostlyclean \
|
||||||
mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am
|
mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am
|
||||||
|
|
||||||
|
|
||||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
.NOEXPORT:
|
.NOEXPORT:
|
||||||
|
31
debian/changelog
vendored
@ -1,8 +1,37 @@
|
|||||||
|
emailrelay (1.9) unstable; urgency=low
|
||||||
|
* Added negotiated TLS/SSL for POP (ie. "STLS").
|
||||||
|
* The first two fields in the secrets files are reordered (with backwards compatibility).
|
||||||
|
* Added Linux-PAM authentication ("configure --with-pam" and then "--server-auth=/pam").
|
||||||
|
* Optional protocol-specific "--interface" qualifiers, eg. "--interface smtp=127.0.0.1,pop=192.168.1.1".
|
||||||
|
* Outgoing client connection bound with the first "--interface" or "--interface client=..." address.
|
||||||
|
* Support for SMTP-over-TLS on outgoing client connection ("--client-tls-connection") (cf. "STARTTLS")
|
||||||
|
* Support for SOCKS 4a on outgoing client connection, eg. "--forward-to example.com:25@127.0.0.1:9050".
|
||||||
|
* TLS configuration options ("--tls-config=...") for SSLv2/3 fallback etc.
|
||||||
|
* No "Received" line added if "--anonymous" and an empty "--domain" name.
|
||||||
|
* Error text for "all recipients rejected" is now more accurately "one or more recipients rejected".
|
||||||
|
* New behaviour for "--client-filter" exit values of 100 and over.
|
||||||
|
* New commands on the admin interface, "failures" and "unfail-all".
|
||||||
|
* Shorter descriptions in the usage help unless "--verbose".
|
||||||
|
* New default spool directory location on windows, now under "system32".
|
||||||
|
* Windows project files for MSVC 2012 included.
|
||||||
|
* Removed support for Windows NT and Windows 9x.
|
||||||
|
* Better support for Windows Vista and Windows 7.
|
||||||
|
* Removed Windows "--icon" option.
|
||||||
|
* Removed "--enable-fhs" option for "configure" (see INSTALL document for equivalent usage).
|
||||||
|
* Added "--log-file" option to redirect stderr.
|
||||||
|
* Added Windows "--peer-lookup" option.
|
||||||
|
* Fix for MD5 code in 64-bit builds.
|
||||||
|
-- maintainer graeme_walker <graeme_walker@users.sourceforge.net> Sat, 7 Dec 2013 22:55:40 +0000
|
||||||
|
|
||||||
|
emailrelay (1.8.2) unstable; urgency=low
|
||||||
|
* Fix namespaces for gcc 3.4.
|
||||||
|
-- maintainer graeme_walker <graeme_walker@users.sourceforge.net> Sat, 22 Aug 2009 00:00:00 +0000
|
||||||
|
|
||||||
emailrelay (1.8.1) unstable; urgency=low
|
emailrelay (1.8.1) unstable; urgency=low
|
||||||
* Changed the definition of "--as-proxy" to use "--poll 0" rather than "--immediate" [bug-id 1961652].
|
* Changed the definition of "--as-proxy" to use "--poll 0" rather than "--immediate" [bug-id 1961652].
|
||||||
* Fixed stalling bug when using server-side TLS/SSL ("--server-tls") [bug-id 1961655].
|
* Fixed stalling bug when using server-side TLS/SSL ("--server-tls") [bug-id 1961655].
|
||||||
* Improved Debian packaging for Linux ("make deb").
|
* Improved Debian packaging for Linux ("make deb").
|
||||||
-- maintainer graeme_walker <graeme_walker@users.sourceforge.net> Wed, 21 May 2008 10:15:55 +0000
|
-- maintainer graeme_walker <graeme_walker@users.sourceforge.net> Wed, 21 May 2008 00:00:00 +0000
|
||||||
|
|
||||||
emailrelay (1.8) unstable; urgency=low
|
emailrelay (1.8) unstable; urgency=low
|
||||||
* Speed optimisations (as identified by KCachegrind/valgrind in KDevelop).
|
* Speed optimisations (as identified by KCachegrind/valgrind in KDevelop).
|
||||||
|
6
debian/copyright
vendored
@ -1,8 +1,8 @@
|
|||||||
Copyright
|
Copyright
|
||||||
=========
|
=========
|
||||||
Copyright (C) 2001-2008 Graeme Walker <graeme_walker@users.sourceforge.net>
|
Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>
|
||||||
|
|
||||||
Refer to the file COPYING (included), /usr/share/common-licenses/GPL-3, or
|
Refer to the file COPYING (included), /usr/share/common-licenses/GPL-3, or
|
||||||
<http://www.gnu.org/licenses/> for the terms of the GNU General Public License.
|
<http://www.gnu.org/licenses/> for the terms of the GNU General Public License.
|
||||||
|
|
||||||
Binary distributions
|
Binary distributions
|
||||||
@ -16,4 +16,4 @@ These are distributed under licenses compatible with the GPLv3. Please
|
|||||||
refer to their websites for further details.
|
refer to their websites for further details.
|
||||||
|
|
||||||
This product includes software developed by the OpenSSL Project
|
This product includes software developed by the OpenSSL Project
|
||||||
for use in the OpenSSL Toolkit. (http://www.openssl.org/)
|
for use in the OpenSSL Toolkit (http://www.openssl.org/).
|
||||||
|
11
debian/postinst
vendored
@ -25,12 +25,21 @@ fix_permissions()
|
|||||||
|
|
||||||
fix_html()
|
fix_html()
|
||||||
{
|
{
|
||||||
# index.html refers to changelog.html
|
# index.html refers to changelog.html, not changelog.html.gz
|
||||||
cd /usr/share/doc/emailrelay && gzip -d -c changelog.html.gz > changelog.html
|
cd /usr/share/doc/emailrelay && gzip -d -c changelog.html.gz > changelog.html
|
||||||
}
|
}
|
||||||
|
|
||||||
|
create_config()
|
||||||
|
{
|
||||||
|
if test ! -f /etc/emailrelay.conf -a -f /etc/emailrelay.conf.template
|
||||||
|
then
|
||||||
|
cp /etc/emailrelay.conf.template /etc/emailrelay.conf
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
#DEBHELPER#
|
#DEBHELPER#
|
||||||
|
|
||||||
|
create_config
|
||||||
create_spool
|
create_spool
|
||||||
fix_permissions
|
fix_permissions
|
||||||
fix_html
|
fix_html
|
||||||
|
1
debian/postrm
vendored
@ -9,6 +9,7 @@ rm -f /usr/share/doc/emailrelay/changelog.html || true
|
|||||||
if test "$1" = "purge"
|
if test "$1" = "purge"
|
||||||
then
|
then
|
||||||
rmdir "$spool" || true
|
rmdir "$spool" || true
|
||||||
|
rm /etc/emailrelay.conf || true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#DEBHELPER#
|
#DEBHELPER#
|
||||||
|
153
depcomp
@ -1,10 +1,10 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# depcomp - compile a program generating dependencies as side-effects
|
# depcomp - compile a program generating dependencies as side-effects
|
||||||
|
|
||||||
scriptversion=2007-03-29.01
|
scriptversion=2011-12-04.11; # UTC
|
||||||
|
|
||||||
# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007 Free Software
|
# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010,
|
||||||
# Foundation, Inc.
|
# 2011 Free Software Foundation, Inc.
|
||||||
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
@ -17,9 +17,7 @@ scriptversion=2007-03-29.01
|
|||||||
# GNU General Public License for more details.
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program; if not, write to the Free Software
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
|
||||||
# 02110-1301, USA.
|
|
||||||
|
|
||||||
# As a special exception to the GNU General Public License, if you
|
# As a special exception to the GNU General Public License, if you
|
||||||
# distribute this file as part of a program that contains a
|
# distribute this file as part of a program that contains a
|
||||||
@ -46,7 +44,7 @@ Environment variables:
|
|||||||
object Object file output by `PROGRAMS ARGS'.
|
object Object file output by `PROGRAMS ARGS'.
|
||||||
DEPDIR directory where to store dependencies.
|
DEPDIR directory where to store dependencies.
|
||||||
depfile Dependency file to output.
|
depfile Dependency file to output.
|
||||||
tmpdepfile Temporary file to use when outputing dependencies.
|
tmpdepfile Temporary file to use when outputting dependencies.
|
||||||
libtool Whether libtool is used (yes/no).
|
libtool Whether libtool is used (yes/no).
|
||||||
|
|
||||||
Report bugs to <bug-automake@gnu.org>.
|
Report bugs to <bug-automake@gnu.org>.
|
||||||
@ -87,6 +85,23 @@ if test "$depmode" = dashXmstdout; then
|
|||||||
depmode=dashmstdout
|
depmode=dashmstdout
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
cygpath_u="cygpath -u -f -"
|
||||||
|
if test "$depmode" = msvcmsys; then
|
||||||
|
# This is just like msvisualcpp but w/o cygpath translation.
|
||||||
|
# Just convert the backslash-escaped backslashes to single forward
|
||||||
|
# slashes to satisfy depend.m4
|
||||||
|
cygpath_u='sed s,\\\\,/,g'
|
||||||
|
depmode=msvisualcpp
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$depmode" = msvc7msys; then
|
||||||
|
# This is just like msvc7 but w/o cygpath translation.
|
||||||
|
# Just convert the backslash-escaped backslashes to single forward
|
||||||
|
# slashes to satisfy depend.m4
|
||||||
|
cygpath_u='sed s,\\\\,/,g'
|
||||||
|
depmode=msvc7
|
||||||
|
fi
|
||||||
|
|
||||||
case "$depmode" in
|
case "$depmode" in
|
||||||
gcc3)
|
gcc3)
|
||||||
## gcc 3 implements dependency tracking that does exactly what
|
## gcc 3 implements dependency tracking that does exactly what
|
||||||
@ -151,10 +166,12 @@ gcc)
|
|||||||
' < "$tmpdepfile" |
|
' < "$tmpdepfile" |
|
||||||
## Some versions of gcc put a space before the `:'. On the theory
|
## Some versions of gcc put a space before the `:'. On the theory
|
||||||
## that the space means something, we add a space to the output as
|
## that the space means something, we add a space to the output as
|
||||||
## well.
|
## well. hp depmode also adds that space, but also prefixes the VPATH
|
||||||
|
## to the object. Take care to not repeat it in the output.
|
||||||
## Some versions of the HPUX 10.20 sed can't process this invocation
|
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||||
## correctly. Breaking it into two sed invocations is a workaround.
|
## correctly. Breaking it into two sed invocations is a workaround.
|
||||||
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
|
||||||
|
| sed -e 's/$/ :/' >> "$depfile"
|
||||||
rm -f "$tmpdepfile"
|
rm -f "$tmpdepfile"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
@ -192,14 +209,14 @@ sgi)
|
|||||||
' < "$tmpdepfile" \
|
' < "$tmpdepfile" \
|
||||||
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
|
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
|
||||||
tr '
|
tr '
|
||||||
' ' ' >> $depfile
|
' ' ' >> "$depfile"
|
||||||
echo >> $depfile
|
echo >> "$depfile"
|
||||||
|
|
||||||
# The second pass generates a dummy entry for each header file.
|
# The second pass generates a dummy entry for each header file.
|
||||||
tr ' ' '
|
tr ' ' '
|
||||||
' < "$tmpdepfile" \
|
' < "$tmpdepfile" \
|
||||||
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
|
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
|
||||||
>> $depfile
|
>> "$depfile"
|
||||||
else
|
else
|
||||||
# The sourcefile does not contain any dependencies, so just
|
# The sourcefile does not contain any dependencies, so just
|
||||||
# store a dummy comment line, to avoid errors with the Makefile
|
# store a dummy comment line, to avoid errors with the Makefile
|
||||||
@ -328,7 +345,12 @@ hp2)
|
|||||||
if test -f "$tmpdepfile"; then
|
if test -f "$tmpdepfile"; then
|
||||||
sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
|
sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
|
||||||
# Add `dependent.h:' lines.
|
# Add `dependent.h:' lines.
|
||||||
sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile"
|
sed -ne '2,${
|
||||||
|
s/^ *//
|
||||||
|
s/ \\*$//
|
||||||
|
s/$/:/
|
||||||
|
p
|
||||||
|
}' "$tmpdepfile" >> "$depfile"
|
||||||
else
|
else
|
||||||
echo "#dummy" > "$depfile"
|
echo "#dummy" > "$depfile"
|
||||||
fi
|
fi
|
||||||
@ -393,6 +415,52 @@ tru64)
|
|||||||
rm -f "$tmpdepfile"
|
rm -f "$tmpdepfile"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
msvc7)
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
showIncludes=-Wc,-showIncludes
|
||||||
|
else
|
||||||
|
showIncludes=-showIncludes
|
||||||
|
fi
|
||||||
|
"$@" $showIncludes > "$tmpdepfile"
|
||||||
|
stat=$?
|
||||||
|
grep -v '^Note: including file: ' "$tmpdepfile"
|
||||||
|
if test "$stat" = 0; then :
|
||||||
|
else
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
exit $stat
|
||||||
|
fi
|
||||||
|
rm -f "$depfile"
|
||||||
|
echo "$object : \\" > "$depfile"
|
||||||
|
# The first sed program below extracts the file names and escapes
|
||||||
|
# backslashes for cygpath. The second sed program outputs the file
|
||||||
|
# name when reading, but also accumulates all include files in the
|
||||||
|
# hold buffer in order to output them again at the end. This only
|
||||||
|
# works with sed implementations that can handle large buffers.
|
||||||
|
sed < "$tmpdepfile" -n '
|
||||||
|
/^Note: including file: *\(.*\)/ {
|
||||||
|
s//\1/
|
||||||
|
s/\\/\\\\/g
|
||||||
|
p
|
||||||
|
}' | $cygpath_u | sort -u | sed -n '
|
||||||
|
s/ /\\ /g
|
||||||
|
s/\(.*\)/ \1 \\/p
|
||||||
|
s/.\(.*\) \\/\1:/
|
||||||
|
H
|
||||||
|
$ {
|
||||||
|
s/.*/ /
|
||||||
|
G
|
||||||
|
p
|
||||||
|
}' >> "$depfile"
|
||||||
|
rm -f "$tmpdepfile"
|
||||||
|
;;
|
||||||
|
|
||||||
|
msvc7msys)
|
||||||
|
# This case exists only to let depend.m4 do its work. It works by
|
||||||
|
# looking at the text of this script. This case will never be run,
|
||||||
|
# since it is checked for above.
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
#nosideeffect)
|
#nosideeffect)
|
||||||
# This comment above is used by automake to tell side-effect
|
# This comment above is used by automake to tell side-effect
|
||||||
# dependency tracking mechanisms from slower ones.
|
# dependency tracking mechanisms from slower ones.
|
||||||
@ -404,7 +472,7 @@ dashmstdout)
|
|||||||
|
|
||||||
# Remove the call to Libtool.
|
# Remove the call to Libtool.
|
||||||
if test "$libtool" = yes; then
|
if test "$libtool" = yes; then
|
||||||
while test $1 != '--mode=compile'; do
|
while test "X$1" != 'X--mode=compile'; do
|
||||||
shift
|
shift
|
||||||
done
|
done
|
||||||
shift
|
shift
|
||||||
@ -455,36 +523,45 @@ makedepend)
|
|||||||
"$@" || exit $?
|
"$@" || exit $?
|
||||||
# Remove any Libtool call
|
# Remove any Libtool call
|
||||||
if test "$libtool" = yes; then
|
if test "$libtool" = yes; then
|
||||||
while test $1 != '--mode=compile'; do
|
while test "X$1" != 'X--mode=compile'; do
|
||||||
shift
|
shift
|
||||||
done
|
done
|
||||||
shift
|
shift
|
||||||
fi
|
fi
|
||||||
# X makedepend
|
# X makedepend
|
||||||
shift
|
shift
|
||||||
cleared=no
|
cleared=no eat=no
|
||||||
for arg in "$@"; do
|
for arg
|
||||||
|
do
|
||||||
case $cleared in
|
case $cleared in
|
||||||
no)
|
no)
|
||||||
set ""; shift
|
set ""; shift
|
||||||
cleared=yes ;;
|
cleared=yes ;;
|
||||||
esac
|
esac
|
||||||
|
if test $eat = yes; then
|
||||||
|
eat=no
|
||||||
|
continue
|
||||||
|
fi
|
||||||
case "$arg" in
|
case "$arg" in
|
||||||
-D*|-I*)
|
-D*|-I*)
|
||||||
set fnord "$@" "$arg"; shift ;;
|
set fnord "$@" "$arg"; shift ;;
|
||||||
# Strip any option that makedepend may not understand. Remove
|
# Strip any option that makedepend may not understand. Remove
|
||||||
# the object too, otherwise makedepend will parse it as a source file.
|
# the object too, otherwise makedepend will parse it as a source file.
|
||||||
|
-arch)
|
||||||
|
eat=yes ;;
|
||||||
-*|$object)
|
-*|$object)
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
set fnord "$@" "$arg"; shift ;;
|
set fnord "$@" "$arg"; shift ;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
obj_suffix="`echo $object | sed 's/^.*\././'`"
|
obj_suffix=`echo "$object" | sed 's/^.*\././'`
|
||||||
touch "$tmpdepfile"
|
touch "$tmpdepfile"
|
||||||
${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
|
${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
|
||||||
rm -f "$depfile"
|
rm -f "$depfile"
|
||||||
cat < "$tmpdepfile" > "$depfile"
|
# makedepend may prepend the VPATH from the source file name to the object.
|
||||||
|
# No need to regex-escape $object, excess matching of '.' is harmless.
|
||||||
|
sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
|
||||||
sed '1,2d' "$tmpdepfile" | tr ' ' '
|
sed '1,2d' "$tmpdepfile" | tr ' ' '
|
||||||
' | \
|
' | \
|
||||||
## Some versions of the HPUX 10.20 sed can't process this invocation
|
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||||
@ -500,7 +577,7 @@ cpp)
|
|||||||
|
|
||||||
# Remove the call to Libtool.
|
# Remove the call to Libtool.
|
||||||
if test "$libtool" = yes; then
|
if test "$libtool" = yes; then
|
||||||
while test $1 != '--mode=compile'; do
|
while test "X$1" != 'X--mode=compile'; do
|
||||||
shift
|
shift
|
||||||
done
|
done
|
||||||
shift
|
shift
|
||||||
@ -538,13 +615,27 @@ cpp)
|
|||||||
|
|
||||||
msvisualcpp)
|
msvisualcpp)
|
||||||
# Important note: in order to support this mode, a compiler *must*
|
# Important note: in order to support this mode, a compiler *must*
|
||||||
# always write the preprocessed file to stdout, regardless of -o,
|
# always write the preprocessed file to stdout.
|
||||||
# because we must use -o when running libtool.
|
|
||||||
"$@" || exit $?
|
"$@" || exit $?
|
||||||
|
|
||||||
|
# Remove the call to Libtool.
|
||||||
|
if test "$libtool" = yes; then
|
||||||
|
while test "X$1" != 'X--mode=compile'; do
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
|
||||||
IFS=" "
|
IFS=" "
|
||||||
for arg
|
for arg
|
||||||
do
|
do
|
||||||
case "$arg" in
|
case "$arg" in
|
||||||
|
-o)
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
$object)
|
||||||
|
shift
|
||||||
|
;;
|
||||||
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
|
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
|
||||||
set fnord "$@"
|
set fnord "$@"
|
||||||
shift
|
shift
|
||||||
@ -557,16 +648,23 @@ msvisualcpp)
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
"$@" -E |
|
"$@" -E 2>/dev/null |
|
||||||
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
|
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
|
||||||
rm -f "$depfile"
|
rm -f "$depfile"
|
||||||
echo "$object : \\" > "$depfile"
|
echo "$object : \\" > "$depfile"
|
||||||
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
|
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
|
||||||
echo " " >> "$depfile"
|
echo " " >> "$depfile"
|
||||||
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
|
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
|
||||||
rm -f "$tmpdepfile"
|
rm -f "$tmpdepfile"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
msvcmsys)
|
||||||
|
# This case exists only to let depend.m4 do its work. It works by
|
||||||
|
# looking at the text of this script. This case will never be run,
|
||||||
|
# since it is checked for above.
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
|
||||||
none)
|
none)
|
||||||
exec "$@"
|
exec "$@"
|
||||||
;;
|
;;
|
||||||
@ -585,5 +683,6 @@ exit 0
|
|||||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||||
# time-stamp-start: "scriptversion="
|
# time-stamp-start: "scriptversion="
|
||||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||||
# time-stamp-end: "$"
|
# time-stamp-time-zone: "UTC"
|
||||||
|
# time-stamp-end: "; # UTC"
|
||||||
# End:
|
# End:
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
#
|
#
|
||||||
## Copyright (C) 2001-2008 Graeme Walker <graeme_walker@users.sourceforge.net>
|
## Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>
|
||||||
##
|
##
|
||||||
## This program is free software: you can redistribute it and/or modify
|
## This program is free software: you can redistribute it and/or modify
|
||||||
## it under the terms of the GNU General Public License as published by
|
## it under the terms of the GNU General Public License as published by
|
||||||
## the Free Software Foundation, either version 3 of the License, or
|
## the Free Software Foundation, either version 3 of the License, or
|
||||||
## (at your option) any later version.
|
## (at your option) any later version.
|
||||||
##
|
##
|
||||||
## This program is distributed in the hope that it will be useful,
|
## This program is distributed in the hope that it will be useful,
|
||||||
@ -15,21 +15,43 @@
|
|||||||
## along with this program. If not, see <http://www.gnu.org/licenses/>.
|
## along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
|
|
||||||
stylesheet=emailrelay.css
|
txt_files=developer.txt reference.txt userguide.txt windows.txt
|
||||||
txt_files=developer.txt reference.txt userguide.txt windows.txt
|
|
||||||
man_files_in=emailrelay.1 emailrelay-passwd.1 emailrelay-poke.1 emailrelay-submit.1 emailrelay-filter-copy.1
|
man_files_in=emailrelay.1 emailrelay-passwd.1 emailrelay-poke.1 emailrelay-submit.1 emailrelay-filter-copy.1
|
||||||
man_files_out=emailrelay.1.gz emailrelay-passwd.1.gz emailrelay-poke.1.gz emailrelay-submit.1.gz emailrelay-filter-copy.1.gz
|
man_files_out=emailrelay.1.gz emailrelay-passwd.1.gz emailrelay-poke.1.gz emailrelay-submit.1.gz emailrelay-filter-copy.1.gz
|
||||||
html_files_in=doxygen_header.html
|
html_files_in=doxygen-header.html doxygen-missing.html doxygen.cfg
|
||||||
html_files_thru=index.html emailrelay-man.html $(stylesheet)
|
html_files_thru=index.html emailrelay-man.html
|
||||||
html_files_out=readme.html developer.html reference.html userguide.html windows.html changelog.html
|
html_files_out=readme.html developer.html reference.html userguide.html windows.html changelog.html
|
||||||
docbook_files_out=emailrelay.docbook
|
docbook_files_out=emailrelay.docbook
|
||||||
png_files=gsmtp-classes.png gnet-classes.png sequence-3.png gnet-client.png gsmtp-serverprotocol.png auth.png
|
css_files_in=\
|
||||||
|
emailrelay.css_ \
|
||||||
|
emailrelay-doxygen.css_
|
||||||
|
css_files_out=\
|
||||||
|
emailrelay.css \
|
||||||
|
emailrelay-doxygen.css
|
||||||
|
png_files_thru=\
|
||||||
|
valid-html401.png \
|
||||||
|
diagram-1.png \
|
||||||
|
diagram-2.png
|
||||||
|
png_files_in=\
|
||||||
|
gsmtp-classes.png_ \
|
||||||
|
gnet-classes.png_ \
|
||||||
|
sequence-3.png_ \
|
||||||
|
gnet-client.png_ \
|
||||||
|
gsmtp-serverprotocol.png_ \
|
||||||
|
auth.png_
|
||||||
|
png_files_out=\
|
||||||
|
gsmtp-classes.png \
|
||||||
|
gnet-classes.png \
|
||||||
|
sequence-3.png \
|
||||||
|
gnet-client.png \
|
||||||
|
gsmtp-serverprotocol.png \
|
||||||
|
auth.png
|
||||||
|
|
||||||
EXTRA_DIST = $(man_files_in) $(txt_files) $(html_files_in) $(html_files_thru) $(png_files) doxygen_missing.html
|
EXTRA_DIST = $(man_files_in) $(txt_files) $(html_files_in) $(css_files_in) $(png_files_in) $(png_files_thru) $(html_files_thru) mingw.mak
|
||||||
noinst_SCRIPTS = .dox .docbook
|
noinst_SCRIPTS = .dox .docbook
|
||||||
man1_MANS = $(man_files_in)
|
man1_MANS = $(man_files_in)
|
||||||
e_doc_DATA = $(txt_files) $(html_files_out) $(html_files_thru) $(png_files) $(docbook_files_out)
|
e_doc_DATA = $(txt_files) $(html_files_out) $(html_files_thru) $(css_files_out) $(png_files_out) $(png_files_thru) $(docbook_files_out)
|
||||||
CLEANFILES = $(noinst_SCRIPTS) $(man_files_out) $(html_files_out) $(docbook_files_out) doxygen/* *.db *.mu docbook/*
|
CLEANFILES = $(noinst_SCRIPTS) $(man_files_out) $(html_files_out) $(docbook_files_out) $(png_files_out) $(css_files_out) Doxyfile *.db *.mu doxygen/* docbook/*
|
||||||
|
|
||||||
SUFFIXES = .txt .html .db .mu
|
SUFFIXES = .txt .html .db .mu
|
||||||
|
|
||||||
@ -39,9 +61,11 @@ converter_mu2html=$(top_builddir)/bin/mu2html.sh
|
|||||||
converter_expand=$(top_builddir)/bin/expand.sh
|
converter_expand=$(top_builddir)/bin/expand.sh
|
||||||
converter_mu2docbook=$(top_builddir)/bin/mu2docbook.sh
|
converter_mu2docbook=$(top_builddir)/bin/mu2docbook.sh
|
||||||
run_doxygen=$(top_builddir)/bin/doxygen.sh
|
run_doxygen=$(top_builddir)/bin/doxygen.sh
|
||||||
|
run_doxygen_fixup=$(top_builddir)/bin/doxygen_fixup.pl
|
||||||
|
css=emailrelay.css
|
||||||
|
|
||||||
.txt.html:
|
.txt.html:
|
||||||
$(converter_html) -a "$(AWK)" "$(top_srcdir)/doc/$*.txt" "$(stylesheet)" > "$*.html"
|
$(converter_html) -a "$(AWK)" "$(top_srcdir)/doc/$*.txt" "$(css)" > "$*.html"
|
||||||
|
|
||||||
.txt.mu:
|
.txt.mu:
|
||||||
$(converter_txt2mu) -a "$(AWK)" "$(top_srcdir)/doc/$*.txt" > "$*.mu"
|
$(converter_txt2mu) -a "$(AWK)" "$(top_srcdir)/doc/$*.txt" > "$*.mu"
|
||||||
@ -49,6 +73,12 @@ run_doxygen=$(top_builddir)/bin/doxygen.sh
|
|||||||
.mu.db:
|
.mu.db:
|
||||||
$(converter_mu2docbook) -a "$(AWK)" -x < "$(top_builddir)/doc/$*.mu" > "$*.db"
|
$(converter_mu2docbook) -a "$(AWK)" -x < "$(top_builddir)/doc/$*.mu" > "$*.db"
|
||||||
|
|
||||||
|
.css_.css:
|
||||||
|
cp "$(top_srcdir)/doc/$*.css_" $*.css
|
||||||
|
|
||||||
|
.png_.png:
|
||||||
|
cp "$(top_srcdir)/doc/$*.png_" $*.png
|
||||||
|
|
||||||
head.db: $(converter_mu2docbook)
|
head.db: $(converter_mu2docbook)
|
||||||
$(converter_mu2docbook) -a "$(AWK)" --head "E-MailRelay" > head.db.tmp && mv -f head.db.tmp head.db
|
$(converter_mu2docbook) -a "$(AWK)" --head "E-MailRelay" > head.db.tmp && mv -f head.db.tmp head.db
|
||||||
|
|
||||||
@ -58,11 +88,13 @@ tail.db: $(converter_mu2docbook)
|
|||||||
emailrelay.docbook: head.db tail.db userguide.db reference.db developer.db
|
emailrelay.docbook: head.db tail.db userguide.db reference.db developer.db
|
||||||
cat head.db userguide.db reference.db developer.db tail.db > emailrelay.docbook
|
cat head.db userguide.db reference.db developer.db tail.db > emailrelay.docbook
|
||||||
|
|
||||||
.docbook: emailrelay.docbook
|
.docbook: emailrelay.docbook $(png_files_out)
|
||||||
-xmlto -o docbook html emailrelay.docbook && touch .docbook && cp *.png docbook/
|
-xmlto -o docbook html emailrelay.docbook && touch .docbook && cp "$(top_srcdir)/doc/"*.png docbook/
|
||||||
|
|
||||||
.dox:
|
.dox:
|
||||||
$(run_doxygen) "$(HAVE_DOXYGEN)" "$(top_srcdir)" "$(top_builddir)" && touch .dox
|
$(run_doxygen) "$(HAVE_DOXYGEN)" "$(top_srcdir)" "$(top_builddir)" Doxyfile && touch .dox
|
||||||
|
-$(run_doxygen_fixup) "$(top_builddir)/doc/doxygen"
|
||||||
|
-cp "$(top_srcdir)/doc/emailrelay-doxygen.css_" "$(top_builddir)/doc/doxygen/emailrelay-doxygen.css"
|
||||||
|
|
||||||
emailrelay-man.html: emailrelay.1
|
emailrelay-man.html: emailrelay.1
|
||||||
if test "$(HAVE_MAN2HTML)" = "yes" ; then man2html -r -L. emailrelay.1 < /dev/null > emailrelay-man.html.tmp && mv emailrelay-man.html.tmp emailrelay-man.html ; grep -v '^Content-type:' < emailrelay-man.html | grep -v '^Time:' > emailrelay-man.html.tmp ; mv emailrelay-man.html.tmp emailrelay-man.html ; fi
|
if test "$(HAVE_MAN2HTML)" = "yes" ; then man2html -r -L. emailrelay.1 < /dev/null > emailrelay-man.html.tmp && mv emailrelay-man.html.tmp emailrelay-man.html ; grep -v '^Content-type:' < emailrelay-man.html | grep -v '^Time:' > emailrelay-man.html.tmp ; mv emailrelay-man.html.tmp emailrelay-man.html ; fi
|
||||||
@ -72,10 +104,10 @@ developer.html reference.html userguide.html: $(converter_html)
|
|||||||
developer.mu reference.mu userguide.mu: $(converter_txt2mu)
|
developer.mu reference.mu userguide.mu: $(converter_txt2mu)
|
||||||
|
|
||||||
readme.html: $(top_srcdir)/README $(converter_html)
|
readme.html: $(top_srcdir)/README $(converter_html)
|
||||||
$(converter_html) -a "$(AWK)" "$(top_srcdir)/README" "$(stylesheet)" > readme.html
|
$(converter_html) -a "$(AWK)" "$(top_srcdir)/README" "$(css)" > readme.html
|
||||||
|
|
||||||
changelog.html: $(top_srcdir)/ChangeLog $(converter_html)
|
changelog.html: $(top_srcdir)/ChangeLog $(converter_html)
|
||||||
$(converter_html) -a "$(AWK)" "$(top_srcdir)/ChangeLog" "$(stylesheet)" > changelog.html
|
$(converter_html) -a "$(AWK)" "$(top_srcdir)/ChangeLog" "$(css)" > changelog.html
|
||||||
|
|
||||||
emailrelay.1.gz : emailrelay.1
|
emailrelay.1.gz : emailrelay.1
|
||||||
if test -n "$(GZIP)" ; then $(GZIP) -c "$(top_srcdir)/doc/emailrelay.1" > emailrelay.1.gz ; fi
|
if test -n "$(GZIP)" ; then $(GZIP) -c "$(top_srcdir)/doc/emailrelay.1" > emailrelay.1.gz ; fi
|
||||||
@ -94,7 +126,7 @@ emailrelay-poke.1.gz: emailrelay-poke.1
|
|||||||
|
|
||||||
install-data-local: install-e_docDATA
|
install-data-local: install-e_docDATA
|
||||||
$(mkinstalldirs) "$(DESTDIR)$(e_docdir)/doxygen"
|
$(mkinstalldirs) "$(DESTDIR)$(e_docdir)/doxygen"
|
||||||
for file in doxygen/* ; do $(INSTALL) --mode=644 "$$file" "$(DESTDIR)$(e_docdir)/$$file" ; done
|
for file in doxygen/* ; do $(INSTALL) -m 644 "$$file" "$(DESTDIR)$(e_docdir)/$$file" ; done
|
||||||
|
|
||||||
uninstall-local:
|
uninstall-local:
|
||||||
-find "$(DESTDIR)$(e_docdir)/doxygen" -type f | xargs rm -f
|
-find "$(DESTDIR)$(e_docdir)/doxygen" -type f | xargs rm -f
|
||||||
|
272
doc/Makefile.in
@ -1,8 +1,9 @@
|
|||||||
# Makefile.in generated by automake 1.10.1 from Makefile.am.
|
# Makefile.in generated by automake 1.11.3 from Makefile.am.
|
||||||
# @configure_input@
|
# @configure_input@
|
||||||
|
|
||||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||||
# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
|
# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
|
||||||
|
# Foundation, Inc.
|
||||||
# This Makefile.in is free software; the Free Software Foundation
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
@ -20,8 +21,9 @@
|
|||||||
|
|
||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
pkgdatadir = $(datadir)/@PACKAGE@
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
pkglibdir = $(libdir)/@PACKAGE@
|
|
||||||
pkgincludedir = $(includedir)/@PACKAGE@
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
|
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||||
install_sh_DATA = $(install_sh) -c -m 644
|
install_sh_DATA = $(install_sh) -c -m 644
|
||||||
install_sh_PROGRAM = $(install_sh) -c
|
install_sh_PROGRAM = $(install_sh) -c
|
||||||
@ -44,20 +46,41 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
|||||||
mkinstalldirs = $(install_sh) -d
|
mkinstalldirs = $(install_sh) -d
|
||||||
CONFIG_HEADER = $(top_builddir)/config.h
|
CONFIG_HEADER = $(top_builddir)/config.h
|
||||||
CONFIG_CLEAN_FILES =
|
CONFIG_CLEAN_FILES =
|
||||||
|
CONFIG_CLEAN_VPATH_FILES =
|
||||||
SCRIPTS = $(noinst_SCRIPTS)
|
SCRIPTS = $(noinst_SCRIPTS)
|
||||||
SOURCES =
|
SOURCES =
|
||||||
DIST_SOURCES =
|
DIST_SOURCES =
|
||||||
man1dir = $(mandir)/man1
|
|
||||||
am__installdirs = "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(e_docdir)"
|
|
||||||
NROFF = nroff
|
|
||||||
MANS = $(man1_MANS)
|
|
||||||
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
||||||
am__vpath_adj = case $$p in \
|
am__vpath_adj = case $$p in \
|
||||||
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
||||||
*) f=$$p;; \
|
*) f=$$p;; \
|
||||||
esac;
|
esac;
|
||||||
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
|
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
|
||||||
e_docDATA_INSTALL = $(INSTALL_DATA)
|
am__install_max = 40
|
||||||
|
am__nobase_strip_setup = \
|
||||||
|
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
|
||||||
|
am__nobase_strip = \
|
||||||
|
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
|
||||||
|
am__nobase_list = $(am__nobase_strip_setup); \
|
||||||
|
for p in $$list; do echo "$$p $$p"; done | \
|
||||||
|
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
|
||||||
|
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
|
||||||
|
if (++n[$$2] == $(am__install_max)) \
|
||||||
|
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
|
||||||
|
END { for (dir in files) print dir, files[dir] }'
|
||||||
|
am__base_list = \
|
||||||
|
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
|
||||||
|
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
|
||||||
|
am__uninstall_files_from_dir = { \
|
||||||
|
test -z "$$files" \
|
||||||
|
|| { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|
||||||
|
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
|
||||||
|
$(am__cd) "$$dir" && rm -f $$files; }; \
|
||||||
|
}
|
||||||
|
man1dir = $(mandir)/man1
|
||||||
|
am__installdirs = "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(e_docdir)"
|
||||||
|
NROFF = nroff
|
||||||
|
MANS = $(man1_MANS)
|
||||||
DATA = $(e_doc_DATA)
|
DATA = $(e_doc_DATA)
|
||||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||||
ACLOCAL = @ACLOCAL@
|
ACLOCAL = @ACLOCAL@
|
||||||
@ -84,9 +107,9 @@ ECHO_N = @ECHO_N@
|
|||||||
ECHO_T = @ECHO_T@
|
ECHO_T = @ECHO_T@
|
||||||
EGREP = @EGREP@
|
EGREP = @EGREP@
|
||||||
EXEEXT = @EXEEXT@
|
EXEEXT = @EXEEXT@
|
||||||
FRAGMENTS_LIST = @FRAGMENTS_LIST@
|
|
||||||
GREP = @GREP@
|
GREP = @GREP@
|
||||||
GZIP = @GZIP@
|
GZIP = @GZIP@
|
||||||
|
G_CAPABILITIES = @G_CAPABILITIES@
|
||||||
HAVE_DOXYGEN = @HAVE_DOXYGEN@
|
HAVE_DOXYGEN = @HAVE_DOXYGEN@
|
||||||
HAVE_MAN2HTML = @HAVE_MAN2HTML@
|
HAVE_MAN2HTML = @HAVE_MAN2HTML@
|
||||||
INSTALL = @INSTALL@
|
INSTALL = @INSTALL@
|
||||||
@ -109,9 +132,14 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
|||||||
PACKAGE_NAME = @PACKAGE_NAME@
|
PACKAGE_NAME = @PACKAGE_NAME@
|
||||||
PACKAGE_STRING = @PACKAGE_STRING@
|
PACKAGE_STRING = @PACKAGE_STRING@
|
||||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||||
|
PACKAGE_URL = @PACKAGE_URL@
|
||||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
|
PAM_INCLUDE = @PAM_INCLUDE@
|
||||||
|
PAM_LIBS = @PAM_LIBS@
|
||||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
PKG_CONFIG = @PKG_CONFIG@
|
PKG_CONFIG = @PKG_CONFIG@
|
||||||
|
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
|
||||||
|
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
|
||||||
QT_CFLAGS = @QT_CFLAGS@
|
QT_CFLAGS = @QT_CFLAGS@
|
||||||
QT_LIBS = @QT_LIBS@
|
QT_LIBS = @QT_LIBS@
|
||||||
RANLIB = @RANLIB@
|
RANLIB = @RANLIB@
|
||||||
@ -122,6 +150,7 @@ STATIC_END = @STATIC_END@
|
|||||||
STATIC_START = @STATIC_START@
|
STATIC_START = @STATIC_START@
|
||||||
STRIP = @STRIP@
|
STRIP = @STRIP@
|
||||||
VERSION = @VERSION@
|
VERSION = @VERSION@
|
||||||
|
ZLIB_LIBS = @ZLIB_LIBS@
|
||||||
abs_builddir = @abs_builddir@
|
abs_builddir = @abs_builddir@
|
||||||
abs_srcdir = @abs_srcdir@
|
abs_srcdir = @abs_srcdir@
|
||||||
abs_top_builddir = @abs_top_builddir@
|
abs_top_builddir = @abs_top_builddir@
|
||||||
@ -142,8 +171,10 @@ docdir = @docdir@
|
|||||||
dvidir = @dvidir@
|
dvidir = @dvidir@
|
||||||
e_docdir = @e_docdir@
|
e_docdir = @e_docdir@
|
||||||
e_examplesdir = @e_examplesdir@
|
e_examplesdir = @e_examplesdir@
|
||||||
|
e_icondir = @e_icondir@
|
||||||
e_initdir = @e_initdir@
|
e_initdir = @e_initdir@
|
||||||
e_libexecdir = @e_libexecdir@
|
e_libexecdir = @e_libexecdir@
|
||||||
|
e_pamdir = @e_pamdir@
|
||||||
e_qtmoc = @e_qtmoc@
|
e_qtmoc = @e_qtmoc@
|
||||||
e_spooldir = @e_spooldir@
|
e_spooldir = @e_spooldir@
|
||||||
e_sysconfdir = @e_sysconfdir@
|
e_sysconfdir = @e_sysconfdir@
|
||||||
@ -169,22 +200,50 @@ sharedstatedir = @sharedstatedir@
|
|||||||
srcdir = @srcdir@
|
srcdir = @srcdir@
|
||||||
sysconfdir = @sysconfdir@
|
sysconfdir = @sysconfdir@
|
||||||
target_alias = @target_alias@
|
target_alias = @target_alias@
|
||||||
|
top_build_prefix = @top_build_prefix@
|
||||||
top_builddir = @top_builddir@
|
top_builddir = @top_builddir@
|
||||||
top_srcdir = @top_srcdir@
|
top_srcdir = @top_srcdir@
|
||||||
stylesheet = emailrelay.css
|
txt_files = developer.txt reference.txt userguide.txt windows.txt
|
||||||
txt_files = developer.txt reference.txt userguide.txt windows.txt
|
|
||||||
man_files_in = emailrelay.1 emailrelay-passwd.1 emailrelay-poke.1 emailrelay-submit.1 emailrelay-filter-copy.1
|
man_files_in = emailrelay.1 emailrelay-passwd.1 emailrelay-poke.1 emailrelay-submit.1 emailrelay-filter-copy.1
|
||||||
man_files_out = emailrelay.1.gz emailrelay-passwd.1.gz emailrelay-poke.1.gz emailrelay-submit.1.gz emailrelay-filter-copy.1.gz
|
man_files_out = emailrelay.1.gz emailrelay-passwd.1.gz emailrelay-poke.1.gz emailrelay-submit.1.gz emailrelay-filter-copy.1.gz
|
||||||
html_files_in = doxygen_header.html
|
html_files_in = doxygen-header.html doxygen-missing.html doxygen.cfg
|
||||||
html_files_thru = index.html emailrelay-man.html $(stylesheet)
|
html_files_thru = index.html emailrelay-man.html
|
||||||
html_files_out = readme.html developer.html reference.html userguide.html windows.html changelog.html
|
html_files_out = readme.html developer.html reference.html userguide.html windows.html changelog.html
|
||||||
docbook_files_out = emailrelay.docbook
|
docbook_files_out = emailrelay.docbook
|
||||||
png_files = gsmtp-classes.png gnet-classes.png sequence-3.png gnet-client.png gsmtp-serverprotocol.png auth.png
|
css_files_in = \
|
||||||
EXTRA_DIST = $(man_files_in) $(txt_files) $(html_files_in) $(html_files_thru) $(png_files) doxygen_missing.html
|
emailrelay.css_ \
|
||||||
|
emailrelay-doxygen.css_
|
||||||
|
|
||||||
|
css_files_out = \
|
||||||
|
emailrelay.css \
|
||||||
|
emailrelay-doxygen.css
|
||||||
|
|
||||||
|
png_files_thru = \
|
||||||
|
valid-html401.png \
|
||||||
|
diagram-1.png \
|
||||||
|
diagram-2.png
|
||||||
|
|
||||||
|
png_files_in = \
|
||||||
|
gsmtp-classes.png_ \
|
||||||
|
gnet-classes.png_ \
|
||||||
|
sequence-3.png_ \
|
||||||
|
gnet-client.png_ \
|
||||||
|
gsmtp-serverprotocol.png_ \
|
||||||
|
auth.png_
|
||||||
|
|
||||||
|
png_files_out = \
|
||||||
|
gsmtp-classes.png \
|
||||||
|
gnet-classes.png \
|
||||||
|
sequence-3.png \
|
||||||
|
gnet-client.png \
|
||||||
|
gsmtp-serverprotocol.png \
|
||||||
|
auth.png
|
||||||
|
|
||||||
|
EXTRA_DIST = $(man_files_in) $(txt_files) $(html_files_in) $(css_files_in) $(png_files_in) $(png_files_thru) $(html_files_thru) mingw.mak
|
||||||
noinst_SCRIPTS = .dox .docbook
|
noinst_SCRIPTS = .dox .docbook
|
||||||
man1_MANS = $(man_files_in)
|
man1_MANS = $(man_files_in)
|
||||||
e_doc_DATA = $(txt_files) $(html_files_out) $(html_files_thru) $(png_files) $(docbook_files_out)
|
e_doc_DATA = $(txt_files) $(html_files_out) $(html_files_thru) $(css_files_out) $(png_files_out) $(png_files_thru) $(docbook_files_out)
|
||||||
CLEANFILES = $(noinst_SCRIPTS) $(man_files_out) $(html_files_out) $(docbook_files_out) doxygen/* *.db *.mu docbook/*
|
CLEANFILES = $(noinst_SCRIPTS) $(man_files_out) $(html_files_out) $(docbook_files_out) $(png_files_out) $(css_files_out) Doxyfile *.db *.mu doxygen/* docbook/*
|
||||||
SUFFIXES = .txt .html .db .mu
|
SUFFIXES = .txt .html .db .mu
|
||||||
converter_html = $(top_builddir)/bin/txt2html.sh
|
converter_html = $(top_builddir)/bin/txt2html.sh
|
||||||
converter_txt2mu = $(top_builddir)/bin/txt2mu.sh
|
converter_txt2mu = $(top_builddir)/bin/txt2mu.sh
|
||||||
@ -192,22 +251,24 @@ converter_mu2html = $(top_builddir)/bin/mu2html.sh
|
|||||||
converter_expand = $(top_builddir)/bin/expand.sh
|
converter_expand = $(top_builddir)/bin/expand.sh
|
||||||
converter_mu2docbook = $(top_builddir)/bin/mu2docbook.sh
|
converter_mu2docbook = $(top_builddir)/bin/mu2docbook.sh
|
||||||
run_doxygen = $(top_builddir)/bin/doxygen.sh
|
run_doxygen = $(top_builddir)/bin/doxygen.sh
|
||||||
|
run_doxygen_fixup = $(top_builddir)/bin/doxygen_fixup.pl
|
||||||
|
css = emailrelay.css
|
||||||
all: all-am
|
all: all-am
|
||||||
|
|
||||||
.SUFFIXES:
|
.SUFFIXES:
|
||||||
.SUFFIXES: .txt .html .db .mu
|
.SUFFIXES: .txt .html .db .mu .css .css_ .png .png_
|
||||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
||||||
@for dep in $?; do \
|
@for dep in $?; do \
|
||||||
case '$(am__configure_deps)' in \
|
case '$(am__configure_deps)' in \
|
||||||
*$$dep*) \
|
*$$dep*) \
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||||
&& exit 0; \
|
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||||
exit 1;; \
|
exit 1;; \
|
||||||
esac; \
|
esac; \
|
||||||
done; \
|
done; \
|
||||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
|
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
|
||||||
cd $(top_srcdir) && \
|
$(am__cd) $(top_srcdir) && \
|
||||||
$(AUTOMAKE) --gnu doc/Makefile
|
$(AUTOMAKE) --gnu doc/Makefile
|
||||||
.PRECIOUS: Makefile
|
.PRECIOUS: Makefile
|
||||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||||
@case '$?' in \
|
@case '$?' in \
|
||||||
@ -225,68 +286,57 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
|||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
install-man1: $(man1_MANS) $(man_MANS)
|
$(am__aclocal_m4_deps):
|
||||||
|
install-man1: $(man1_MANS)
|
||||||
@$(NORMAL_INSTALL)
|
@$(NORMAL_INSTALL)
|
||||||
test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
|
test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
|
||||||
@list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
|
@list='$(man1_MANS)'; test -n "$(man1dir)" || exit 0; \
|
||||||
l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
|
{ for i in $$list; do echo "$$i"; done; \
|
||||||
for i in $$l2; do \
|
} | while read p; do \
|
||||||
case "$$i" in \
|
if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
|
||||||
*.1*) list="$$list $$i" ;; \
|
echo "$$d$$p"; echo "$$p"; \
|
||||||
esac; \
|
done | \
|
||||||
|
sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
|
||||||
|
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
|
||||||
|
sed 'N;N;s,\n, ,g' | { \
|
||||||
|
list=; while read file base inst; do \
|
||||||
|
if test "$$base" = "$$inst"; then list="$$list $$file"; else \
|
||||||
|
echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
|
||||||
|
$(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \
|
||||||
|
fi; \
|
||||||
done; \
|
done; \
|
||||||
for i in $$list; do \
|
for i in $$list; do echo "$$i"; done | $(am__base_list) | \
|
||||||
if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
|
while read files; do \
|
||||||
else file=$$i; fi; \
|
test -z "$$files" || { \
|
||||||
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
|
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \
|
||||||
case "$$ext" in \
|
$(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \
|
||||||
1*) ;; \
|
done; }
|
||||||
*) ext='1' ;; \
|
|
||||||
esac; \
|
|
||||||
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
|
|
||||||
inst=`echo $$inst | sed -e 's/^.*\///'`; \
|
|
||||||
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
|
|
||||||
echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
|
|
||||||
$(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst"; \
|
|
||||||
done
|
|
||||||
uninstall-man1:
|
uninstall-man1:
|
||||||
@$(NORMAL_UNINSTALL)
|
@$(NORMAL_UNINSTALL)
|
||||||
@list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
|
@list='$(man1_MANS)'; test -n "$(man1dir)" || exit 0; \
|
||||||
l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
|
files=`{ for i in $$list; do echo "$$i"; done; \
|
||||||
for i in $$l2; do \
|
} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
|
||||||
case "$$i" in \
|
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
|
||||||
*.1*) list="$$list $$i" ;; \
|
dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir)
|
||||||
esac; \
|
|
||||||
done; \
|
|
||||||
for i in $$list; do \
|
|
||||||
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
|
|
||||||
case "$$ext" in \
|
|
||||||
1*) ;; \
|
|
||||||
*) ext='1' ;; \
|
|
||||||
esac; \
|
|
||||||
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
|
|
||||||
inst=`echo $$inst | sed -e 's/^.*\///'`; \
|
|
||||||
inst=`echo $$inst | sed '$(transform)'`.$$ext; \
|
|
||||||
echo " rm -f '$(DESTDIR)$(man1dir)/$$inst'"; \
|
|
||||||
rm -f "$(DESTDIR)$(man1dir)/$$inst"; \
|
|
||||||
done
|
|
||||||
install-e_docDATA: $(e_doc_DATA)
|
install-e_docDATA: $(e_doc_DATA)
|
||||||
@$(NORMAL_INSTALL)
|
@$(NORMAL_INSTALL)
|
||||||
test -z "$(e_docdir)" || $(MKDIR_P) "$(DESTDIR)$(e_docdir)"
|
test -z "$(e_docdir)" || $(MKDIR_P) "$(DESTDIR)$(e_docdir)"
|
||||||
@list='$(e_doc_DATA)'; for p in $$list; do \
|
@list='$(e_doc_DATA)'; test -n "$(e_docdir)" || list=; \
|
||||||
|
for p in $$list; do \
|
||||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||||
f=$(am__strip_dir) \
|
echo "$$d$$p"; \
|
||||||
echo " $(e_docDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(e_docdir)/$$f'"; \
|
done | $(am__base_list) | \
|
||||||
$(e_docDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(e_docdir)/$$f"; \
|
while read files; do \
|
||||||
|
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(e_docdir)'"; \
|
||||||
|
$(INSTALL_DATA) $$files "$(DESTDIR)$(e_docdir)" || exit $$?; \
|
||||||
done
|
done
|
||||||
|
|
||||||
uninstall-e_docDATA:
|
uninstall-e_docDATA:
|
||||||
@$(NORMAL_UNINSTALL)
|
@$(NORMAL_UNINSTALL)
|
||||||
@list='$(e_doc_DATA)'; for p in $$list; do \
|
@list='$(e_doc_DATA)'; test -n "$(e_docdir)" || list=; \
|
||||||
f=$(am__strip_dir) \
|
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
|
||||||
echo " rm -f '$(DESTDIR)$(e_docdir)/$$f'"; \
|
dir='$(DESTDIR)$(e_docdir)'; $(am__uninstall_files_from_dir)
|
||||||
rm -f "$(DESTDIR)$(e_docdir)/$$f"; \
|
|
||||||
done
|
|
||||||
tags: TAGS
|
tags: TAGS
|
||||||
TAGS:
|
TAGS:
|
||||||
|
|
||||||
@ -295,6 +345,19 @@ CTAGS:
|
|||||||
|
|
||||||
|
|
||||||
distdir: $(DISTFILES)
|
distdir: $(DISTFILES)
|
||||||
|
@list='$(MANS)'; if test -n "$$list"; then \
|
||||||
|
list=`for p in $$list; do \
|
||||||
|
if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
|
||||||
|
if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
|
||||||
|
if test -n "$$list" && \
|
||||||
|
grep 'ab help2man is required to generate this page' $$list >/dev/null; then \
|
||||||
|
echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \
|
||||||
|
grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \
|
||||||
|
echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \
|
||||||
|
echo " typically \`make maintainer-clean' will remove them" >&2; \
|
||||||
|
exit 1; \
|
||||||
|
else :; fi; \
|
||||||
|
else :; fi
|
||||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||||
list='$(DISTFILES)'; \
|
list='$(DISTFILES)'; \
|
||||||
@ -310,13 +373,17 @@ distdir: $(DISTFILES)
|
|||||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||||
if test -d $$d/$$file; then \
|
if test -d $$d/$$file; then \
|
||||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
if test -d "$(distdir)/$$file"; then \
|
||||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||||
fi; \
|
fi; \
|
||||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||||
|
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||||
|
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||||
|
fi; \
|
||||||
|
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||||
else \
|
else \
|
||||||
test -f $(distdir)/$$file \
|
test -f "$(distdir)/$$file" \
|
||||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||||
|| exit 1; \
|
|| exit 1; \
|
||||||
fi; \
|
fi; \
|
||||||
done
|
done
|
||||||
@ -337,10 +404,15 @@ install-am: all-am
|
|||||||
|
|
||||||
installcheck: installcheck-am
|
installcheck: installcheck-am
|
||||||
install-strip:
|
install-strip:
|
||||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
if test -z '$(STRIP)'; then \
|
||||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
`test -z '$(STRIP)' || \
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
install; \
|
||||||
|
else \
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
|
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||||
|
fi
|
||||||
mostlyclean-generic:
|
mostlyclean-generic:
|
||||||
|
|
||||||
clean-generic:
|
clean-generic:
|
||||||
@ -348,6 +420,7 @@ clean-generic:
|
|||||||
|
|
||||||
distclean-generic:
|
distclean-generic:
|
||||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||||
|
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||||
|
|
||||||
maintainer-clean-generic:
|
maintainer-clean-generic:
|
||||||
@echo "This command is intended for maintainers to use"
|
@echo "This command is intended for maintainers to use"
|
||||||
@ -366,6 +439,8 @@ dvi-am:
|
|||||||
|
|
||||||
html: html-am
|
html: html-am
|
||||||
|
|
||||||
|
html-am:
|
||||||
|
|
||||||
info: info-am
|
info: info-am
|
||||||
|
|
||||||
info-am:
|
info-am:
|
||||||
@ -374,18 +449,28 @@ install-data-am: install-data-local install-e_docDATA install-man
|
|||||||
|
|
||||||
install-dvi: install-dvi-am
|
install-dvi: install-dvi-am
|
||||||
|
|
||||||
|
install-dvi-am:
|
||||||
|
|
||||||
install-exec-am:
|
install-exec-am:
|
||||||
|
|
||||||
install-html: install-html-am
|
install-html: install-html-am
|
||||||
|
|
||||||
|
install-html-am:
|
||||||
|
|
||||||
install-info: install-info-am
|
install-info: install-info-am
|
||||||
|
|
||||||
|
install-info-am:
|
||||||
|
|
||||||
install-man: install-man1
|
install-man: install-man1
|
||||||
|
|
||||||
install-pdf: install-pdf-am
|
install-pdf: install-pdf-am
|
||||||
|
|
||||||
|
install-pdf-am:
|
||||||
|
|
||||||
install-ps: install-ps-am
|
install-ps: install-ps-am
|
||||||
|
|
||||||
|
install-ps-am:
|
||||||
|
|
||||||
installcheck-am:
|
installcheck-am:
|
||||||
|
|
||||||
maintainer-clean: maintainer-clean-am
|
maintainer-clean: maintainer-clean-am
|
||||||
@ -425,7 +510,7 @@ uninstall-man: uninstall-man1
|
|||||||
|
|
||||||
|
|
||||||
.txt.html:
|
.txt.html:
|
||||||
$(converter_html) -a "$(AWK)" "$(top_srcdir)/doc/$*.txt" "$(stylesheet)" > "$*.html"
|
$(converter_html) -a "$(AWK)" "$(top_srcdir)/doc/$*.txt" "$(css)" > "$*.html"
|
||||||
|
|
||||||
.txt.mu:
|
.txt.mu:
|
||||||
$(converter_txt2mu) -a "$(AWK)" "$(top_srcdir)/doc/$*.txt" > "$*.mu"
|
$(converter_txt2mu) -a "$(AWK)" "$(top_srcdir)/doc/$*.txt" > "$*.mu"
|
||||||
@ -433,6 +518,12 @@ uninstall-man: uninstall-man1
|
|||||||
.mu.db:
|
.mu.db:
|
||||||
$(converter_mu2docbook) -a "$(AWK)" -x < "$(top_builddir)/doc/$*.mu" > "$*.db"
|
$(converter_mu2docbook) -a "$(AWK)" -x < "$(top_builddir)/doc/$*.mu" > "$*.db"
|
||||||
|
|
||||||
|
.css_.css:
|
||||||
|
cp "$(top_srcdir)/doc/$*.css_" $*.css
|
||||||
|
|
||||||
|
.png_.png:
|
||||||
|
cp "$(top_srcdir)/doc/$*.png_" $*.png
|
||||||
|
|
||||||
head.db: $(converter_mu2docbook)
|
head.db: $(converter_mu2docbook)
|
||||||
$(converter_mu2docbook) -a "$(AWK)" --head "E-MailRelay" > head.db.tmp && mv -f head.db.tmp head.db
|
$(converter_mu2docbook) -a "$(AWK)" --head "E-MailRelay" > head.db.tmp && mv -f head.db.tmp head.db
|
||||||
|
|
||||||
@ -442,11 +533,13 @@ tail.db: $(converter_mu2docbook)
|
|||||||
emailrelay.docbook: head.db tail.db userguide.db reference.db developer.db
|
emailrelay.docbook: head.db tail.db userguide.db reference.db developer.db
|
||||||
cat head.db userguide.db reference.db developer.db tail.db > emailrelay.docbook
|
cat head.db userguide.db reference.db developer.db tail.db > emailrelay.docbook
|
||||||
|
|
||||||
.docbook: emailrelay.docbook
|
.docbook: emailrelay.docbook $(png_files_out)
|
||||||
-xmlto -o docbook html emailrelay.docbook && touch .docbook && cp *.png docbook/
|
-xmlto -o docbook html emailrelay.docbook && touch .docbook && cp "$(top_srcdir)/doc/"*.png docbook/
|
||||||
|
|
||||||
.dox:
|
.dox:
|
||||||
$(run_doxygen) "$(HAVE_DOXYGEN)" "$(top_srcdir)" "$(top_builddir)" && touch .dox
|
$(run_doxygen) "$(HAVE_DOXYGEN)" "$(top_srcdir)" "$(top_builddir)" Doxyfile && touch .dox
|
||||||
|
-$(run_doxygen_fixup) "$(top_builddir)/doc/doxygen"
|
||||||
|
-cp "$(top_srcdir)/doc/emailrelay-doxygen.css_" "$(top_builddir)/doc/doxygen/emailrelay-doxygen.css"
|
||||||
|
|
||||||
emailrelay-man.html: emailrelay.1
|
emailrelay-man.html: emailrelay.1
|
||||||
if test "$(HAVE_MAN2HTML)" = "yes" ; then man2html -r -L. emailrelay.1 < /dev/null > emailrelay-man.html.tmp && mv emailrelay-man.html.tmp emailrelay-man.html ; grep -v '^Content-type:' < emailrelay-man.html | grep -v '^Time:' > emailrelay-man.html.tmp ; mv emailrelay-man.html.tmp emailrelay-man.html ; fi
|
if test "$(HAVE_MAN2HTML)" = "yes" ; then man2html -r -L. emailrelay.1 < /dev/null > emailrelay-man.html.tmp && mv emailrelay-man.html.tmp emailrelay-man.html ; grep -v '^Content-type:' < emailrelay-man.html | grep -v '^Time:' > emailrelay-man.html.tmp ; mv emailrelay-man.html.tmp emailrelay-man.html ; fi
|
||||||
@ -456,10 +549,10 @@ developer.html reference.html userguide.html: $(converter_html)
|
|||||||
developer.mu reference.mu userguide.mu: $(converter_txt2mu)
|
developer.mu reference.mu userguide.mu: $(converter_txt2mu)
|
||||||
|
|
||||||
readme.html: $(top_srcdir)/README $(converter_html)
|
readme.html: $(top_srcdir)/README $(converter_html)
|
||||||
$(converter_html) -a "$(AWK)" "$(top_srcdir)/README" "$(stylesheet)" > readme.html
|
$(converter_html) -a "$(AWK)" "$(top_srcdir)/README" "$(css)" > readme.html
|
||||||
|
|
||||||
changelog.html: $(top_srcdir)/ChangeLog $(converter_html)
|
changelog.html: $(top_srcdir)/ChangeLog $(converter_html)
|
||||||
$(converter_html) -a "$(AWK)" "$(top_srcdir)/ChangeLog" "$(stylesheet)" > changelog.html
|
$(converter_html) -a "$(AWK)" "$(top_srcdir)/ChangeLog" "$(css)" > changelog.html
|
||||||
|
|
||||||
emailrelay.1.gz : emailrelay.1
|
emailrelay.1.gz : emailrelay.1
|
||||||
if test -n "$(GZIP)" ; then $(GZIP) -c "$(top_srcdir)/doc/emailrelay.1" > emailrelay.1.gz ; fi
|
if test -n "$(GZIP)" ; then $(GZIP) -c "$(top_srcdir)/doc/emailrelay.1" > emailrelay.1.gz ; fi
|
||||||
@ -478,12 +571,13 @@ emailrelay-poke.1.gz: emailrelay-poke.1
|
|||||||
|
|
||||||
install-data-local: install-e_docDATA
|
install-data-local: install-e_docDATA
|
||||||
$(mkinstalldirs) "$(DESTDIR)$(e_docdir)/doxygen"
|
$(mkinstalldirs) "$(DESTDIR)$(e_docdir)/doxygen"
|
||||||
for file in doxygen/* ; do $(INSTALL) --mode=644 "$$file" "$(DESTDIR)$(e_docdir)/$$file" ; done
|
for file in doxygen/* ; do $(INSTALL) -m 644 "$$file" "$(DESTDIR)$(e_docdir)/$$file" ; done
|
||||||
|
|
||||||
uninstall-local:
|
uninstall-local:
|
||||||
-find "$(DESTDIR)$(e_docdir)/doxygen" -type f | xargs rm -f
|
-find "$(DESTDIR)$(e_docdir)/doxygen" -type f | xargs rm -f
|
||||||
-rmdir "$(DESTDIR)$(e_docdir)/doxygen" 2>/dev/null
|
-rmdir "$(DESTDIR)$(e_docdir)/doxygen" 2>/dev/null
|
||||||
-rmdir "$(DESTDIR)$(e_docdir)" 2>/dev/null
|
-rmdir "$(DESTDIR)$(e_docdir)" 2>/dev/null
|
||||||
|
|
||||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
.NOEXPORT:
|
.NOEXPORT:
|
||||||
|
Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 7.3 KiB |
@ -3,12 +3,14 @@ E-MailRelay Internals
|
|||||||
|
|
||||||
Module structure
|
Module structure
|
||||||
----------------
|
----------------
|
||||||
There are four main C++ libraries in the E-MailRelay code: "glib" provides
|
The main C++ libraries in the E-MailRelay code are: "glib", providing low-level
|
||||||
low-level classes for file-system abstraction, date and time representation,
|
classes for file-system abstraction, date and time representation, string
|
||||||
string utility functions, logging, command line parsing etc., "gnet" provides
|
utility functions, logging, command line parsing etc.; "gssl", which is a thin
|
||||||
network classes using the Berkley socket and Winsock APIs, "gsmtp" contains SMTP
|
abstraction over OpenSSL; "gnet", which provides network classes using the
|
||||||
and message-store classes, and "gpop" contains POP3 classes. All four libraries
|
Berkley socket and Winsock APIs; "gauth", which implements various
|
||||||
are portable between POSIX-like systems (eg. Linux) and Windows.
|
authentication mechanisms; "gsmtp", containing SMTP and message-store classes;
|
||||||
|
and "gpop", which contains POP3 classes. All of these libraries are portable
|
||||||
|
between POSIX-like systems (eg. Linux) and Windows.
|
||||||
|
|
||||||
Under Windows there is an additional library for event handling. Windows has
|
Under Windows there is an additional library for event handling. Windows has
|
||||||
historically built network event processing on top of the GUI event system which
|
historically built network event processing on top of the GUI event system which
|
||||||
@ -26,6 +28,11 @@ This event model means that the server can handle multiple clients
|
|||||||
simultaneously from a single thread and the only significant blocking occurs
|
simultaneously from a single thread and the only significant blocking occurs
|
||||||
when external programs are executed (see "--filter" and "--verifier").
|
when external programs are executed (see "--filter" and "--verifier").
|
||||||
|
|
||||||
|
In some ways this makes the implementation more complicated than the equivalent
|
||||||
|
multi-threaded approach since (for example) it is not possible to wait for a
|
||||||
|
complete line of input to be received from a remote SMTP client because there
|
||||||
|
might be other connection that need servicing.
|
||||||
|
|
||||||
See *C10K Problem* [http://www.kegel.com/c10k.html] for a discussion of
|
See *C10K Problem* [http://www.kegel.com/c10k.html] for a discussion of
|
||||||
different network event models.
|
different network event models.
|
||||||
|
|
||||||
@ -103,17 +110,17 @@ Windows service
|
|||||||
---------------
|
---------------
|
||||||
To get E-MailRelay to run as a Windows service there is a service wrapper
|
To get E-MailRelay to run as a Windows service there is a service wrapper
|
||||||
program called "emailrelay-service.exe". This program registers itself as
|
program called "emailrelay-service.exe". This program registers itself as
|
||||||
a service when run with the "--install" commandline switch. When the service
|
a service when run with the "--install" commandline option. When the service
|
||||||
runs the wrapper starts the actual E-MailRelay server by looking for a batch
|
runs the wrapper starts the actual E-MailRelay server by looking for a batch
|
||||||
file called "emailrelay-start.bat" in the same directory as service wrapper
|
file called "emailrelay-start.bat" in the same directory as service wrapper
|
||||||
executable. It reads the contents of this batch file in order to construct the
|
executable. It reads the contents of this batch file in order to construct the
|
||||||
E-MailRelay command-line, adding "--no-daemon" and "--hidden" switches if they
|
E-MailRelay command-line, adding "--no-daemon" and "--hidden" options if they
|
||||||
are not there already.
|
are not there already.
|
||||||
|
|
||||||
The service name and display name can be added to the wrapper's "--install"
|
The service name and display name can be added to the wrapper's "--install"
|
||||||
command-line, and it is the service name that is used to derive the name of the
|
command-line, and it is the service name that is used to derive the name of the
|
||||||
"start" batch file. This allows more than one server to be run as services,
|
"start" batch file. This allows more than one server to be run as services,
|
||||||
using different server command-line switches on each one.
|
using different server command-line options on each one.
|
||||||
|
|
||||||
Diagrams
|
Diagrams
|
||||||
--------
|
--------
|
||||||
@ -128,37 +135,15 @@ State transition diagrams:
|
|||||||
Sequence diagrams:
|
Sequence diagrams:
|
||||||
* *Proxy mode forwarding* [sequence-3.png]
|
* *Proxy mode forwarding* [sequence-3.png]
|
||||||
|
|
||||||
Configuration GUI
|
E-MailRelay GUI
|
||||||
-----------------
|
---------------
|
||||||
The optional configuration GUI program "emailrelay-gui" uses TrollTech Qt v4
|
The optional GUI program "emailrelay-gui" uses TrollTech Qt v4 for its user
|
||||||
for its user interface components. The GUI can run as a stand-alone
|
interface components. The GUI can run as a stand-alone configuration helper
|
||||||
configuration helper or as part of a self-extracting installation program called
|
("--as-configure") or as part of a self-extracting installation
|
||||||
"emailrelay-setup".
|
("--as-install"). When it runs it checks whether it has a payload of packed
|
||||||
|
files. If it has then it runs as an installer; if it does not then it runs as a
|
||||||
The packing scheme used to assemble a self-extracting archive is a simple
|
configuration helper. Refer to the comments in "src/gui/guimain.cpp" for more
|
||||||
concatenation of the "stub" executable followed by a table of contents for the
|
details.
|
||||||
payload files, followed by the payload files themselves (possibly compressed by
|
|
||||||
"zlib"), and ending with an twelve-byte ascii representation of the offset of
|
|
||||||
the table of contents.
|
|
||||||
|
|
||||||
On Windows there are two levels of packing: the "setup" program has a stub
|
|
||||||
executable written in "C" that prints an "extracting..." message to the standard
|
|
||||||
output, with a payload comprising another packed executable and a small number of
|
|
||||||
"C++" runtime library files. The inner packed executable has the emailrelay GUI
|
|
||||||
program as its stub and all the other installable files, including the main
|
|
||||||
emailrelay executable, as its payload.
|
|
||||||
|
|
||||||
When the GUI runs it checks whether it has a payload of packed files. If it
|
|
||||||
has then it runs as an installer; if it does not then it runs as a configuration
|
|
||||||
helper. Refer to the comments in "src/gui/guimain.cpp" for more details.
|
|
||||||
|
|
||||||
The code works exactly the same on Windows, Mac OS X and unix-like operating
|
|
||||||
systems. However, on unix-like operating systems "make install", possibly run
|
|
||||||
via some package manager, is the preferred way to install files so the "setup"
|
|
||||||
program is never normally built or distributed. On Mac OS X the default packing
|
|
||||||
scheme works well enough, but there is also provision for having a separate
|
|
||||||
payload file within the Mac bundle rather than appending the payload to the stub
|
|
||||||
executable.
|
|
||||||
|
|
||||||
The user interface is structured as a "wizard" having a dialog box with the
|
The user interface is structured as a "wizard" having a dialog box with the
|
||||||
forward and back buttons at the bottom and a single Qt layout object for the
|
forward and back buttons at the bottom and a single Qt layout object for the
|
||||||
@ -171,19 +156,169 @@ key-value pairs into a stringstream (see "src/gui/pages.cpp"). These key-value
|
|||||||
pairs are processed by an installer class into a list of action objects (in the
|
pairs are processed by an installer class into a list of action objects (in the
|
||||||
"Command" design pattern) and then the action objects are run in turn. In order
|
"Command" design pattern) and then the action objects are run in turn. In order
|
||||||
to display the progress of the installation each action object is run within a
|
to display the progress of the installation each action object is run within a
|
||||||
timer callback so that the Qt framework get a chance to update the GUI between
|
timer callback so that the Qt framework gets a chance to update the GUI between
|
||||||
each one.
|
each one.
|
||||||
|
|
||||||
During development the user interface pages and the installer can be tested
|
During development the user interface pages and the installer can be tested
|
||||||
separately since the interface between them is a simple text stream containing
|
separately since the interface between them is a simple text stream containing
|
||||||
key-value pairs.
|
key-value pairs.
|
||||||
|
|
||||||
|
When run in "--as-configure" mode the GUI normally ends up simply editing
|
||||||
|
the "emailrelay.conf" file and/or the "emailrelay.auth" secrets file.
|
||||||
|
|
||||||
|
When run in "--as-install" mode the GUI expects to unpack all the E-MailRelay
|
||||||
|
files from a "payload" archive into target directories.
|
||||||
|
|
||||||
|
The packing scheme used for a payload archive is a simple concatenation of the
|
||||||
|
"stub" executable followed by a table of contents for the payload files,
|
||||||
|
followed by the payload files themselves (possibly compressed by "zlib"), and
|
||||||
|
ending with an twelve-byte ascii representation of the offset of the table of
|
||||||
|
contents.
|
||||||
|
|
||||||
|
The payload may be appended to the GUI executable to make a self-extracting
|
||||||
|
installer, usually then called "emailrelay-setup".
|
||||||
|
|
||||||
|
However, on Windows two levels of packing are required: the "emailrelay-setup"
|
||||||
|
program has a stub executable written in "C" that prints an "extracting..."
|
||||||
|
message to the standard output, with a payload comprising another packed
|
||||||
|
executable and a small number of "C++" runtime library files. The inner packed
|
||||||
|
executable has the emailrelay GUI program as its stub and all the other
|
||||||
|
installable files, including the main emailrelay executable, as its payload.
|
||||||
|
|
||||||
|
On unix-like operating systems it is more natural to use some sort of package
|
||||||
|
derived from the "make install" process rather than an installer program, so
|
||||||
|
"emailrelay-setup" ia typically never built.
|
||||||
|
|
||||||
|
On Mac OS X the payload is better stored in the installer's application
|
||||||
|
bundle rather than simply appended to the binary. This is desribed in the next
|
||||||
|
section.
|
||||||
|
|
||||||
|
Windows build
|
||||||
|
-------------
|
||||||
|
On Windows E-MailRelay can be built using MinGW or Visual Studio. Makefiles and
|
||||||
|
Visual Studio 2012 project files are provided in the "src" directory.
|
||||||
|
|
||||||
|
For a MinGW build of the E-MailRelay server without TLS/SSL support it should
|
||||||
|
be sufficient to run make from the "src" directory:
|
||||||
|
|
||||||
|
C:\emailrelay\src> PATH=c:\mingw\bin;%PATH%
|
||||||
|
C:\emailrelay\src> mingw32-make -f mingw.mak
|
||||||
|
|
||||||
|
To add TLS/SSL support first install ActiveState perl and make sure that your
|
||||||
|
MinGW installation contains the MSYS subsystem. Unpack the OpenSSL tarball and
|
||||||
|
build it as follows:
|
||||||
|
|
||||||
|
C:\openssl> PATH=c:\perl\bin;c:\mingw\msys\1.0\bin;c:\mingw\bin;%PATH%
|
||||||
|
C:\openssl> bash -l
|
||||||
|
$ ./config
|
||||||
|
$ mingw32-make
|
||||||
|
|
||||||
|
Then edit the E-MailRelay "src/mingw-common.mak" file to enable openssl and run
|
||||||
|
"mingw32-make" as above.
|
||||||
|
|
||||||
|
If building the E-MailRelay GUI then it is best to use MinGW with Qt 5 static
|
||||||
|
libraries. Start by installing zlib source (eg. to c:/zlib) and then build Qt
|
||||||
|
using the following "configure" options:
|
||||||
|
|
||||||
|
-prefix /c/qt/qt5-static
|
||||||
|
-I c:/zlib
|
||||||
|
-L c:/zlib
|
||||||
|
-static
|
||||||
|
-release
|
||||||
|
-force-debug-info
|
||||||
|
-separate-debug-info
|
||||||
|
-opensource
|
||||||
|
-confirm-license
|
||||||
|
-no-c++11
|
||||||
|
-fully-process
|
||||||
|
-no-largefile
|
||||||
|
-accessibility
|
||||||
|
-no-sql-sqlite
|
||||||
|
-no-sql-sqlite2
|
||||||
|
-no-javascript-jit
|
||||||
|
-no-qml-debug
|
||||||
|
-platform win32-g++
|
||||||
|
-no-sse2
|
||||||
|
-no-sse3
|
||||||
|
-no-ssse3
|
||||||
|
-no-sse4.1
|
||||||
|
-no-sse4.2
|
||||||
|
-no-avx
|
||||||
|
-no-avx2
|
||||||
|
-no-neon
|
||||||
|
-no-mips_dsp
|
||||||
|
-no-mips_dspr2
|
||||||
|
-no-pkg-config
|
||||||
|
-system-zlib
|
||||||
|
-no-gif
|
||||||
|
-qt-libpng
|
||||||
|
-no-libjpeg
|
||||||
|
-no-openssl
|
||||||
|
-qt-pcre
|
||||||
|
-qt-xcb
|
||||||
|
-qt-xkbcommon
|
||||||
|
-gui
|
||||||
|
-widgets
|
||||||
|
-no-rpath
|
||||||
|
-no-optimized-qmake
|
||||||
|
-no-nis
|
||||||
|
-no-cups
|
||||||
|
-no-iconv
|
||||||
|
-no-icu
|
||||||
|
-strip
|
||||||
|
-no-pch
|
||||||
|
-no-dbus
|
||||||
|
-no-xcb
|
||||||
|
-no-eglfs
|
||||||
|
-no-directfb
|
||||||
|
-no-linuxfb
|
||||||
|
-no-kms
|
||||||
|
-no-opengl
|
||||||
|
-no-system-proxies
|
||||||
|
-no-glib
|
||||||
|
|
||||||
|
Start the Qt build by running "mingw32-make" from the "qtbase" directory and
|
||||||
|
finish off with "mingw32-make install".
|
||||||
|
|
||||||
|
Edit the E-MailRelay GUI makefile "src/gui/mingw.mak" so that the E-MailRelay
|
||||||
|
build uses similar compiler options to the Qt examples and then then build with:
|
||||||
|
|
||||||
|
$ mingw32-make -f mingw.mak
|
||||||
|
|
||||||
|
Mac OS X packaging
|
||||||
|
------------------
|
||||||
|
On Mac OS X the standard "configure ; make ; make install" procedure works best
|
||||||
|
if the "configure" script is given Mac-like directories on its command-line. The
|
||||||
|
script "bin/configure-mac.sh" can be used to do this.
|
||||||
|
|
||||||
|
The "make" step in "src/main" on Mac OS X additionally builds a simple wrapper
|
||||||
|
program "emailrelay-start" from "start.cpp" that runs the E-MailRelay server
|
||||||
|
using a command-line assembled from the "emailrelay.conf" file. This is then
|
||||||
|
used from the "E-MailRelay-Start" application bundle to provide a Mac-friendly
|
||||||
|
way of running the server.
|
||||||
|
|
||||||
|
Similary the "make" in "src/gui" builds a wrapper program "emailrelay-start-gui"
|
||||||
|
from "guistart.cpp" that runs "emailrelay-gui.real" and this is used from the
|
||||||
|
"E-MailRelay-Configure" application bundle.
|
||||||
|
|
||||||
|
The self-extracting installer scheme (described above) does work on Mac OS X,
|
||||||
|
but it is more sensible to use a Mac application bundle (E-MailRelay-Install) to
|
||||||
|
hold the payload and then wrap the whold thing up in a ".dmg" disk image. The
|
||||||
|
GUI code supports this by looking for a separate file called "payload" and using
|
||||||
|
that in preference to any payload archive it finds appended to its own executable.
|
||||||
|
|
||||||
|
The format of the "payload" file in the application bundle is the same as is used
|
||||||
|
in a self-extracting installer.
|
||||||
|
|
||||||
|
The makefile in the "src/gui" directory provides the "image" target to create
|
||||||
|
the E-MailRelay-Install application bundle and the disk image.
|
||||||
|
|
||||||
Source control
|
Source control
|
||||||
--------------
|
--------------
|
||||||
The source code is stored in the SourceForge "svn" repository. A working
|
The source code is stored in the SourceForge "svn" repository. A working
|
||||||
copy can be checked out as follows:
|
copy can be checked out as follows:
|
||||||
|
|
||||||
$ svn co https://emailrelay.svn.sourceforge.net/svnroot/emailrelay
|
$ svn co https://svn.code.sf.net/p/emailrelay/code/trunk
|
||||||
|
|
||||||
Directory structure
|
Directory structure
|
||||||
-------------------
|
-------------------
|
||||||
@ -201,6 +336,14 @@ Directory structure
|
|||||||
|
|
||||||
A network library using Berkley sockets or Winsock.
|
A network library using Berkley sockets or Winsock.
|
||||||
|
|
||||||
|
# src/gssl
|
||||||
|
|
||||||
|
A library for using OpenSSL.
|
||||||
|
|
||||||
|
# src/gauth
|
||||||
|
|
||||||
|
A library for SASL and PAM authentication.
|
||||||
|
|
||||||
# src/gsmtp
|
# src/gsmtp
|
||||||
|
|
||||||
An SMTP library.
|
An SMTP library.
|
||||||
@ -223,7 +366,7 @@ Directory structure
|
|||||||
|
|
||||||
# lib
|
# lib
|
||||||
|
|
||||||
Parent directory for ISO C++ fixups for various compilers.
|
Parent directory for ISO C++ fixups for various older compilers.
|
||||||
|
|
||||||
# test
|
# test
|
||||||
|
|
||||||
@ -271,16 +414,13 @@ these cases there are three source files per header. For example, "gsocket.cpp",
|
|||||||
|
|
||||||
Compile-time features
|
Compile-time features
|
||||||
---------------------
|
---------------------
|
||||||
Compile-time features can be selected with switches passed to the "configure"
|
Compile-time features can be selected with options passed to the "configure"
|
||||||
script. These include the following:
|
script. These include the following:
|
||||||
|
|
||||||
* Debug-level logging ("--enable-debug")
|
* Debug-level logging ("--enable-debug")
|
||||||
* IPv6 (Linux only) ("--enable-ipv6")
|
* IPv6 (Linux only) ("--enable-ipv6")
|
||||||
* Configuration GUI ("--enable-gui")
|
* Configuration GUI ("--enable-gui")
|
||||||
|
* PAM support ("--with-pam")
|
||||||
The "--enable-fhs" switch alters the compiled-in default directories to conform
|
|
||||||
to the Linux File Hierarchy Standard (FHS). This is recommended for most modern
|
|
||||||
Linux distributions.
|
|
||||||
|
|
||||||
Some functionality can be disabled at compile-time in order to reduce the size
|
Some functionality can be disabled at compile-time in order to reduce the size
|
||||||
of the executable, typically when building for embedded systems:
|
of the executable, typically when building for embedded systems:
|
||||||
@ -290,101 +430,16 @@ of the executable, typically when building for embedded systems:
|
|||||||
* Disable administration interface, "--disable-admin"
|
* Disable administration interface, "--disable-admin"
|
||||||
* Disable execution of external programs, "--disable-exec"
|
* Disable execution of external programs, "--disable-exec"
|
||||||
|
|
||||||
The "--enable-small-config" switch can be used to change the command-line
|
The "--enable-small-config" option can be used to change the command-line
|
||||||
parsing code to use a configuration file instead, resulting in a smaller
|
parsing code to use a configuration file instead, resulting in a smaller
|
||||||
executable. This also removes a lot of the configuration checking code, so it is
|
executable. This also removes a lot of the configuration checking code, so it is
|
||||||
not recommended unless size is critical. (The format of the configuration file
|
not recommended unless size is critical. (The format of the configuration file
|
||||||
is similar to the command-line using the long-form switches without the
|
is similar to the command-line using the long-form options without the
|
||||||
double-dash and using '=' to separate the switch from the switch value.)
|
double-dash and using '=' to separate the option from the option value.)
|
||||||
|
|
||||||
Use "./configure --help" to see a complete list of options and refer to
|
Use "./configure --help" to see a complete list of options and refer to
|
||||||
"acinclude.m4" for more detailed comments.
|
"acinclude.m4" for more detailed comments.
|
||||||
|
|
||||||
Patterns
|
|
||||||
--------
|
|
||||||
Gang-of-four Design Patterns (ISBN 0-201-63361-2):
|
|
||||||
|
|
||||||
+ Factory method
|
|
||||||
|
|
||||||
- GNet::EventLoop::create()
|
|
||||||
- GNet::Server::newPeer()
|
|
||||||
- GSmtp::MessageStore::newMessage()
|
|
||||||
|
|
||||||
+ Iterator
|
|
||||||
|
|
||||||
- G::DirectoryIterator
|
|
||||||
- GNet::EventHandlerList::begin()/end()
|
|
||||||
- GSmtp::MessageStore::iterator()
|
|
||||||
|
|
||||||
+ Singleton
|
|
||||||
|
|
||||||
- G::LogOutput
|
|
||||||
- GGui::ApplicationInstance
|
|
||||||
- GNet::EventLoop
|
|
||||||
- GNet::TimerList
|
|
||||||
|
|
||||||
+ Facade
|
|
||||||
|
|
||||||
- G::File
|
|
||||||
- GNet::Address
|
|
||||||
|
|
||||||
+ Decorator
|
|
||||||
|
|
||||||
- GSmtp::ProtocolMessage
|
|
||||||
|
|
||||||
+ Command
|
|
||||||
|
|
||||||
- Installer
|
|
||||||
|
|
||||||
Lakos' Large Scale C++ Software Design patterns (ISBN 0-201-63362-0):
|
|
||||||
|
|
||||||
+ Insulation; fully insulating concrete class (Meyer's Effective C++ Item 34, pimple pattern)
|
|
||||||
|
|
||||||
- G::DirectoryIterator
|
|
||||||
- GNet::Address
|
|
||||||
- GNet::Resolver
|
|
||||||
- GSmtp::ProtocolMessage
|
|
||||||
|
|
||||||
+ Insulation; protocol class
|
|
||||||
|
|
||||||
- GNet::EventHandler
|
|
||||||
- GSmtp::NewMessage
|
|
||||||
- GSmtp::StoredMessage
|
|
||||||
- GSmtp::ProtocolMessage
|
|
||||||
- GSmtp::ServerProtocol::Sender
|
|
||||||
- GSmtp::ClientProtocol::Sender
|
|
||||||
|
|
||||||
Meyer's More Effective C++ patterns (ISBN 0-201-63371-X):
|
|
||||||
|
|
||||||
+ Reference counting (Item 29)
|
|
||||||
|
|
||||||
- GSmtp::MessageStore::Iterator
|
|
||||||
- G::Slot0
|
|
||||||
|
|
||||||
+ Lazy evaluation (Item 17)
|
|
||||||
|
|
||||||
- GNet::EventHandlerList::list()
|
|
||||||
- G::Date::weekday()
|
|
||||||
|
|
||||||
Other patterns:
|
|
||||||
|
|
||||||
+ Finite state machine
|
|
||||||
|
|
||||||
- GSmtp::ServerProtocol
|
|
||||||
|
|
||||||
+ Slot/signal
|
|
||||||
|
|
||||||
- G::Slot0
|
|
||||||
- G::Signal0
|
|
||||||
|
|
||||||
+ Exception-safe assignment using swap
|
|
||||||
|
|
||||||
- G::Slot0
|
|
||||||
|
|
||||||
+ Dependency injection
|
|
||||||
|
|
||||||
- GSmtp::Server::newProtocolMessage()
|
|
||||||
|
|
||||||
Idioms
|
Idioms
|
||||||
------
|
------
|
||||||
The "<<=" operator defined in "src/glib/gmemory.h" is used idiomatically
|
The "<<=" operator defined in "src/glib/gmemory.h" is used idiomatically
|
||||||
@ -392,4 +447,4 @@ to reassign a std::auto_ptr<> since reset() is not always available.
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
Copyright (C) 2001-2008 Graeme Walker <graeme_walker@users.sourceforge.net>. All rights reserved.
|
Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>. All rights reserved.
|
||||||
|
BIN
doc/diagram-1.png
Normal file
After Width: | Height: | Size: 22 KiB |
BIN
doc/diagram-2.png
Normal file
After Width: | Height: | Size: 26 KiB |
13
doc/doxygen-header.html
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<!-- This comment will put IE 6, 7 and 8 in quirks mode -->
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||||
|
<title>$title</title>
|
||||||
|
<link href="$relpath$tabs.css" rel="stylesheet" type="text/css"/>
|
||||||
|
<link href="$relpath$search/search.css" rel="stylesheet" type="text/css"/>
|
||||||
|
<script type="text/javaScript" src="$relpath$search/search.js"></script>
|
||||||
|
<link href="$relpath$doxygen.css" rel="stylesheet" type="text/css"/>
|
||||||
|
<link href="$relpath$emailrelay-doxygen.css" rel="stylesheet" type="text/css"/>
|
||||||
|
</head>
|
||||||
|
<body onload='searchBox.OnSelectItem(0);'>
|
@ -11,4 +11,4 @@
|
|||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
<!-- Copyright (C) 2001-2008 Graeme Walker <graeme_walker@users.sourceforge.net>. All rights reserved. -->
|
<!-- Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>. All rights reserved. -->
|
@ -1,24 +0,0 @@
|
|||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
|
|
||||||
<title>E-MailRelay: $title</title>
|
|
||||||
<meta name="robots" content="noindex,nofollow">
|
|
||||||
<link href="doxygen.css" rel="stylesheet" type="text/css">
|
|
||||||
<style type="text/css">
|
|
||||||
<!--
|
|
||||||
h1 { text-align: center; font-family: veranda, arial, helvetica, sans-serif; color: #09c ; }
|
|
||||||
h2 { font-family: veranda, geneva, arial, helvetica, sans-serif; color: #09c ; }
|
|
||||||
h3 { font-family: veranda, geneva, arial, helvetica, sans-serif; color: #09c ; }
|
|
||||||
a { color: #09c }
|
|
||||||
a:visited { color: #09c }
|
|
||||||
a.qindex { color: #09c }
|
|
||||||
a.qindex:visited { color: #09c }
|
|
||||||
a.qindex:hover { background-color: #ccf }
|
|
||||||
a.qindexHL { color: #09c ; background-color: #eeeeff ; }
|
|
||||||
a.qindexHL:visited { color: #09c ; background-color: #eeeeff ; }
|
|
||||||
a.qindexHL:hover { color: #09c ; background-color: #ccf; }
|
|
||||||
-->
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body bgcolor="#ffffff">
|
|
148
doc/emailrelay-doxygen.css_
Normal file
@ -0,0 +1,148 @@
|
|||||||
|
/*
|
||||||
|
Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
emailrelay-doxygen.css
|
||||||
|
|
||||||
|
This stylesheet is included by the customised html header
|
||||||
|
after doxygen.css. It repeats those stanzas of doxygen.css
|
||||||
|
that it needs to change and the include order makes sure
|
||||||
|
that this stylesheet takes precedence.
|
||||||
|
|
||||||
|
This file is only installed into the doxygen directory by
|
||||||
|
the makefile if the "doxygen-fixup" post-processing perl
|
||||||
|
script succeeds. If that script decides to do nothing then
|
||||||
|
the standard doxygen stylesheet operates on its own without
|
||||||
|
any interference from here. Specifically, the perl script
|
||||||
|
will fail silently if there is no "Doxygen 1.6/7" marker in
|
||||||
|
the generated html files, so with any version of doxygen
|
||||||
|
before 1.6 or after 1.7 the output will have the standard
|
||||||
|
doxygen style.
|
||||||
|
|
||||||
|
The ".memItemRight a:first-child" stanza is used to operate
|
||||||
|
on the member function name in the list of member functions,
|
||||||
|
but not the subsequent function parameters.
|
||||||
|
|
||||||
|
The "implements", "realmemname", "referencedby", etc class
|
||||||
|
names are added to the html by the "doxygen-fixup" script.
|
||||||
|
|
||||||
|
The #09c colour is the emailrelay heading colour, with #068
|
||||||
|
being a darker variant used within doxygen's blue-shaded
|
||||||
|
tables.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
body, table, div, p, dl
|
||||||
|
{
|
||||||
|
font-family: verdana, arial, helvetica, sans-serif ;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.tabs a:link, div.tabs a:visited, div.tabs a:active, div.tabs A:hover
|
||||||
|
{
|
||||||
|
color: #09c ;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1, h2, h3
|
||||||
|
{
|
||||||
|
color: #09c ;
|
||||||
|
}
|
||||||
|
|
||||||
|
a
|
||||||
|
{
|
||||||
|
color: black;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:visited
|
||||||
|
{
|
||||||
|
color: black;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:hover
|
||||||
|
{
|
||||||
|
color: black;
|
||||||
|
text-decoration: underline;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.contents a, .contents a:visited
|
||||||
|
{
|
||||||
|
color: #09c ;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.el
|
||||||
|
{
|
||||||
|
color: black;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.el:visited
|
||||||
|
{
|
||||||
|
color: black;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.memItemRight a:first-child
|
||||||
|
{
|
||||||
|
color: black ;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.definitionat, .definitionat a:visited, .definitionat a
|
||||||
|
{
|
||||||
|
color: grey;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.references, .references a:visited, .references a
|
||||||
|
{
|
||||||
|
color: grey;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.referencedby, .referencedby a:visited, .referencedby a
|
||||||
|
{
|
||||||
|
color: grey;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.implements, .implements a:visited, .implements a
|
||||||
|
{
|
||||||
|
color: grey;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.memname, td.memname
|
||||||
|
{
|
||||||
|
color: black;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
td.paramname em, td.paramname code
|
||||||
|
{
|
||||||
|
color: black;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.realmemname
|
||||||
|
{
|
||||||
|
color: #068 ;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
@ -1,8 +1,8 @@
|
|||||||
.\" Copyright (C) 2001-2008 Graeme Walker <graeme_walker@users.sourceforge.net>
|
.\" Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>
|
||||||
.\"
|
.\"
|
||||||
.\" This program is free software: you can redistribute it and/or modify
|
.\" This program is free software: you can redistribute it and/or modify
|
||||||
.\" it under the terms of the GNU General Public License as published by
|
.\" it under the terms of the GNU General Public License as published by
|
||||||
.\" the Free Software Foundation, either version 3 of the License, or
|
.\" the Free Software Foundation, either version 3 of the License, or
|
||||||
.\" (at your option) any later version.
|
.\" (at your option) any later version.
|
||||||
.\"
|
.\"
|
||||||
.\" This program is distributed in the hope that it will be useful,
|
.\" This program is distributed in the hope that it will be useful,
|
||||||
@ -22,19 +22,19 @@ emailrelay-filter-copy \- an E-MailRelay filter for pop-by-name
|
|||||||
.B emailrelay-filter-copy
|
.B emailrelay-filter-copy
|
||||||
[--help]
|
[--help]
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
The
|
The
|
||||||
.I emailrelay-filter-copy
|
.I emailrelay-filter-copy
|
||||||
utility can be used as an
|
utility can be used as an
|
||||||
.B E-MailRelay
|
.B E-MailRelay
|
||||||
.I "--filter"
|
.I "--filter"
|
||||||
pre-processor program to copy e-mail messages from the main spool
|
pre-processor program to copy e-mail messages from the main spool
|
||||||
directory into all available sub-directories. When using the
|
directory into all available sub-directories. When using the
|
||||||
.I "--pop-by-name"
|
.I "--pop-by-name"
|
||||||
feature of the
|
feature of the
|
||||||
.B E-MailRelay
|
.B E-MailRelay
|
||||||
server this results in messages being copied all POP clients.
|
server this results in messages being copied to all POP clients.
|
||||||
.LP
|
.LP
|
||||||
Only the message envelope is copied; the content file stays in
|
Only the message envelope is copied; the content file stays in
|
||||||
the main directory.
|
the main directory.
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.BR emailrelay (1),
|
.BR emailrelay (1),
|
||||||
|
@ -18,21 +18,21 @@ emailrelay - e-mail transfer agent and proxy
|
|||||||
[OPTIONS]
|
[OPTIONS]
|
||||||
<P>
|
<P>
|
||||||
|
|
||||||
<B>emailrelay </B>
|
<B>emailrelay</B>
|
||||||
|
|
||||||
--as-server
|
--as-server
|
||||||
<P>
|
<P>
|
||||||
|
|
||||||
<B>emailrelay</B>
|
<B>emailrelay</B>
|
||||||
|
|
||||||
--as-client
|
--as-client
|
||||||
<I>server-address</I>
|
<I>server-address</I>
|
||||||
|
|
||||||
<P>
|
<P>
|
||||||
|
|
||||||
<B>emailrelay</B>
|
<B>emailrelay</B>
|
||||||
|
|
||||||
--as-proxy
|
--as-proxy
|
||||||
<I>server-address</I>
|
<I>server-address</I>
|
||||||
|
|
||||||
<A NAME="lbAD"> </A>
|
<A NAME="lbAD"> </A>
|
||||||
@ -41,18 +41,18 @@ emailrelay - e-mail transfer agent and proxy
|
|||||||
<I>emailrelay</I>
|
<I>emailrelay</I>
|
||||||
|
|
||||||
is a simple SMTP proxy and store-and-forward message transfer agent.
|
is a simple SMTP proxy and store-and-forward message transfer agent.
|
||||||
It does store-and-forward mail relay to a fixed next-hop server, without
|
It does store-and-forward mail relay to a fixed next-hop server, without
|
||||||
any routing.
|
any routing.
|
||||||
<P>
|
<P>
|
||||||
|
|
||||||
It runs in two main modes: a storage daemon
|
It runs in two main modes: a storage daemon
|
||||||
(<I>--as-server</I>)
|
(<I>--as-server</I>)
|
||||||
|
|
||||||
and a forwarding
|
and a forwarding
|
||||||
agent
|
agent
|
||||||
(<I>--as-client</I>).
|
(<I>--as-client</I>).
|
||||||
|
|
||||||
The storage daemon is an SMTP server which stores e-mail
|
The storage daemon is an SMTP server which stores e-mail
|
||||||
messages in a local spool directory. The forwarding agent acts as an
|
messages in a local spool directory. The forwarding agent acts as an
|
||||||
SMTP client sending the spooled e-mail messages on to the next
|
SMTP client sending the spooled e-mail messages on to the next
|
||||||
SMTP server in the chain.
|
SMTP server in the chain.
|
||||||
@ -83,15 +83,15 @@ Disables the smtp vrfy command and sends less verbose smtp responses.
|
|||||||
<DT><B>-q, --as-client </B><I><host:port></I>
|
<DT><B>-q, --as-client </B><I><host:port></I>
|
||||||
|
|
||||||
<DD>
|
<DD>
|
||||||
Runs as a client, forwarding spooled mail to <host>: equivalent to <I>--log</I> <I>--no-syslog</I> <I>--no-daemon</I> <I>--dont-serve</I> <I>--forward</I> <I>--forward-to</I>.
|
Runs as a client, forwarding all spooled mail to <host>: equivalent to <I>--log</I> <I>--no-syslog</I> <I>--no-daemon</I> <I>--dont-serve</I> <I>--forward</I> <I>--forward-to</I>.
|
||||||
<DT><B>-y, --as-proxy </B><I><host:port></I>
|
<DT><B>-y, --as-proxy </B><I><host:port></I>
|
||||||
|
|
||||||
<DD>
|
<DD>
|
||||||
Runs as a proxy: equivalent to <I>--log</I> <I>--close-stderr</I> <I>--poll</I>=0 <I>--forward-to</I>.
|
Runs as a proxy server, forwarding each mail immediately to <host>: equivalent to <I>--log</I> <I>--close-stderr</I> <I>--poll</I>=0 <I>--forward-to</I>.
|
||||||
<DT><B>-d, --as-server </B>
|
<DT><B>-d, --as-server </B>
|
||||||
|
|
||||||
<DD>
|
<DD>
|
||||||
Runs as a server: equivalent to <I>--log</I> <I>--close-stderr</I>.
|
Runs as a server, storing mail in the spool directory: equivalent to <I>--log</I> <I>--close-stderr</I>.
|
||||||
<DT><B>-C, --client-auth </B><I><file></I>
|
<DT><B>-C, --client-auth </B><I><file></I>
|
||||||
|
|
||||||
<DD>
|
<DD>
|
||||||
@ -103,7 +103,11 @@ Specifies an external program to process messages when they are forwarded.
|
|||||||
<DT><B>-j, --client-tls </B>
|
<DT><B>-j, --client-tls </B>
|
||||||
|
|
||||||
<DD>
|
<DD>
|
||||||
Enables tls/ssl layer for smtp client (if openssl built in).
|
Enables negotiated tls/ssl for smtp client (if openssl built in).
|
||||||
|
<DT><B>-b, --client-tls-connection </B>
|
||||||
|
|
||||||
|
<DD>
|
||||||
|
Enables smtp over tls/ssl for smtp client (if openssl built in).
|
||||||
<DT><B>-e, --close-stderr </B>
|
<DT><B>-e, --close-stderr </B>
|
||||||
|
|
||||||
<DD>
|
<DD>
|
||||||
@ -115,7 +119,7 @@ Sets the timeout (in seconds) when connecting to a remote server (default is 40)
|
|||||||
<DT><B>-g, --debug </B>
|
<DT><B>-g, --debug </B>
|
||||||
|
|
||||||
<DD>
|
<DD>
|
||||||
Generates debug-level logging if compiled-in.
|
Generates debug-level logging if built in.
|
||||||
<DT><B>-D, --domain </B><I><fqdn></I>
|
<DT><B>-D, --domain </B><I><fqdn></I>
|
||||||
|
|
||||||
<DD>
|
<DD>
|
||||||
@ -148,14 +152,14 @@ Displays help text and exits.
|
|||||||
|
|
||||||
<DD>
|
<DD>
|
||||||
Enables immediate forwarding of messages as soon as they are received (requires <I>--forward-to</I>).
|
Enables immediate forwarding of messages as soon as they are received (requires <I>--forward-to</I>).
|
||||||
<DT><B>-I, --interface </B><I><ip-address></I>
|
<DT><B>-I, --interface </B><I><ip-list></I>
|
||||||
|
|
||||||
<DD>
|
<DD>
|
||||||
Defines the listening interface for incoming connections.
|
Defines the listening interface(s) for incoming connections (comma-separated list with optional smtp=,pop=,admin= qualifiers).
|
||||||
<DT><B>-l, --log </B>
|
<DT><B>-l, --log </B>
|
||||||
|
|
||||||
<DD>
|
<DD>
|
||||||
Writes log information on standard error and syslog.
|
Writes log information on standard error and syslog (but see <I>--close-stderr</I> and <I>--no-syslog</I>).
|
||||||
<DT><B>-L, --log-time </B>
|
<DT><B>-L, --log-time </B>
|
||||||
|
|
||||||
<DD>
|
<DD>
|
||||||
@ -179,7 +183,7 @@ Defines a file for storing the daemon process-id.
|
|||||||
<DT><B>-O, --poll </B><I><period></I>
|
<DT><B>-O, --poll </B><I><period></I>
|
||||||
|
|
||||||
<DD>
|
<DD>
|
||||||
Enables polling of the spool directory for messages to be forwarded with the specified period (requires <I>--forward-to</I>).
|
Enables polling of the spool directory for messages to be forwarded with the specified period (zero means on client disconnection) (requires <I>--forward-to</I>).
|
||||||
<DT><B>-B, --pop </B>
|
<DT><B>-B, --pop </B>
|
||||||
|
|
||||||
<DD>
|
<DD>
|
||||||
@ -191,7 +195,7 @@ Defines the pop server secrets file (default is <I>/etc/emailrelay.auth</I>).
|
|||||||
<DT><B>-J, --pop-by-name </B>
|
<DT><B>-J, --pop-by-name </B>
|
||||||
|
|
||||||
<DD>
|
<DD>
|
||||||
Modifies the pop spool directory according to the user name (requires <I>--pop</I>).
|
Modifies the pop spool directory according to the pop user name (requires <I>--pop</I>).
|
||||||
<DT><B>-G, --pop-no-delete </B>
|
<DT><B>-G, --pop-no-delete </B>
|
||||||
|
|
||||||
<DD>
|
<DD>
|
||||||
@ -199,15 +203,15 @@ Disables message deletion via pop (requires <I>--pop</I>).
|
|||||||
<DT><B>-E, --pop-port </B><I><port></I>
|
<DT><B>-E, --pop-port </B><I><port></I>
|
||||||
|
|
||||||
<DD>
|
<DD>
|
||||||
Specifies the pop listening port number (requires <I>--pop</I>).
|
Specifies the pop listening port number (default is 110) (requires <I>--pop</I>).
|
||||||
<DT><B>-p, --port </B><I><port></I>
|
<DT><B>-p, --port </B><I><port></I>
|
||||||
|
|
||||||
<DD>
|
<DD>
|
||||||
Specifies the smtp listening port number.
|
Specifies the smtp listening port number (default is 25).
|
||||||
<DT><B>-w, --prompt-timeout </B><I><time></I>
|
<DT><B>-w, --prompt-timeout </B><I><time></I>
|
||||||
|
|
||||||
<DD>
|
<DD>
|
||||||
Sets the timeout (in seconds) for getting an initial prompt from the server.
|
Sets the timeout (in seconds) for getting an initial prompt from the server (default is 20).
|
||||||
<DT><B>-r, --remote-clients </B>
|
<DT><B>-r, --remote-clients </B>
|
||||||
|
|
||||||
<DD>
|
<DD>
|
||||||
@ -223,7 +227,7 @@ Enables authentication of remote clients, using the given secrets file.
|
|||||||
<DT><B>-K, --server-tls </B><I><pem-file></I>
|
<DT><B>-K, --server-tls </B><I><pem-file></I>
|
||||||
|
|
||||||
<DD>
|
<DD>
|
||||||
Enables tls/ssl layer for smtp server using the given openssl certificate file (if openssl built in).
|
Enables negotiated tls/ssl for smtp server using the given openssl certificate file (which must be in the directory trusted by openssl).
|
||||||
<DT><B>-M, --size </B><I><bytes></I>
|
<DT><B>-M, --size </B><I><bytes></I>
|
||||||
|
|
||||||
<DD>
|
<DD>
|
||||||
@ -236,6 +240,10 @@ Specifies the spool directory (default is <I>/var/spool/emailrelay</I>).
|
|||||||
|
|
||||||
<DD>
|
<DD>
|
||||||
Forces syslog output if logging is enabled (overrides <I>--no-syslog</I>).
|
Forces syslog output if logging is enabled (overrides <I>--no-syslog</I>).
|
||||||
|
<DT><B>-0, --tls-config </B><I><flags></I>
|
||||||
|
|
||||||
|
<DD>
|
||||||
|
Sets tls configuration flags (eg. 2 for SSLv2 support).
|
||||||
<DT><B>-u, --user </B><I><username></I>
|
<DT><B>-u, --user </B><I><username></I>
|
||||||
|
|
||||||
<DD>
|
<DD>
|
||||||
@ -265,6 +273,9 @@ GNU style...
|
|||||||
/usr/local/etc/emailrelay.conf.template
|
/usr/local/etc/emailrelay.conf.template
|
||||||
<BR>
|
<BR>
|
||||||
|
|
||||||
|
/usr/local/etc/pam.d/emailrelay
|
||||||
|
<BR>
|
||||||
|
|
||||||
/usr/local/libexec/emailrelay/emailrelay-filter-copy
|
/usr/local/libexec/emailrelay/emailrelay-filter-copy
|
||||||
<BR>
|
<BR>
|
||||||
|
|
||||||
@ -310,10 +321,10 @@ FHS style...
|
|||||||
/etc/emailrelay.conf
|
/etc/emailrelay.conf
|
||||||
<BR>
|
<BR>
|
||||||
|
|
||||||
/etc/emailrelay.conf.template
|
/etc/init.d/emailrelay
|
||||||
<BR>
|
<BR>
|
||||||
|
|
||||||
/etc/init.d/emailrelay
|
/etc/pam.d/emailrelay
|
||||||
<BR>
|
<BR>
|
||||||
|
|
||||||
/usr/lib/emailrelay/emailrelay-filter-copy
|
/usr/lib/emailrelay/emailrelay-filter-copy
|
||||||
@ -386,4 +397,4 @@ This document was created by
|
|||||||
using the manual pages.<BR>
|
using the manual pages.<BR>
|
||||||
</BODY>
|
</BODY>
|
||||||
</HTML>
|
</HTML>
|
||||||
<!-- Copyright (C) 2001-2008 Graeme Walker <graeme_walker@users.sourceforge.net>. All rights reserved. -->
|
<!-- Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>. All rights reserved. -->
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
.\" Copyright (C) 2001-2008 Graeme Walker <graeme_walker@users.sourceforge.net>
|
.\" Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>
|
||||||
.\"
|
.\"
|
||||||
.\" This program is free software: you can redistribute it and/or modify
|
.\" This program is free software: you can redistribute it and/or modify
|
||||||
.\" it under the terms of the GNU General Public License as published by
|
.\" it under the terms of the GNU General Public License as published by
|
||||||
.\" the Free Software Foundation, either version 3 of the License, or
|
.\" the Free Software Foundation, either version 3 of the License, or
|
||||||
.\" (at your option) any later version.
|
.\" (at your option) any later version.
|
||||||
.\"
|
.\"
|
||||||
.\" This program is distributed in the hope that it will be useful,
|
.\" This program is distributed in the hope that it will be useful,
|
||||||
@ -22,8 +22,8 @@ emailrelay-passwd \- a password encoding utility for E-MailRelay
|
|||||||
is a utility which reads a single plaintext password from the standard
|
is a utility which reads a single plaintext password from the standard
|
||||||
input, and writes out an encoded form onto the standard
|
input, and writes out an encoded form onto the standard
|
||||||
output. The encoded form is suitable for pasting into a CRAM-MD5
|
output. The encoded form is suitable for pasting into a CRAM-MD5
|
||||||
line in an
|
line in an
|
||||||
.B emailrelay
|
.B emailrelay
|
||||||
secrets file.
|
secrets file.
|
||||||
.LP
|
.LP
|
||||||
A secrets file containing two CRAM-MD5 passwords might look like
|
A secrets file containing two CRAM-MD5 passwords might look like
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
.\" Copyright (C) 2001-2008 Graeme Walker <graeme_walker@users.sourceforge.net>
|
.\" Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>
|
||||||
.\"
|
.\"
|
||||||
.\" This program is free software: you can redistribute it and/or modify
|
.\" This program is free software: you can redistribute it and/or modify
|
||||||
.\" it under the terms of the GNU General Public License as published by
|
.\" it under the terms of the GNU General Public License as published by
|
||||||
.\" the Free Software Foundation, either version 3 of the License, or
|
.\" the Free Software Foundation, either version 3 of the License, or
|
||||||
.\" (at your option) any later version.
|
.\" (at your option) any later version.
|
||||||
.\"
|
.\"
|
||||||
.\" This program is distributed in the hope that it will be useful,
|
.\" This program is distributed in the hope that it will be useful,
|
||||||
@ -20,9 +20,9 @@ emailrelay-poke \- forces an E-MailRelay server to deliver spooled mail
|
|||||||
[ admin-port [ admin-command ] ]
|
[ admin-port [ admin-command ] ]
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
.I emailrelay-poke
|
.I emailrelay-poke
|
||||||
is a lightweight utility which connects to the
|
is a lightweight utility which connects to the
|
||||||
.I emailrelay
|
.I emailrelay
|
||||||
administration interface and executes the
|
administration interface and executes the
|
||||||
.B flush
|
.B flush
|
||||||
command.
|
command.
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
.\" Copyright (C) 2001-2008 Graeme Walker <graeme_walker@users.sourceforge.net>
|
.\" Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>
|
||||||
.\"
|
.\"
|
||||||
.\" This program is free software: you can redistribute it and/or modify
|
.\" This program is free software: you can redistribute it and/or modify
|
||||||
.\" it under the terms of the GNU General Public License as published by
|
.\" it under the terms of the GNU General Public License as published by
|
||||||
.\" the Free Software Foundation, either version 3 of the License, or
|
.\" the Free Software Foundation, either version 3 of the License, or
|
||||||
.\" (at your option) any later version.
|
.\" (at your option) any later version.
|
||||||
.\"
|
.\"
|
||||||
.\" This program is distributed in the hope that it will be useful,
|
.\" This program is distributed in the hope that it will be useful,
|
||||||
@ -17,21 +17,21 @@
|
|||||||
emailrelay-submit \- a submission utility for E-MailRelay
|
emailrelay-submit \- a submission utility for E-MailRelay
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
.B emailrelay-submit
|
.B emailrelay-submit
|
||||||
[--help] [--verbose] [--spool-dir
|
[--help] [--verbose] [--spool-dir
|
||||||
.IR spool-directory ]
|
.IR spool-directory ]
|
||||||
[--from
|
[--from
|
||||||
.IR from-address ]
|
.IR from-address ]
|
||||||
.I to-address
|
.I to-address
|
||||||
.RI [ to-address \ ...]
|
.RI [ to-address \ ...]
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
.I emailrelay-submit
|
.I emailrelay-submit
|
||||||
is a utility which reads an RFC822 e-mail message from the standard
|
is a utility which reads an RFC822 e-mail message from the standard
|
||||||
input, with SMTP envelope recipient addresses passed on the
|
input, with SMTP envelope recipient addresses passed on the
|
||||||
command-line, and writes it into the
|
command-line, and writes it into the
|
||||||
.B E-MailRelay
|
.B E-MailRelay
|
||||||
spool directory.
|
spool directory.
|
||||||
.LP
|
.LP
|
||||||
The verbose switch causes the path of the new content file
|
The verbose option causes the path of the new content file
|
||||||
to be printed.
|
to be printed.
|
||||||
.SH SEE ALSO
|
.SH SEE ALSO
|
||||||
.BR emailrelay (1),
|
.BR emailrelay (1),
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
.\" Copyright (C) 2001-2008 Graeme Walker <graeme_walker@users.sourceforge.net>
|
.\" Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>
|
||||||
.\"
|
.\"
|
||||||
.\" This program is free software: you can redistribute it and/or modify
|
.\" This program is free software: you can redistribute it and/or modify
|
||||||
.\" it under the terms of the GNU General Public License as published by
|
.\" it under the terms of the GNU General Public License as published by
|
||||||
.\" the Free Software Foundation, either version 3 of the License, or
|
.\" the Free Software Foundation, either version 3 of the License, or
|
||||||
.\" (at your option) any later version.
|
.\" (at your option) any later version.
|
||||||
.\"
|
.\"
|
||||||
.\" This program is distributed in the hope that it will be useful,
|
.\" This program is distributed in the hope that it will be useful,
|
||||||
@ -19,34 +19,34 @@ emailrelay \- e-mail transfer agent and proxy
|
|||||||
.B emailrelay
|
.B emailrelay
|
||||||
[OPTIONS]
|
[OPTIONS]
|
||||||
.LP
|
.LP
|
||||||
.B emailrelay
|
.B emailrelay
|
||||||
--as-server
|
--as-server
|
||||||
.LP
|
.LP
|
||||||
.B emailrelay
|
.B emailrelay
|
||||||
--as-client
|
--as-client
|
||||||
.I server-address
|
.I server-address
|
||||||
.LP
|
.LP
|
||||||
.B emailrelay
|
.B emailrelay
|
||||||
--as-proxy
|
--as-proxy
|
||||||
.I server-address
|
.I server-address
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
.I emailrelay
|
.I emailrelay
|
||||||
is a simple SMTP proxy and store-and-forward message transfer agent.
|
is a simple SMTP proxy and store-and-forward message transfer agent.
|
||||||
It does store-and-forward mail relay to a fixed next-hop server, without
|
It does store-and-forward mail relay to a fixed next-hop server, without
|
||||||
any routing.
|
any routing.
|
||||||
.LP
|
.LP
|
||||||
It runs in two main modes: a storage daemon
|
It runs in two main modes: a storage daemon
|
||||||
.RI ( --as-server )
|
.RI ( --as-server )
|
||||||
and a forwarding
|
and a forwarding
|
||||||
agent
|
agent
|
||||||
.RI ( --as-client ).
|
.RI ( --as-client ).
|
||||||
The storage daemon is an SMTP server which stores e-mail
|
The storage daemon is an SMTP server which stores e-mail
|
||||||
messages in a local spool directory. The forwarding agent acts as an
|
messages in a local spool directory. The forwarding agent acts as an
|
||||||
SMTP client sending the spooled e-mail messages on to the next
|
SMTP client sending the spooled e-mail messages on to the next
|
||||||
SMTP server in the chain.
|
SMTP server in the chain.
|
||||||
.LP
|
.LP
|
||||||
It can also run in a third mode, as a proxy server
|
It can also run in a third mode, as a proxy server
|
||||||
.RI ( --as-proxy ).
|
.RI ( --as-proxy ).
|
||||||
In this mode all messages are forwarded immediately to the next-hop
|
In this mode all messages are forwarded immediately to the next-hop
|
||||||
server. Messages are only fully accepted from the sender once they
|
server. Messages are only fully accepted from the sender once they
|
||||||
have been successfully delivered to the next-hop server.
|
have been successfully delivered to the next-hop server.
|
||||||
@ -62,13 +62,13 @@ Enables the terminate command on the admin interface.
|
|||||||
Disables the smtp vrfy command and sends less verbose smtp responses.
|
Disables the smtp vrfy command and sends less verbose smtp responses.
|
||||||
.TP
|
.TP
|
||||||
.B \-q, --as-client \fI<host:port>\fR
|
.B \-q, --as-client \fI<host:port>\fR
|
||||||
Runs as a client, forwarding spooled mail to <host>: equivalent to \fI--log\fR \fI--no-syslog\fR \fI--no-daemon\fR \fI--dont-serve\fR \fI--forward\fR \fI--forward-to\fR.
|
Runs as a client, forwarding all spooled mail to <host>: equivalent to \fI--log\fR \fI--no-syslog\fR \fI--no-daemon\fR \fI--dont-serve\fR \fI--forward\fR \fI--forward-to\fR.
|
||||||
.TP
|
.TP
|
||||||
.B \-y, --as-proxy \fI<host:port>\fR
|
.B \-y, --as-proxy \fI<host:port>\fR
|
||||||
Runs as a proxy: equivalent to \fI--log\fR \fI--close-stderr\fR \fI--poll\fR=0 \fI--forward-to\fR.
|
Runs as a proxy server, forwarding each mail immediately to <host>: equivalent to \fI--log\fR \fI--close-stderr\fR \fI--poll\fR=0 \fI--forward-to\fR.
|
||||||
.TP
|
.TP
|
||||||
.B \-d, --as-server
|
.B \-d, --as-server
|
||||||
Runs as a server: equivalent to \fI--log\fR \fI--close-stderr\fR.
|
Runs as a server, storing mail in the spool directory: equivalent to \fI--log\fR \fI--close-stderr\fR.
|
||||||
.TP
|
.TP
|
||||||
.B \-C, --client-auth \fI<file>\fR
|
.B \-C, --client-auth \fI<file>\fR
|
||||||
Enables smtp authentication with the remote server, using the given secrets file.
|
Enables smtp authentication with the remote server, using the given secrets file.
|
||||||
@ -77,7 +77,10 @@ Enables smtp authentication with the remote server, using the given secrets file
|
|||||||
Specifies an external program to process messages when they are forwarded.
|
Specifies an external program to process messages when they are forwarded.
|
||||||
.TP
|
.TP
|
||||||
.B \-j, --client-tls
|
.B \-j, --client-tls
|
||||||
Enables tls/ssl layer for smtp client (if openssl built in).
|
Enables negotiated tls/ssl for smtp client (if openssl built in).
|
||||||
|
.TP
|
||||||
|
.B \-b, --client-tls-connection
|
||||||
|
Enables smtp over tls/ssl for smtp client (if openssl built in).
|
||||||
.TP
|
.TP
|
||||||
.B \-e, --close-stderr
|
.B \-e, --close-stderr
|
||||||
Closes the standard error stream soon after start-up.
|
Closes the standard error stream soon after start-up.
|
||||||
@ -86,7 +89,7 @@ Closes the standard error stream soon after start-up.
|
|||||||
Sets the timeout (in seconds) when connecting to a remote server (default is 40).
|
Sets the timeout (in seconds) when connecting to a remote server (default is 40).
|
||||||
.TP
|
.TP
|
||||||
.B \-g, --debug
|
.B \-g, --debug
|
||||||
Generates debug-level logging if compiled-in.
|
Generates debug-level logging if built in.
|
||||||
.TP
|
.TP
|
||||||
.B \-D, --domain \fI<fqdn>\fR
|
.B \-D, --domain \fI<fqdn>\fR
|
||||||
Sets an override for the host's fully qualified domain name.
|
Sets an override for the host's fully qualified domain name.
|
||||||
@ -112,11 +115,11 @@ Displays help text and exits.
|
|||||||
.B \-m, --immediate
|
.B \-m, --immediate
|
||||||
Enables immediate forwarding of messages as soon as they are received (requires \fI--forward-to\fR).
|
Enables immediate forwarding of messages as soon as they are received (requires \fI--forward-to\fR).
|
||||||
.TP
|
.TP
|
||||||
.B \-I, --interface \fI<ip-address>\fR
|
.B \-I, --interface \fI<ip-list>\fR
|
||||||
Defines the listening interface for incoming connections.
|
Defines the listening interface(s) for incoming connections (comma-separated list with optional smtp=,pop=,admin= qualifiers).
|
||||||
.TP
|
.TP
|
||||||
.B \-l, --log
|
.B \-l, --log
|
||||||
Writes log information on standard error and syslog.
|
Writes log information on standard error and syslog (but see \fI--close-stderr\fR and \fI--no-syslog\fR).
|
||||||
.TP
|
.TP
|
||||||
.B \-L, --log-time
|
.B \-L, --log-time
|
||||||
Adds a timestamp to the logging output.
|
Adds a timestamp to the logging output.
|
||||||
@ -134,7 +137,7 @@ Disables syslog output (always overridden by \fI--syslog\fR).
|
|||||||
Defines a file for storing the daemon process-id.
|
Defines a file for storing the daemon process-id.
|
||||||
.TP
|
.TP
|
||||||
.B \-O, --poll \fI<period>\fR
|
.B \-O, --poll \fI<period>\fR
|
||||||
Enables polling of the spool directory for messages to be forwarded with the specified period (requires \fI--forward-to\fR).
|
Enables polling of the spool directory for messages to be forwarded with the specified period (zero means on client disconnection) (requires \fI--forward-to\fR).
|
||||||
.TP
|
.TP
|
||||||
.B \-B, --pop
|
.B \-B, --pop
|
||||||
Enables the pop server.
|
Enables the pop server.
|
||||||
@ -143,19 +146,19 @@ Enables the pop server.
|
|||||||
Defines the pop server secrets file (default is \fI/etc/emailrelay.auth\fR).
|
Defines the pop server secrets file (default is \fI/etc/emailrelay.auth\fR).
|
||||||
.TP
|
.TP
|
||||||
.B \-J, --pop-by-name
|
.B \-J, --pop-by-name
|
||||||
Modifies the pop spool directory according to the user name (requires \fI--pop\fR).
|
Modifies the pop spool directory according to the pop user name (requires \fI--pop\fR).
|
||||||
.TP
|
.TP
|
||||||
.B \-G, --pop-no-delete
|
.B \-G, --pop-no-delete
|
||||||
Disables message deletion via pop (requires \fI--pop\fR).
|
Disables message deletion via pop (requires \fI--pop\fR).
|
||||||
.TP
|
.TP
|
||||||
.B \-E, --pop-port \fI<port>\fR
|
.B \-E, --pop-port \fI<port>\fR
|
||||||
Specifies the pop listening port number (requires \fI--pop\fR).
|
Specifies the pop listening port number (default is 110) (requires \fI--pop\fR).
|
||||||
.TP
|
.TP
|
||||||
.B \-p, --port \fI<port>\fR
|
.B \-p, --port \fI<port>\fR
|
||||||
Specifies the smtp listening port number.
|
Specifies the smtp listening port number (default is 25).
|
||||||
.TP
|
.TP
|
||||||
.B \-w, --prompt-timeout \fI<time>\fR
|
.B \-w, --prompt-timeout \fI<time>\fR
|
||||||
Sets the timeout (in seconds) for getting an initial prompt from the server.
|
Sets the timeout (in seconds) for getting an initial prompt from the server (default is 20).
|
||||||
.TP
|
.TP
|
||||||
.B \-r, --remote-clients
|
.B \-r, --remote-clients
|
||||||
Allows remote clients to connect.
|
Allows remote clients to connect.
|
||||||
@ -167,7 +170,7 @@ Sets the response timeout (in seconds) when talking to a remote server (default
|
|||||||
Enables authentication of remote clients, using the given secrets file.
|
Enables authentication of remote clients, using the given secrets file.
|
||||||
.TP
|
.TP
|
||||||
.B \-K, --server-tls \fI<pem-file>\fR
|
.B \-K, --server-tls \fI<pem-file>\fR
|
||||||
Enables tls/ssl layer for smtp server using the given openssl certificate file (if openssl built in).
|
Enables negotiated tls/ssl for smtp server using the given openssl certificate file (which must be in the directory trusted by openssl).
|
||||||
.TP
|
.TP
|
||||||
.B \-M, --size \fI<bytes>\fR
|
.B \-M, --size \fI<bytes>\fR
|
||||||
Limits the size of submitted messages.
|
Limits the size of submitted messages.
|
||||||
@ -178,6 +181,9 @@ Specifies the spool directory (default is \fI/var/spool/emailrelay\fR).
|
|||||||
.B \-k, --syslog
|
.B \-k, --syslog
|
||||||
Forces syslog output if logging is enabled (overrides \fI--no-syslog\fR).
|
Forces syslog output if logging is enabled (overrides \fI--no-syslog\fR).
|
||||||
.TP
|
.TP
|
||||||
|
.B \-0, --tls-config \fI<flags>\fR
|
||||||
|
Sets tls configuration flags (eg. 2 for SSLv2 support).
|
||||||
|
.TP
|
||||||
.B \-u, --user \fI<username>\fR
|
.B \-u, --user \fI<username>\fR
|
||||||
Names the effective user to switch to if started as root (default is \fIdaemon\fR).
|
Names the effective user to switch to if started as root (default is \fIdaemon\fR).
|
||||||
.TP
|
.TP
|
||||||
@ -196,6 +202,8 @@ GNU style...
|
|||||||
.br
|
.br
|
||||||
/usr/local/etc/emailrelay.conf.template
|
/usr/local/etc/emailrelay.conf.template
|
||||||
.br
|
.br
|
||||||
|
/usr/local/etc/pam.d/emailrelay
|
||||||
|
.br
|
||||||
/usr/local/libexec/emailrelay/emailrelay-filter-copy
|
/usr/local/libexec/emailrelay/emailrelay-filter-copy
|
||||||
.br
|
.br
|
||||||
/usr/local/libexec/emailrelay/emailrelay-poke
|
/usr/local/libexec/emailrelay/emailrelay-poke
|
||||||
@ -226,10 +234,10 @@ FHS style...
|
|||||||
.br
|
.br
|
||||||
/etc/emailrelay.conf
|
/etc/emailrelay.conf
|
||||||
.br
|
.br
|
||||||
/etc/emailrelay.conf.template
|
|
||||||
.br
|
|
||||||
/etc/init.d/emailrelay
|
/etc/init.d/emailrelay
|
||||||
.br
|
.br
|
||||||
|
/etc/pam.d/emailrelay
|
||||||
|
.br
|
||||||
/usr/lib/emailrelay/emailrelay-filter-copy
|
/usr/lib/emailrelay/emailrelay-filter-copy
|
||||||
.br
|
.br
|
||||||
/usr/lib/emailrelay/emailrelay-poke
|
/usr/lib/emailrelay/emailrelay-poke
|
||||||
|
@ -1,5 +1,12 @@
|
|||||||
|
/*
|
||||||
|
Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>
|
||||||
|
*/
|
||||||
|
|
||||||
body
|
/*
|
||||||
|
emailrelay.css
|
||||||
|
*/
|
||||||
|
|
||||||
|
body
|
||||||
{
|
{
|
||||||
font-family: verdana, arial, helvetica, sans-serif ;
|
font-family: verdana, arial, helvetica, sans-serif ;
|
||||||
|
|
||||||
@ -26,7 +33,7 @@ h1
|
|||||||
color: #09c ;
|
color: #09c ;
|
||||||
}
|
}
|
||||||
|
|
||||||
div.Header h1
|
div.Header h1
|
||||||
{
|
{
|
||||||
margin: 0px ;
|
margin: 0px ;
|
||||||
}
|
}
|
||||||
@ -93,7 +100,7 @@ h2
|
|||||||
color: #09c ;
|
color: #09c ;
|
||||||
}
|
}
|
||||||
|
|
||||||
p
|
p
|
||||||
{
|
{
|
||||||
font-family: verdana, arial, helvetica, sans-serif ;
|
font-family: verdana, arial, helvetica, sans-serif ;
|
||||||
text-align: justify ;
|
text-align: justify ;
|
||||||
@ -136,7 +143,7 @@ a.a-toc
|
|||||||
margin: 0px ;
|
margin: 0px ;
|
||||||
}
|
}
|
||||||
|
|
||||||
a.a-toc:hover
|
a.a-toc:hover
|
||||||
{
|
{
|
||||||
color: #09c ;
|
color: #09c ;
|
||||||
background-color: #ccc ;
|
background-color: #ccc ;
|
||||||
@ -149,7 +156,7 @@ a.a-toc-expander
|
|||||||
font-size: smaller ;
|
font-size: smaller ;
|
||||||
}
|
}
|
||||||
|
|
||||||
a.a-toc-expander:hover
|
a.a-toc-expander:hover
|
||||||
{
|
{
|
||||||
color: #09c ;
|
color: #09c ;
|
||||||
background-color: #ccc ;
|
background-color: #ccc ;
|
||||||
@ -166,17 +173,17 @@ a.a-href
|
|||||||
font-weight: bold ;
|
font-weight: bold ;
|
||||||
}
|
}
|
||||||
|
|
||||||
a.a-href:link
|
a.a-href:link
|
||||||
{
|
{
|
||||||
color: #09c ;
|
color: #09c ;
|
||||||
}
|
}
|
||||||
|
|
||||||
a.a-href:visited
|
a.a-href:visited
|
||||||
{
|
{
|
||||||
color: #07a ;
|
color: #07a ;
|
||||||
}
|
}
|
||||||
|
|
||||||
a.a-href:hover
|
a.a-href:hover
|
||||||
{
|
{
|
||||||
color: #09c ;
|
color: #09c ;
|
||||||
background-color: #ddd ;
|
background-color: #ddd ;
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 62 KiB |
Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 7.3 KiB |
@ -21,4 +21,4 @@
|
|||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
<!-- Copyright (C) 2001-2008 Graeme Walker <graeme_walker@users.sourceforge.net>. All rights reserved. -->
|
<!-- Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>. All rights reserved. -->
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
#
|
#
|
||||||
## Copyright (C) 2001-2008 Graeme Walker <graeme_walker@users.sourceforge.net>
|
## Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>
|
||||||
##
|
##
|
||||||
## This program is free software: you can redistribute it and/or modify
|
## This program is free software: you can redistribute it and/or modify
|
||||||
## it under the terms of the GNU General Public License as published by
|
## it under the terms of the GNU General Public License as published by
|
||||||
## the Free Software Foundation, either version 3 of the License, or
|
## the Free Software Foundation, either version 3 of the License, or
|
||||||
## (at your option) any later version.
|
## (at your option) any later version.
|
||||||
##
|
##
|
||||||
## This program is distributed in the hope that it will be useful,
|
## This program is distributed in the hope that it will be useful,
|
||||||
@ -14,13 +14,23 @@
|
|||||||
## You should have received a copy of the GNU General Public License
|
## You should have received a copy of the GNU General Public License
|
||||||
## along with this program. If not, see <http://www.gnu.org/licenses/>.
|
## along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
noinst_LIBRARIES = libfragments.a
|
|
||||||
INCLUDES = -I$(top_srcdir)/lib/$(COMPILER_VERSION)
|
.SUFFIXES: .css_ .css .png_ .png
|
||||||
INCLUDES += -I$(top_srcdir)/src/glib
|
|
||||||
INCLUDES += -I$(top_srcdir)/src/gssl
|
.css_.css:
|
||||||
INCLUDES += -I$(top_srcdir)/src/gnet
|
cmd /c copy $*.css_ $*.css
|
||||||
libfragments_a_SOURCES = empty.cpp
|
|
||||||
libfragments_a_LIBADD = @FRAGMENTS_LIST@
|
.png_.png:
|
||||||
libfragments_a_DEPENDENCIES = @FRAGMENTS_LIST@
|
cmd /c copy $*.png_ $*.png
|
||||||
distclean-local:
|
|
||||||
$(RM) g*.cpp
|
all: emailrelay.css emailrelay-doxygen.css gsmtp-classes.png gnet-classes.png sequence-3.png gnet-client.png gsmtp-serverprotocol.png auth.png
|
||||||
|
|
||||||
|
#emailrelay.css: emailrelay.css_
|
||||||
|
#emailrelay-doxygen.css: emailrelay-doxygen.css_
|
||||||
|
#gsmtp-classes.png: gsmtp-classes.png_
|
||||||
|
#gnet-classes.png: gnet-classes.png_
|
||||||
|
#sequence-3.png: sequence-3.png_
|
||||||
|
#gnet-client.png: gnet-client.png_
|
||||||
|
#gsmtp-serverprotocol.png: gsmtp-serverprotocol.png_
|
||||||
|
#auth.png: auth.png_
|
||||||
|
|
@ -5,9 +5,9 @@ Command line usage
|
|||||||
------------------
|
------------------
|
||||||
The "emailrelay" program supports the following command-line usage:
|
The "emailrelay" program supports the following command-line usage:
|
||||||
|
|
||||||
emailrelay [<switch> [<switch> ...]]
|
emailrelay [<option> [<option> ...]]
|
||||||
|
|
||||||
where <switch> is:
|
where <option> is:
|
||||||
# --admin (-a)
|
# --admin (-a)
|
||||||
Enables the administration interface and specifies its listening port number.
|
Enables the administration interface and specifies its listening port number.
|
||||||
|
|
||||||
@ -18,13 +18,13 @@ where <switch> is:
|
|||||||
Disables the smtp vrfy command and sends less verbose smtp responses.
|
Disables the smtp vrfy command and sends less verbose smtp responses.
|
||||||
|
|
||||||
# --as-client (-q)
|
# --as-client (-q)
|
||||||
Runs as a client, forwarding spooled mail to <host>: equivalent to "--log --no-syslog --no-daemon --dont-serve --forward --forward-to".
|
Runs as a client, forwarding all spooled mail to <host>: equivalent to "--log --no-syslog --no-daemon --dont-serve --forward --forward-to".
|
||||||
|
|
||||||
# --as-proxy (-y)
|
# --as-proxy (-y)
|
||||||
Runs as a proxy: equivalent to "--log --close-stderr --poll=0 --forward-to".
|
Runs as a proxy server, forwarding each mail immediately to <host>: equivalent to "--log --close-stderr --poll=0 --forward-to".
|
||||||
|
|
||||||
# --as-server (-d)
|
# --as-server (-d)
|
||||||
Runs as a server: equivalent to "--log --close-stderr".
|
Runs as a server, storing mail in the spool directory: equivalent to "--log --close-stderr".
|
||||||
|
|
||||||
# --client-auth (-C)
|
# --client-auth (-C)
|
||||||
Enables smtp authentication with the remote server, using the given secrets file.
|
Enables smtp authentication with the remote server, using the given secrets file.
|
||||||
@ -33,7 +33,10 @@ where <switch> is:
|
|||||||
Specifies an external program to process messages when they are forwarded.
|
Specifies an external program to process messages when they are forwarded.
|
||||||
|
|
||||||
# --client-tls (-j)
|
# --client-tls (-j)
|
||||||
Enables tls/ssl layer for smtp client (if openssl built in).
|
Enables negotiated tls/ssl for smtp client (if openssl built in).
|
||||||
|
|
||||||
|
# --client-tls-connection (-b)
|
||||||
|
Enables smtp over tls/ssl for smtp client (if openssl built in).
|
||||||
|
|
||||||
# --close-stderr (-e)
|
# --close-stderr (-e)
|
||||||
Closes the standard error stream soon after start-up.
|
Closes the standard error stream soon after start-up.
|
||||||
@ -42,7 +45,7 @@ where <switch> is:
|
|||||||
Sets the timeout (in seconds) when connecting to a remote server (default is 40).
|
Sets the timeout (in seconds) when connecting to a remote server (default is 40).
|
||||||
|
|
||||||
# --debug (-g)
|
# --debug (-g)
|
||||||
Generates debug-level logging if compiled-in.
|
Generates debug-level logging if built in.
|
||||||
|
|
||||||
# --domain (-D)
|
# --domain (-D)
|
||||||
Sets an override for the host's fully qualified domain name.
|
Sets an override for the host's fully qualified domain name.
|
||||||
@ -69,10 +72,10 @@ where <switch> is:
|
|||||||
Enables immediate forwarding of messages as soon as they are received (requires --forward-to).
|
Enables immediate forwarding of messages as soon as they are received (requires --forward-to).
|
||||||
|
|
||||||
# --interface (-I)
|
# --interface (-I)
|
||||||
Defines the listening interface for incoming connections.
|
Defines the listening interface(s) for incoming connections (comma-separated list with optional smtp=,pop=,admin= qualifiers).
|
||||||
|
|
||||||
# --log (-l)
|
# --log (-l)
|
||||||
Writes log information on standard error and syslog.
|
Writes log information on standard error and syslog (but see --close-stderr and --no-syslog).
|
||||||
|
|
||||||
# --log-time (-L)
|
# --log-time (-L)
|
||||||
Adds a timestamp to the logging output.
|
Adds a timestamp to the logging output.
|
||||||
@ -90,7 +93,7 @@ where <switch> is:
|
|||||||
Defines a file for storing the daemon process-id.
|
Defines a file for storing the daemon process-id.
|
||||||
|
|
||||||
# --poll (-O)
|
# --poll (-O)
|
||||||
Enables polling of the spool directory for messages to be forwarded with the specified period (requires --forward-to).
|
Enables polling of the spool directory for messages to be forwarded with the specified period (zero means on client disconnection) (requires --forward-to).
|
||||||
|
|
||||||
# --pop (-B)
|
# --pop (-B)
|
||||||
Enables the pop server.
|
Enables the pop server.
|
||||||
@ -99,19 +102,19 @@ where <switch> is:
|
|||||||
Defines the pop server secrets file (default is "/etc/emailrelay.auth").
|
Defines the pop server secrets file (default is "/etc/emailrelay.auth").
|
||||||
|
|
||||||
# --pop-by-name (-J)
|
# --pop-by-name (-J)
|
||||||
Modifies the pop spool directory according to the user name (requires --pop).
|
Modifies the pop spool directory according to the pop user name (requires --pop).
|
||||||
|
|
||||||
# --pop-no-delete (-G)
|
# --pop-no-delete (-G)
|
||||||
Disables message deletion via pop (requires --pop).
|
Disables message deletion via pop (requires --pop).
|
||||||
|
|
||||||
# --pop-port (-E)
|
# --pop-port (-E)
|
||||||
Specifies the pop listening port number (requires --pop).
|
Specifies the pop listening port number (default is 110) (requires --pop).
|
||||||
|
|
||||||
# --port (-p)
|
# --port (-p)
|
||||||
Specifies the smtp listening port number.
|
Specifies the smtp listening port number (default is 25).
|
||||||
|
|
||||||
# --prompt-timeout (-w)
|
# --prompt-timeout (-w)
|
||||||
Sets the timeout (in seconds) for getting an initial prompt from the server.
|
Sets the timeout (in seconds) for getting an initial prompt from the server (default is 20).
|
||||||
|
|
||||||
# --remote-clients (-r)
|
# --remote-clients (-r)
|
||||||
Allows remote clients to connect.
|
Allows remote clients to connect.
|
||||||
@ -123,7 +126,7 @@ where <switch> is:
|
|||||||
Enables authentication of remote clients, using the given secrets file.
|
Enables authentication of remote clients, using the given secrets file.
|
||||||
|
|
||||||
# --server-tls (-K)
|
# --server-tls (-K)
|
||||||
Enables tls/ssl layer for smtp server using the given openssl certificate file (if openssl built in).
|
Enables negotiated tls/ssl for smtp server using the given openssl certificate file (which must be in the directory trusted by openssl).
|
||||||
|
|
||||||
# --size (-M)
|
# --size (-M)
|
||||||
Limits the size of submitted messages.
|
Limits the size of submitted messages.
|
||||||
@ -134,6 +137,9 @@ where <switch> is:
|
|||||||
# --syslog (-k)
|
# --syslog (-k)
|
||||||
Forces syslog output if logging is enabled (overrides --no-syslog).
|
Forces syslog output if logging is enabled (overrides --no-syslog).
|
||||||
|
|
||||||
|
# --tls-config (-0)
|
||||||
|
Sets tls configuration flags (eg. 2 for SSLv2 support).
|
||||||
|
|
||||||
# --user (-u)
|
# --user (-u)
|
||||||
Names the effective user to switch to if started as root (default is "daemon").
|
Names the effective user to switch to if started as root (default is "daemon").
|
||||||
|
|
||||||
@ -157,37 +163,59 @@ file contains parameters relevant to the SMTP dialogue, and the content file
|
|||||||
contains the RFC822 headers and body text.
|
contains the RFC822 headers and body text.
|
||||||
|
|
||||||
The filenames used in the message store have a prefix of "emailrelay", followed
|
The filenames used in the message store have a prefix of "emailrelay", followed
|
||||||
by a process-id, timestamp and sequence number, followed by "envelope" or
|
by a process-id, timestamp and sequence number, and then "envelope" or
|
||||||
"content". The envelope files then have an additional suffix to implement a
|
"content". The envelope files then have an additional suffix to implement a
|
||||||
simple locking scheme.
|
simple locking scheme.
|
||||||
|
|
||||||
The envelope file suffixes are:
|
The envelope file suffixes are:
|
||||||
|
|
||||||
* ".new" -- while the envelope is first being written
|
* ".new" -- while the envelope is first being written
|
||||||
* <none> -- while the message is spooled
|
* <none> -- while the message is spooled
|
||||||
* ".busy" -- while the message is being forwarded
|
* ".busy" -- while the message is being forwarded
|
||||||
* ".bad" -- if the message cannot be forwarded
|
* ".bad" -- if the message cannot be forwarded
|
||||||
* ".local" -- for copies of the envelope file for delivery to local recipients
|
* ".local" -- for copies of the envelope file for delivery to local recipients
|
||||||
|
|
||||||
Copies of the content file for delivery to local recipients will also have
|
If a message cannot be forwarded the envelope file is given a ".bad" suffix,
|
||||||
a "local" suffix.
|
|
||||||
|
|
||||||
If a message cannot be forwarded the envelope file is given a "bad" suffix,
|
|
||||||
and the failure reason is written into the file.
|
and the failure reason is written into the file.
|
||||||
|
|
||||||
|
Forwarding
|
||||||
|
----------
|
||||||
|
Spooled messages can be forwarded at various times, depending on the
|
||||||
|
command-line options:
|
||||||
|
|
||||||
|
* when E-MailRelay first starts up ("--as-client" or "--forward")
|
||||||
|
* as each message is submitted, just before receipt is acknowledged ("--immediate")
|
||||||
|
* as soon as the submitting client connection disconnects ("--poll=0")
|
||||||
|
* periodically ("--poll=<seconds>")
|
||||||
|
* on demand using the administration interface's "flush" command ("--admin=<port>")
|
||||||
|
|
||||||
|
These modes of operation can be mixed, although more than one "--poll" option is
|
||||||
|
not allowed.
|
||||||
|
|
||||||
|
When using "--as-client" the spooled messages begin to be forwarded as soon as
|
||||||
|
the program starts up, and the program terminates once they have all been sent.
|
||||||
|
|
||||||
|
A pending "--poll" timer can be forced to expire immediately if a "--filter"
|
||||||
|
script exits with a special value of 103, as described below.
|
||||||
|
|
||||||
|
All receipent addresses must be accepted by the remote server when E-MailRelay
|
||||||
|
forwards a message. If any one recipient is rejected then the message will be
|
||||||
|
left in the spool directory with a ".bad" suffix on the envelope file.
|
||||||
|
|
||||||
Mail processing
|
Mail processing
|
||||||
---------------
|
---------------
|
||||||
The "--filter" command-line switch allows you to specify a mail pre-processor
|
The "--filter" command-line option allows you to specify a mail pre-processor
|
||||||
program which operates on mail messages as they pass through the E-MailRelay
|
program which operates on mail messages as they pass through the E-MailRelay
|
||||||
system. The mail pre-processor program is run as soon as the mail message has
|
system. The mail pre-processor program is run as soon as the mail message has
|
||||||
been stored in the spool directory, with the full path of the content file
|
been stored in the spool directory, with the full path of the content file
|
||||||
added onto the end of the given command line.
|
added onto the end of the given command-line.
|
||||||
|
|
||||||
For example, the following command will start a proxy server on port 10025
|
For example, the following command will start a proxy server on port 10025
|
||||||
which processes mail using the specified filter program, and then forwards the
|
which processes mail using the specified filter program, and then forwards the
|
||||||
mail on to the system's default MTA (on port 25):
|
mail on to the system's default MTA (on port 25):
|
||||||
|
|
||||||
emailrelay --as-proxy localhost:smtp --port 10025 --no-syslog \
|
emailrelay --as-proxy=localhost:smtp --port=10025 --no-syslog \
|
||||||
--filter $HOME/myfilter --spool-dir $HOME/spool
|
--filter=$HOME/myfilter --spool-dir=$HOME/spool
|
||||||
|
|
||||||
The pre-processor program should terminate with an exit code of zero to
|
The pre-processor program should terminate with an exit code of zero to
|
||||||
indicate success, or a value between 1 and 99 to indicate failure. Exit codes
|
indicate success, or a value between 1 and 99 to indicate failure. Exit codes
|
||||||
@ -202,14 +230,14 @@ in between is taken as a failure reason, and passed back to the SMTP client.
|
|||||||
|
|
||||||
The pre-processor program can edit any part of the message's envelope file or
|
The pre-processor program can edit any part of the message's envelope file or
|
||||||
content file: E-MailRelay remembers nothing about the message while the
|
content file: E-MailRelay remembers nothing about the message while the
|
||||||
pre-processor is running, except the filename. But if the message is deleted
|
pre-processor is running except the filename. But if the message is deleted
|
||||||
by the pre-processor then E-MailRelay may be upset, so to avoid the error
|
by the pre-processor then E-MailRelay may be upset, so to avoid the error
|
||||||
message use an exit code of 100.
|
message use an exit code of 100.
|
||||||
|
|
||||||
If the pre-processor program creates completely new messages in the spool
|
If the pre-processor program creates completely new messages in the spool
|
||||||
directory then they may not be processed immediately, or they may be completely
|
directory then they may not be processed immediately, or they may be completely
|
||||||
ignored. To get E-MailRelay to pick up any new messages you create in the spool
|
ignored. To get E-MailRelay to pick up any new messages you create in the spool
|
||||||
directory use the "--poll" switch, or run "emailrelay --as-client" from within
|
directory use the "--poll" option, or run "emailrelay --as-client" from within
|
||||||
the pre-processor program.
|
the pre-processor program.
|
||||||
|
|
||||||
As an example of a simple pre-processor this shell script examines the sending
|
As an example of a simple pre-processor this shell script examines the sending
|
||||||
@ -258,171 +286,41 @@ For Windows this example can be rewritten in JavaScript:
|
|||||||
WScript.Quit( 0 ) ;
|
WScript.Quit( 0 ) ;
|
||||||
|
|
||||||
Windows pre-processor programs written in JavaScript can be run using
|
Windows pre-processor programs written in JavaScript can be run using
|
||||||
"cscript", with an E-MailRelay "--filter" switch something like this:
|
"cscript", with an E-MailRelay "--filter" option something like this:
|
||||||
|
|
||||||
--filter "c:/windows/system32/cscript.exe //nologo c:/program\ files/emailrelay/filter.js"
|
--filter="c:/program\ files/emailrelay/filter.js"
|
||||||
|
|
||||||
Note how the space character in the path is escaped with a backslash.
|
Note how the space character in "program files" is escaped with a backslash.
|
||||||
|
|
||||||
As an example of more complex processing there is a "--filter" script included
|
Example "--filter" scripts are included in the distribution, including
|
||||||
in the distribution ("emailrelay-process.sh") that does rot-13 masking of
|
"emailrelay-process.sh" which does rot-13 masking of messages. This script also
|
||||||
messages. This script also does some simple MIME encoding, so that the masked
|
does some simple MIME encoding, so that the masked message appears as an
|
||||||
message appears as an attachment within a plaintext bearer message.
|
attachment within a plaintext bearer message.
|
||||||
|
|
||||||
E-MailRelay also has a "--client-filter" switch that enables pre-processing of
|
E-MailRelay also has a "--client-filter" option that enables pre-processing of
|
||||||
messages just before they are forwarded, rather then after they are stored. The
|
messages just before they are forwarded, rather then after they are stored. The
|
||||||
disadvantage is that by then it is too late to notify the SMTP client of any
|
disadvantage is that by then it is too late to notify the submitting SMTP client
|
||||||
processing failures, so in many applications using "--filter" is more useful.
|
of any processing failures, so in many applications using "--filter" is more
|
||||||
|
useful. The special exit code of 100 can be used to ignore the current message,
|
||||||
|
and 102 to stop looking for spooled messages after processing the current one.
|
||||||
|
|
||||||
Bear in mind the following points when writing "--filter" programs:
|
Bear in mind the following points when writing "--filter" programs:
|
||||||
* The standard input and output are not used; the content filename is passed on the command line.
|
|
||||||
|
* The standard input and output are not used; the content filename is passed on the command-line.
|
||||||
* Programs run with a reduced set of environment variables.
|
* Programs run with a reduced set of environment variables.
|
||||||
* The E-MailRelay process is completely blocked while the "--filter" program runs.
|
* The E-MailRelay process is completely blocked while the "--filter" program runs so it should be fast.
|
||||||
* E-MailRelay files use CR-LF line terminators, as required by the RFCs.
|
* E-MailRelay files use CR-LF line terminators, as required by the RFCs.
|
||||||
* Envelope files will have a file extension of ".new" or ".busy" when the program runs.
|
* Envelope files will have a file extension of ".new" or ".busy" when the program runs.
|
||||||
* Windows scripts may need to be run via "cscript" or a batch file wrapper.
|
* Windows scripts may need to be run via "cscript" or a batch file wrapper.
|
||||||
|
|
||||||
It is also possible to do message pre-processing in a separate server process by
|
It is also possible to do message pre-processing in a separate process by using
|
||||||
using "net:<address>:<port>" as the "--filter" or "--client-filter" switch
|
"net:<address>:<port>" as the "--filter" or "--client-filter" option parameter.
|
||||||
parameter. E-MailRelay connects to this address and then uses a simple
|
E-MailRelay connects to this address and then uses a simple line-based dialog as
|
||||||
line-based dialog as each e-mail message is processed where it sends the
|
each e-mail message is processed where it sends the full path of the message
|
||||||
full path of the message content file in one line and expects the remote process
|
content file in one line and expects the remote process to respond with an "ok"
|
||||||
to respond with an "ok" line if the message is to be accepted or an error
|
line if the message is to be accepted or an error message. One advantage of
|
||||||
message. One advantage of using a network pre-processor compared to running a
|
using a network pre-processor compared to running a program is that the
|
||||||
program is that the E-MailRelay server is not blocked while the messages are
|
E-MailRelay server is not blocked while the messages are being pre-processed.
|
||||||
being pre-processed.
|
|
||||||
|
|
||||||
Address verification
|
|
||||||
--------------------
|
|
||||||
By default the E-MailRelay server will accept all addresses for incoming e-mails
|
|
||||||
as valid. However, this default behaviour can be modified by using an external
|
|
||||||
verifier program, specified with the "--verifier" command-line switch, so that
|
|
||||||
you get to choose which recipient addresses are accepted as valid and which are
|
|
||||||
rejected.
|
|
||||||
|
|
||||||
The external verifier program is passed a command-line containing: (1) the full
|
|
||||||
e-mail address as supplied by the remote client, (2) the user-name part of the
|
|
||||||
address in upper-case, (3) the host-name part in upper-case, (4) the local
|
|
||||||
host's fully qualified domain name in upper-case, (5) the "MAIL" command's
|
|
||||||
"FROM:" address as supplied by the client or the empty string in the case of the
|
|
||||||
"VRFY" command, (6) the IP address of the client connection, (7) the
|
|
||||||
authentication mechanism used by the client ("NONE" if trusted), and (8) either
|
|
||||||
the authentication name or the fourth field from authentication secrets file if
|
|
||||||
a trusted IP address.
|
|
||||||
|
|
||||||
So, for example, a verifier script called "myverifier" might be run with the
|
|
||||||
following command-line:
|
|
||||||
|
|
||||||
myverifier me@myhost.mydomain ME MYHOST.MYDOMAIN MYHOST.MYDOMAIN bob@other.net 192.168.0.1 LOGIN bob
|
|
||||||
|
|
||||||
The verifier program is expected to generate two lines of output on the standard
|
|
||||||
output stream and then terminate with a specific exit code.
|
|
||||||
|
|
||||||
For valid non-local addresses the first line of output is ignored, the second
|
|
||||||
line should be copied from the first command-line argument, and the exit
|
|
||||||
value should be one.
|
|
||||||
|
|
||||||
#!/bin/sh
|
|
||||||
# address verifier -- accept all (252)
|
|
||||||
echo ""
|
|
||||||
echo $1
|
|
||||||
exit 1
|
|
||||||
|
|
||||||
For valid local addresses, where messages are to be delivered to a local
|
|
||||||
mailbox, the verifier is expected to write two lines to the standard output --
|
|
||||||
the full name associated with the mailbox, and the canonical mailbox name -- and
|
|
||||||
then exit with a value of zero.
|
|
||||||
|
|
||||||
#!/bin/sh
|
|
||||||
# address verifier -- accept as local (250)
|
|
||||||
echo Local Postmaster '<postmaster@localhost>'
|
|
||||||
echo postmaster
|
|
||||||
exit 0
|
|
||||||
|
|
||||||
(In practice local delivery just means that the message files in the spool
|
|
||||||
directory are copied and given a ".local" filename suffix.)
|
|
||||||
|
|
||||||
For invalid addresses the exit value should be greater than one, and anything
|
|
||||||
written to the standard output is taken as the failure reason. (Only the few
|
|
||||||
few thousand characters are read from the verifier's standard output stream; any
|
|
||||||
more is thrown away.)
|
|
||||||
|
|
||||||
#!/bin/sh
|
|
||||||
# address verifier -- reject as invalid (550)
|
|
||||||
echo invalid address: $1
|
|
||||||
exit 2
|
|
||||||
|
|
||||||
To indicate a temporary failure this can be changed to an exit code of 3.
|
|
||||||
|
|
||||||
#!/bin/sh
|
|
||||||
# address verifier -- reject as temporarily invalid (450)
|
|
||||||
echo address unavailable: $1
|
|
||||||
exit 3
|
|
||||||
|
|
||||||
If the exit code is 100 then the connection is aborted immediately.
|
|
||||||
|
|
||||||
#!/bin/sh
|
|
||||||
# address verifier -- abort
|
|
||||||
exit 100
|
|
||||||
|
|
||||||
In this more complete example all addresses are accepted as long as they contain
|
|
||||||
an "at" character:
|
|
||||||
|
|
||||||
#!/bin/sh
|
|
||||||
# address verifier -- accept only if containing an at sign
|
|
||||||
address="$1"
|
|
||||||
expr "${address}" : ".*@" > /dev/null || exit 2
|
|
||||||
echo ""
|
|
||||||
echo "${address}"
|
|
||||||
exit 1 # accept
|
|
||||||
|
|
||||||
As another example, this verifier script accepts all recipient addresses by
|
|
||||||
default, but rejects remote addresses if the client has bypassed authentication
|
|
||||||
by connecting on a trusted IP address:
|
|
||||||
|
|
||||||
#!/bin/sh
|
|
||||||
# address verifier
|
|
||||||
address="$1"
|
|
||||||
host="$3"
|
|
||||||
local_domain="$4"
|
|
||||||
auth_mechanism="$7"
|
|
||||||
if test -z "${auth_mechanism}" ; then auth_mechanism="NONE" ; fi
|
|
||||||
if test "${auth_mechanism}" = "NONE" -a "${host}" != "${local_domain}"
|
|
||||||
then
|
|
||||||
echo "cannot relay without authentication"
|
|
||||||
exit 2 # reject the recipient address
|
|
||||||
fi
|
|
||||||
echo ""
|
|
||||||
echo "${address}"
|
|
||||||
exit 1 # accept the recipient address
|
|
||||||
|
|
||||||
or in JavaScript for Windows:
|
|
||||||
|
|
||||||
// verifier.js
|
|
||||||
var address = WScript.Arguments(0) ;
|
|
||||||
var host = WScript.Arguments(2) ;
|
|
||||||
var local_domain = WScript.Arguments(3) ;
|
|
||||||
var auth_mechanism = WScript.Arguments(6) ;
|
|
||||||
if( ( auth_mechanism == "NONE" || auth_mechanism == "" ) && host != local_domain )
|
|
||||||
{
|
|
||||||
WScript.Echo( "cannot relay without authentication" ) ;
|
|
||||||
WScript.Quit( 2 ) ;
|
|
||||||
}
|
|
||||||
WScript.Echo( "" ) ;
|
|
||||||
WScript.Echo( address ) ;
|
|
||||||
WScript.Quit( 1 ) ;
|
|
||||||
|
|
||||||
If this verifier script is used with a suitable "--server-auth" file then it can
|
|
||||||
be used to prevent open relay without restricting authenticated clients.
|
|
||||||
|
|
||||||
If the "--verifier" switch parameter is of the form "net:<address>:<port>" then
|
|
||||||
the E-MailRelay server connects to the specified verifier daemon over the
|
|
||||||
network and sends verifier requests as lines with pipe-delimited fields. The
|
|
||||||
expected response is another pipe-delimited line containing the same information
|
|
||||||
as returned by verifier scripts but in reverse, such as "3|address unavailable"
|
|
||||||
or "0|postmaster|Local Postmaster <postmaster@localhost>". The "inetd"
|
|
||||||
super-server daemon would be a convenient way to connect up the pieces in this
|
|
||||||
case.
|
|
||||||
|
|
||||||
Authentication
|
Authentication
|
||||||
--------------
|
--------------
|
||||||
@ -430,6 +328,7 @@ E-MailRelay supports the SMTP "AUTH" extension, as defined in RFC2554, on both
|
|||||||
the server-side and client-side.
|
the server-side and client-side.
|
||||||
|
|
||||||
The authentication mechanisms currently supported are:
|
The authentication mechanisms currently supported are:
|
||||||
|
|
||||||
# "PLAIN"
|
# "PLAIN"
|
||||||
|
|
||||||
Passwords are stored in clear-text, sent over the network in clear-text, and
|
Passwords are stored in clear-text, sent over the network in clear-text, and
|
||||||
@ -439,47 +338,49 @@ The authentication mechanisms currently supported are:
|
|||||||
|
|
||||||
Similar to "PLAIN". Officially obsolete although widely used.
|
Similar to "PLAIN". Officially obsolete although widely used.
|
||||||
|
|
||||||
# "CRAM-MD5" mechanism
|
# "CRAM-MD5"
|
||||||
|
|
||||||
Passwords are not stored in clear-text, not sent over the network, and are
|
Passwords are not stored in clear-text, not sent over the network, and are
|
||||||
not replayable. Defined in RFC2195.
|
not replayable. Defined in RFC2195.
|
||||||
|
|
||||||
Authentication is enabled with the "--client-auth" and "--server-auth"
|
Authentication is enabled with the "--client-auth" and "--server-auth"
|
||||||
command-line switches. The switch parameter is the name of a secrets file,
|
command-line options and the option's parameter is the name of a secrets file,
|
||||||
containing usernames and passwords:
|
containing usernames and passwords:
|
||||||
|
|
||||||
emailrelay --as-server --server-auth /etc/emailrelay-clients.auth
|
emailrelay --as-server --server-auth=/etc/emailrelay-clients.auth
|
||||||
emailrelay --as-client myisp.net:smtp --client-auth /etc/emailrelay-myisp.auth
|
emailrelay --as-client=myisp.net:smtp --client-auth=/etc/emailrelay-myisp.auth
|
||||||
|
|
||||||
The secrets file has a line-based format: blank lines are ignored and the hash
|
The secrets file has a line-based format: blank lines are ignored and the hash
|
||||||
character (#) is used for comments.
|
character (#) is used for comments.
|
||||||
|
|
||||||
Lines have four white-space delimited fields:
|
Lines have four white-space delimited fields:
|
||||||
* "mechanism"
|
|
||||||
* "client-or-server"
|
* "client-or-server"
|
||||||
|
* "mechanism"
|
||||||
* "userid"
|
* "userid"
|
||||||
* "secret"
|
* "secret"
|
||||||
|
|
||||||
The "mechanism" field must be "LOGIN", "APOP" or "CRAM-MD5" (case-insensitive);
|
The "mechanism" field must be "LOGIN", "APOP" or "CRAM-MD5" (case-insensitive);
|
||||||
the "client-or-server" field must be "client" or "server"; the "userid" field is
|
the "client-or-server" field must be "client" or "server" (also
|
||||||
xtext-encoded user identifier; and the "secret" field is the xtext-encoded
|
case-insensitive); the "userid" field is xtext-encoded user identifier; and the
|
||||||
"LOGIN" password, or the "CRAM-MD5" digest key.
|
"secret" field is the xtext-encoded "LOGIN" password, or the "CRAM-MD5" digest
|
||||||
|
key.
|
||||||
|
|
||||||
The "xtext" encoding scheme is defined properly in RFC1891, but basically it
|
The "xtext" encoding scheme is defined properly in RFC1891, but basically it
|
||||||
says that non alphanumeric characters should be represented in hexadecimal as
|
says that non alphanumeric characters, space, "+" and "=" should be represented
|
||||||
"+XX".
|
in hexadecimal ascii as "+XX".
|
||||||
|
|
||||||
The client-side secrets file specified with "--client-auth" is used when
|
The client-side secrets file specified with "--client-auth" is used when
|
||||||
E-MailRelay acts as a client to talk to a remove server. The file should contain
|
E-MailRelay acts as a client to talk to a remove server. The file should contain
|
||||||
at least one "LOGIN client" or "CRAM-MD5 client" entry.
|
at least one "client LOGIN" or "client CRAM-MD5" entry.
|
||||||
|
|
||||||
A server-side secrets file specified with "--server-auth" is used when a remote
|
A server-side secrets file specified with "--server-auth" is used when a remote
|
||||||
client tries to authenticate with the E-MailRelay server. The file should
|
client tries to authenticate with the E-MailRelay server. The file should
|
||||||
normally contain several "LOGIN server" or "CRAM-MD5 server" entries, one for
|
normally contain several "server LOGIN" or "server CRAM-MD5" entries, one for
|
||||||
each client.
|
each client.
|
||||||
|
|
||||||
The same secrets file may be specified for both "--client-auth" and
|
The same secrets file may be specified for both "--client-auth" and
|
||||||
"--server-auth" switches.
|
"--server-auth" options.
|
||||||
|
|
||||||
The "CRAM-MD5" keys can be generated using the "emailrelay-passwd" utility.
|
The "CRAM-MD5" keys can be generated using the "emailrelay-passwd" utility.
|
||||||
|
|
||||||
@ -491,26 +392,25 @@ authenticate with the E-MailRelay server:
|
|||||||
#
|
#
|
||||||
# emailrelay secrets file
|
# emailrelay secrets file
|
||||||
#
|
#
|
||||||
LOGIN client jsmith my+20password
|
client LOGIN jsmith my+20password
|
||||||
LOGIN server user1 secret
|
server LOGIN user1 secret
|
||||||
LOGIN server user2 e+3Dmc2
|
server LOGIN user2 e+3Dmc2
|
||||||
|
|
||||||
A "CRAM-MD5" version would look like this:
|
A "CRAM-MD5" version would look like this:
|
||||||
|
|
||||||
#
|
#
|
||||||
# emailrelay secrets file
|
# emailrelay secrets file
|
||||||
#
|
#
|
||||||
CRAM-MD5 client jsmith 688498119.2977922305.1278051807.3015243256.2216875978.2833592318.2902375592.3156808220
|
client CRAM-MD5 jsmith 688498119.2977922305.1278051807.3015243256.2216875978.2833592318.2902375592.3156808220
|
||||||
CRAM-MD5 server user1 4059553961.2316091643.3282746241.1444639637.3735501773.3404060330.2760590371.1201092398
|
server CRAM-MD5 user1 4059553961.2316091643.3282746241.1444639637.3735501773.3404060330.2760590371.1201092398
|
||||||
CRAM-MD5 server user2 2798539199.3144534242.3784876256.2879973305.2327113479.216533878.2436460291.2361831919
|
server CRAM-MD5 user2 2798539199.3144534242.3784876256.2879973305.2327113479.216533878.2436460291.2361831919
|
||||||
|
|
||||||
When using the "LOGIN" mechanism you have to store plaintext passwords in a
|
When using the "LOGIN" mechanism you have to store plaintext passwords in the
|
||||||
file. This is a bad thing. You should at least make sure that the secrets file
|
secrets file, so you should make sure that the secrets file has tight
|
||||||
has tight permissions, and that the passwords in it are not also used for
|
permissions and the passwords in it are not also used for anything important.
|
||||||
anything important.
|
|
||||||
|
|
||||||
On the server side authentication is advertised by E-MailRealy in the response
|
On the server side authentication is advertised by E-MailRealy in the response
|
||||||
to the SMTP "EHLO" command if the "--server-auth" command-line switch is used.
|
to the SMTP "EHLO" command if the "--server-auth" command-line option is used.
|
||||||
Authentication by the client is then mandatory unless the client's IP address is
|
Authentication by the client is then mandatory unless the client's IP address is
|
||||||
configured as a trusted address.
|
configured as a trusted address.
|
||||||
|
|
||||||
@ -518,23 +418,26 @@ Trusted IP addresses are configured with lines in the secrets file having "NONE"
|
|||||||
in the first field, "server" in the second field, a wildcarded IP address in
|
in the first field, "server" in the second field, a wildcarded IP address in
|
||||||
the third field, and an arbitrary keyword in the fourth field. The keyword field
|
the third field, and an arbitrary keyword in the fourth field. The keyword field
|
||||||
is passed to any external address verifier program specified by the "--verifier"
|
is passed to any external address verifier program specified by the "--verifier"
|
||||||
command-line switch; it is not used for any other purpose.
|
command-line option; it is not used for any other purpose. Wildcarded IPv4
|
||||||
|
addresses can use a format like 192.168.0.0/24 or 192.168.0.*; wildcarded IPv6
|
||||||
|
addresses must have the full set of 32 lowercase hex digits followed by the CIDR
|
||||||
|
netmask.
|
||||||
|
|
||||||
For example, this secrets file allows any client connecting from the
|
For example, this secrets file allows any client connecting from the
|
||||||
192.168.0.0/24 domain to connect without authentication desipte the
|
192.168.0.0/24 domain to connect without authentication desipte the
|
||||||
"--server-auth" switch:
|
"--server-auth" option:
|
||||||
|
|
||||||
#
|
#
|
||||||
# emailrelay secrets file
|
# emailrelay secrets file
|
||||||
#
|
#
|
||||||
NONE server 192.168.0.* localdomain
|
server NONE 192.168.0.* localdomain
|
||||||
LOGIN server user1 secret
|
server LOGIN user1 secret
|
||||||
LOGIN server user2 e+3Dmc2
|
server LOGIN user2 e+3Dmc2
|
||||||
|
|
||||||
On the client side authentication is performed when E-MailRelay has connected to
|
On the client side authentication is performed when E-MailRelay has connected to
|
||||||
a server which implements the AUTH extension with one of the supported
|
a server which implements the AUTH extension with one of the supported
|
||||||
mechanisms. If client authentication is enabled (with the "--client-auth"
|
mechanisms. If client authentication is enabled (with the "--client-auth"
|
||||||
switch) but the remote server does not support the AUTH extension, or does not
|
option) but the remote server does not support the AUTH extension, or does not
|
||||||
support the LOGIN or CRAM-MD5 mechanism, then E-MailRelay will log an error
|
support the LOGIN or CRAM-MD5 mechanism, then E-MailRelay will log an error
|
||||||
and not forward any messages.
|
and not forward any messages.
|
||||||
|
|
||||||
@ -552,22 +455,101 @@ from a particular IP address is allowed. This type of POP-before-SMTP
|
|||||||
authentication can be done outside the E-MailRelay system by POP/IMAP utilities
|
authentication can be done outside the E-MailRelay system by POP/IMAP utilities
|
||||||
such as "fetchmail".
|
such as "fetchmail".
|
||||||
|
|
||||||
|
TLS/SSL
|
||||||
|
-------
|
||||||
|
E-MailRelay can use negotiated TLS/SSL to encrypt SMTP and POP3 sessions: to
|
||||||
|
enable TLS/SSL encryption when E-MailRelay is acting as an SMTP client use the
|
||||||
|
"--client-tls" command-line option, and to enable TLS/SSL when E-MailRelay is
|
||||||
|
acting as an SMTP or POP3 server use "--server-tls". The connections start off
|
||||||
|
as unencrypted and use the STARTTLS command to negotiate TSL/SSL encryption
|
||||||
|
before any plaintext passwords are exchanged.
|
||||||
|
|
||||||
|
The "--server-tls" option requires the name of an X.509 certificate in the "PEM"
|
||||||
|
format. This file must be in a directory that the OpenSSL library considers to
|
||||||
|
be secure. On some systems this is "/etc/ssl/certs".
|
||||||
|
|
||||||
|
Certificate files can be created with the "openssl" utility using the
|
||||||
|
"req -x509" sub-command. Refer to the OpenSSL documentation for the full details
|
||||||
|
but something like this might work for testing purposes:
|
||||||
|
|
||||||
|
$ cd /etc/ssl/certs
|
||||||
|
$ openssl req -x509 -nodes -days 365 -subj "/O=`uname -n`/CN=$USER" -newkey rsa:1024 -keyout emailrelay.pem -out emailrelay.pem
|
||||||
|
$ ln -s emailrelay.pem `openssl x509 -noout -hash -in emailrelay.pem`.0
|
||||||
|
|
||||||
|
E-MailRelay can also make outgoing SMTP connections using TLS/SSL encryption
|
||||||
|
where the whole SMTP dialog is encrypted from the start, without a negotiation
|
||||||
|
step ("--client-tls-connection"). This is sometimes called SMTP-over-TLS or
|
||||||
|
secure SMTP (ssmtp) and it is normally used with port number 465.
|
||||||
|
|
||||||
|
The behaviour of the TLS/SSL layer can be tweaked by using "--tls-config" option
|
||||||
|
with a special number that is made up of the following:
|
||||||
|
* 2 - allow SSL v2 or later
|
||||||
|
* 3 - allow SSL v3 or later
|
||||||
|
* 4 - ask for peer certificates but just log them
|
||||||
|
* 8 - ask for peer certificates and verify them
|
||||||
|
|
||||||
|
PAM Authentication
|
||||||
|
------------------
|
||||||
|
E-MailRelay supports the use of PAM (Pluggable Authentication Modules) for
|
||||||
|
authentication if it has been built with the "--with-pam" configure option.
|
||||||
|
|
||||||
|
PAM authentication can be used by E-MailRelay to authenticate SMTP and POP3
|
||||||
|
sessions coming in from remote clients; it cannot be used by E-MailRelay to
|
||||||
|
supply passwords when acting as an SMTP client.
|
||||||
|
|
||||||
|
Use "--server-auth=/pam" and/or "--pop-auth=/pam" on the command-line to enable
|
||||||
|
PAM authentication at run-time. The E-MailRelay server will then advertise an
|
||||||
|
SMTP authentication mechanism of PLAIN and do the actual authentication via PAM.
|
||||||
|
|
||||||
|
The PAM system itself must be configured with a service of "emailrelay". This
|
||||||
|
normally involves creating a file "/etc/pam.d/emailrelay" containing somthing
|
||||||
|
like the following:
|
||||||
|
|
||||||
|
auth requisite pam_unix.so nullok_secure
|
||||||
|
session required pam_permit.so
|
||||||
|
account required pam_permit.so
|
||||||
|
password required pam_deny.so
|
||||||
|
|
||||||
|
With this configuration the E-MailRelay server will use normal unix system
|
||||||
|
account names and passwords to authenticate remote clients, but note that on
|
||||||
|
some systems this will require special permissioning to allow the E-MailRelay
|
||||||
|
server to read the shadow password database.
|
||||||
|
|
||||||
|
The passwords for system accounts are usually very sensitive so E-MailRelay
|
||||||
|
requires the "--server-tls" command-line option when using PAM authentication,
|
||||||
|
and clients are required to establish a TLS/SSL session before authenticating.
|
||||||
|
|
||||||
|
SOCKS
|
||||||
|
-----
|
||||||
|
E-MailRelay can use a SOCKS 4a proxy for establishing outgoing SMTP connections
|
||||||
|
if the SOCKS proxy address is appended to the SMTP server's address separated by
|
||||||
|
"@".
|
||||||
|
|
||||||
|
For example, this could be used to send e-mails via the Tor network, assuming
|
||||||
|
there is a local Tor server listening on port 9050:
|
||||||
|
|
||||||
|
emailrelay --forward-to myisp.net:smtp@localhost:9050 ...
|
||||||
|
|
||||||
|
In this example the target SMTP server will receive a connection from the Tor
|
||||||
|
exit node rather than from E-MailRelay directly.
|
||||||
|
|
||||||
Pop server
|
Pop server
|
||||||
----------
|
----------
|
||||||
E-MailRelay can be used as a POP3 server so that POP clients have access to
|
E-MailRelay can be used as a POP3 server so that POP clients have access to
|
||||||
spooled messages.
|
spooled messages.
|
||||||
|
|
||||||
The following command-line switches are used:
|
The following command-line options are used:
|
||||||
|
|
||||||
# --pop
|
# --pop
|
||||||
|
|
||||||
Enables the POP3 server.
|
Enables the POP3 server. Negotiated TLS/SSL (using "STLS") will be enabled if
|
||||||
|
the "--client-tls" or "--server-tls" options are also given.
|
||||||
|
|
||||||
# --pop-port <port>
|
# --pop-port=<port>
|
||||||
|
|
||||||
Changes the POP3 listening port from its default of 110.
|
Changes the POP3 listening port from its default of 110.
|
||||||
|
|
||||||
# --pop-auth <path>
|
# --pop-auth=<path>
|
||||||
|
|
||||||
Changes the authentication secrets file. The default is typically
|
Changes the authentication secrets file. The default is typically
|
||||||
"/etc/emailrelay.auth".
|
"/etc/emailrelay.auth".
|
||||||
@ -576,14 +558,23 @@ The following command-line switches are used:
|
|||||||
"--server-auth" and the same file can be used for both SMTP and POP3
|
"--server-auth" and the same file can be used for both SMTP and POP3
|
||||||
authentication.
|
authentication.
|
||||||
|
|
||||||
"APOP server" entries are used for "APOP" authentication, "LOGIN server"
|
"server APOP" entries are used for "APOP" authentication, "server LOGIN"
|
||||||
entries are used for "USER/PASS" authentication, and "CRAM-MD5" entries are
|
entries are used for "USER/PASS" authentication, and "server CRAM-MD5" entries
|
||||||
used for "AUTH" authentication.
|
are used for "AUTH" authentication.
|
||||||
|
|
||||||
Note that the basic POP3 protocol defines only "APOP" and "USER/PASS"
|
Note that the basic POP3 protocol defines only "APOP" and "USER/PASS"
|
||||||
authentication, so some POP client programs may not be able to cope with
|
authentication, so some POP client programs may not be able to cope with
|
||||||
CRAM-MD5 authentication using the POP3 "AUTH" extension.
|
CRAM-MD5 authentication using the POP3 "AUTH" extension.
|
||||||
|
|
||||||
|
The CRAM-MD5 authentication mechanism will only be advertised to clients
|
||||||
|
if there are "server CRAM-MD5" entries in the secrets file.
|
||||||
|
|
||||||
|
If E-MailRelay was built with PAM support then a special value of "/pam" can
|
||||||
|
be used to enable authentication using the PAM infrastructure rather than a
|
||||||
|
secrets file. In this case only the PLAIN authentication mechanism will be
|
||||||
|
advertised to the client but transport level encryption using TLS/SSL will be
|
||||||
|
mandatory.
|
||||||
|
|
||||||
# --pop-by-name
|
# --pop-by-name
|
||||||
|
|
||||||
Modifies the POP spool directory according to the name used by the client
|
Modifies the POP spool directory according to the name used by the client
|
||||||
@ -602,13 +593,142 @@ The following command-line switches are used:
|
|||||||
Disables message deletion: the POP3 DELE command will appear to succeed, but
|
Disables message deletion: the POP3 DELE command will appear to succeed, but
|
||||||
no files will be deleted from the spool directory.
|
no files will be deleted from the spool directory.
|
||||||
|
|
||||||
|
Address verification
|
||||||
|
--------------------
|
||||||
|
By default the E-MailRelay server will accept all recipient addresses for
|
||||||
|
incoming e-mails as valid. This default behaviour can be modified by using an
|
||||||
|
external verifier program, specified with the "--verifier" command-line option,
|
||||||
|
so that you get to choose which recipient addresses are accepted as valid and
|
||||||
|
which are rejected.
|
||||||
|
|
||||||
|
Your verifier script is passed a command-line containing: (1) the full e-mail
|
||||||
|
address as supplied by the remote client, (2) the user-name part of the address
|
||||||
|
in upper-case, (3) the host-name part in upper-case, (4) the local host's fully
|
||||||
|
qualified domain name in upper-case, (5) the "MAIL" command's "FROM:" address as
|
||||||
|
supplied by the client or the empty string in the case of the "VRFY" command,
|
||||||
|
(6) the IP address of the client connection, (7) the authentication mechanism
|
||||||
|
used by the client ("NONE" if trusted), and (8) either the authentication name
|
||||||
|
or the fourth field from authentication secrets file if a trusted IP address.
|
||||||
|
|
||||||
|
So, for example, a verifier script called "myverifier" might be run with the
|
||||||
|
following command-line:
|
||||||
|
|
||||||
|
myverifier me@myhost.mydomain ME MYHOST.MYDOMAIN MYHOST.MYDOMAIN bob@other.net 192.168.0.1 LOGIN bob
|
||||||
|
|
||||||
|
The verifier script is expected to generate two lines of output on the standard
|
||||||
|
output stream and then terminate with a specific exit code.
|
||||||
|
|
||||||
|
For valid addresses the first line of output is ignored, the second line should
|
||||||
|
be copied from the first command-line argument, and the exit value should be
|
||||||
|
one.
|
||||||
|
|
||||||
|
#!/bin/sh
|
||||||
|
# address verifier -- accept all (252)
|
||||||
|
echo ""
|
||||||
|
echo $1
|
||||||
|
exit 1
|
||||||
|
|
||||||
|
If the address is valid but it should be delivered to a local mailbox rather
|
||||||
|
than forwarded then the verifier script should write two lines to the standard
|
||||||
|
output -- the full name associated with the mailbox, and the canonical mailbox
|
||||||
|
name -- and then exit with a value of zero.
|
||||||
|
|
||||||
|
#!/bin/sh
|
||||||
|
# address verifier -- accept as local (250)
|
||||||
|
echo Local Postmaster '<postmaster@localhost>'
|
||||||
|
echo postmaster
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
For E-MailRelay local delivery just means that the message file in the spool
|
||||||
|
directory is given a ".local" filename suffix. This can be used to create a
|
||||||
|
separate channel for adminstrative messages such as delivery reports.
|
||||||
|
|
||||||
|
For invalid addresses the exit value should be non-zero and anything written to
|
||||||
|
the standard output is taken as the reason for the failure.
|
||||||
|
|
||||||
|
#!/bin/sh
|
||||||
|
# address verifier -- reject as invalid (550)
|
||||||
|
echo invalid address: $1
|
||||||
|
exit 2
|
||||||
|
|
||||||
|
To indicate a temporary failure this can be changed to an exit code of 3.
|
||||||
|
|
||||||
|
#!/bin/sh
|
||||||
|
# address verifier -- reject as temporarily invalid (450)
|
||||||
|
echo address unavailable: $1
|
||||||
|
exit 3
|
||||||
|
|
||||||
|
If the verifier exit code is 100 then the connection is aborted immediately,
|
||||||
|
which may be useful in limiting the impact of denial of service attacks:
|
||||||
|
|
||||||
|
#!/bin/sh
|
||||||
|
# address verifier -- abort
|
||||||
|
exit 100
|
||||||
|
|
||||||
|
In this more complete example the verifier script accepts all addresses as valid
|
||||||
|
as long as they contain an "at" character:
|
||||||
|
|
||||||
|
#!/bin/sh
|
||||||
|
# address verifier -- accept only if containing an at sign
|
||||||
|
address="$1"
|
||||||
|
expr "${address}" : ".*@" > /dev/null || exit 2
|
||||||
|
echo ""
|
||||||
|
echo "${address}"
|
||||||
|
exit 1 # accept
|
||||||
|
|
||||||
|
As another example, this verifier script accepts all recipient addresses by
|
||||||
|
default but rejects remote addresses if the client has bypassed authentication
|
||||||
|
by connecting on a trusted IP address:
|
||||||
|
|
||||||
|
#!/bin/sh
|
||||||
|
# address verifier
|
||||||
|
address="$1"
|
||||||
|
host="$3"
|
||||||
|
local_domain="$4"
|
||||||
|
auth_mechanism="$7"
|
||||||
|
if test -z "${auth_mechanism}" ; then auth_mechanism="NONE" ; fi
|
||||||
|
if test "${auth_mechanism}" = "NONE" -a "${host}" != "${local_domain}"
|
||||||
|
then
|
||||||
|
echo "cannot relay without authentication"
|
||||||
|
exit 2 # reject the recipient address
|
||||||
|
fi
|
||||||
|
echo ""
|
||||||
|
echo "${address}"
|
||||||
|
exit 1 # accept the recipient address
|
||||||
|
|
||||||
|
or written in JavaScript for Windows:
|
||||||
|
|
||||||
|
// verifier.js
|
||||||
|
var address = WScript.Arguments(0) ;
|
||||||
|
var host = WScript.Arguments(2) ;
|
||||||
|
var local_domain = WScript.Arguments(3) ;
|
||||||
|
var auth_mechanism = WScript.Arguments(6) ;
|
||||||
|
if( ( auth_mechanism == "NONE" || auth_mechanism == "" ) && host != local_domain )
|
||||||
|
{
|
||||||
|
WScript.Stdout.WriteLine( "cannot relay without authentication" ) ;
|
||||||
|
WScript.Quit( 2 ) ;
|
||||||
|
}
|
||||||
|
WScript.Stdout.WriteLine( "" ) ;
|
||||||
|
WScript.Stdout.WriteLine( address ) ;
|
||||||
|
WScript.Quit( 1 ) ;
|
||||||
|
|
||||||
|
If this verifier script is used with a suitable "--server-auth" file then it can
|
||||||
|
be used to prevent open relay without restricting authenticated clients.
|
||||||
|
|
||||||
|
It is also possible to verify addresses in a separate daemon process by using a
|
||||||
|
"--verifier" option of the form "net:<address>:<port>". In this case E-MailRelay
|
||||||
|
will connect to the specified verifier daemon over the network and send address
|
||||||
|
verification requests as lines with pipe-delimited fields. The expected response
|
||||||
|
is another pipe-delimited line containing the same information as returned by
|
||||||
|
verifier scripts but in reverse, such as "3|address unavailable" or
|
||||||
|
"0|postmaster|Local Postmaster <postmaster@localhost>". The "inetd" super-server
|
||||||
|
daemon would be a convenient way to connect up the pieces in this case.
|
||||||
|
|
||||||
Security issues
|
Security issues
|
||||||
---------------
|
---------------
|
||||||
A significant security concern is the use of external mail pre-processors and
|
The following are some security issues that have been taken into consideration:
|
||||||
address verifiers (using the "--filter" and "--verifier" switches), and so the
|
|
||||||
following precautions are taken:
|
|
||||||
|
|
||||||
# effective userid
|
# Effective userid
|
||||||
|
|
||||||
Suid privileges are revoked at start-up, switching the effective
|
Suid privileges are revoked at start-up, switching the effective
|
||||||
userid/groupid to be the real userid/groupid values. If started as "root"
|
userid/groupid to be the real userid/groupid values. If started as "root"
|
||||||
@ -620,45 +740,44 @@ following precautions are taken:
|
|||||||
groupid, so that new files have group ownership corresponding to the
|
groupid, so that new files have group ownership corresponding to the
|
||||||
"daemon" user.
|
"daemon" user.
|
||||||
|
|
||||||
# execution environment
|
# Execution environment
|
||||||
|
|
||||||
The mail pre-processor runs with an almost empty set of environment variables
|
The external pre-processor programs are run with an almost empty set of
|
||||||
("PATH" and "IFS"), and with no open file descriptors other than "stdin" and
|
environment variables ("PATH" and "IFS"), and with no open file descriptors
|
||||||
"stderr" open onto "/dev/null", and "stdout" open onto a pipe.
|
other than "stdin" and "stderr" open onto "/dev/null", and "stdout" open onto a
|
||||||
|
pipe.
|
||||||
|
|
||||||
# configuration
|
# Configuration
|
||||||
|
|
||||||
The mail pre-processor filename has to be configured using a full path, so
|
The mail pre-processor filenames have to be configured using a full path, so
|
||||||
there is no dependence on the current working directory or the PATH
|
there is no dependence on the current working directory or the PATH
|
||||||
environment variable.
|
environment variable.
|
||||||
|
|
||||||
Some other points to note are:
|
# Umask
|
||||||
|
|
||||||
# umask
|
|
||||||
|
|
||||||
The program runs for most of the time with a "umask" of 177, switching to 117
|
The program runs for most of the time with a "umask" of 177, switching to 117
|
||||||
when creating spool files.
|
when creating spool files.
|
||||||
|
|
||||||
# buffer overflow
|
# Buffer overflow
|
||||||
|
|
||||||
Strings are dynamically allocated, so buffer overflow/truncation issues are
|
Strings are dynamically allocated in c++, so buffer overflow/truncation issues
|
||||||
avoided.
|
are avoided.
|
||||||
|
|
||||||
# remote clients
|
# Remote clients
|
||||||
|
|
||||||
By default connections will be rejected if they come from remote machines.
|
By default connections will be rejected if they come from remote machines.
|
||||||
|
|
||||||
# remote configuration
|
# Remote configuration
|
||||||
|
|
||||||
No configuration parameters can be changed through the administrative
|
No configuration parameters can be changed through the administrative
|
||||||
interface.
|
interface.
|
||||||
|
|
||||||
# use of exec() and system()
|
# Use of exec() and system()
|
||||||
|
|
||||||
No exec(), system() or popen() calls are used other than execve() to spawn the
|
No exec(), system() or popen() calls are used other than execve() to spawn the
|
||||||
mail pre-processor and/or address verifier.
|
mail pre-processor and/or address verifier.
|
||||||
|
|
||||||
# file permissions
|
# File permissions
|
||||||
|
|
||||||
After a normal installation the spool directory is has ownership of
|
After a normal installation the spool directory is has ownership of
|
||||||
"root.daemon" with permissions of "-rwxrwxr-x" and messages files are created
|
"root.daemon" with permissions of "-rwxrwxr-x" and messages files are created
|
||||||
@ -670,18 +789,23 @@ Some other points to note are:
|
|||||||
spool directory, and the files created end up owned by the submitter but with
|
spool directory, and the files created end up owned by the submitter but with
|
||||||
group ownership of "daemon".
|
group ownership of "daemon".
|
||||||
|
|
||||||
# logging
|
# Logging
|
||||||
|
|
||||||
Logging output is conditioned so that ANSI escape sequences cannot appear
|
Logging output is conditioned so that ANSI escape sequences cannot appear
|
||||||
in the log.
|
in the log.
|
||||||
|
|
||||||
Passwords and message content are not logged (except if using the "--debug"
|
Passwords and message content are not logged (except if using the "--debug"
|
||||||
switch with debug logging support enabled at build time).
|
option at run time with debug logging enabled at build time).
|
||||||
|
|
||||||
# information leakage
|
# Information leakage
|
||||||
|
|
||||||
The "--anonymous" switch can be used to slightly reduce the amount of information
|
The "--anonymous" option can be used to reduce the amount of information
|
||||||
released to remote clients.
|
released to remote clients, especially with an empty "--domain".
|
||||||
|
|
||||||
|
# Mandatory encryption
|
||||||
|
|
||||||
|
When using Linux PAM for authentication all clients are required to use
|
||||||
|
TLS/SSL encryption.
|
||||||
|
|
||||||
Security issues which relate to the SMTP protocol itself are beyond the scope of
|
Security issues which relate to the SMTP protocol itself are beyond the scope of
|
||||||
this document, but RFC2821 makes the following observation: "SMTP mail is
|
this document, but RFC2821 makes the following observation: "SMTP mail is
|
||||||
@ -690,15 +814,15 @@ create messages that will trick a [..] recipient into believing that they came
|
|||||||
from somewhere else. [..] Real [..] security lies [..] in end-to-end methods
|
from somewhere else. [..] Real [..] security lies [..] in end-to-end methods
|
||||||
[..] such as those which use digital signatures."
|
[..] such as those which use digital signatures."
|
||||||
|
|
||||||
The "Authentication" section below also relates to security.
|
The "Authentication" and "Linux PAM" sections above also relate to security.
|
||||||
|
|
||||||
Administration interface
|
Administration interface
|
||||||
------------------------
|
------------------------
|
||||||
If enabled with the "--admin" command line switch, the E-MailRelay server will
|
If enabled with the "--admin" command-line option, the E-MailRelay server will
|
||||||
provide a network interface for performing administration tasks. This is a
|
provide a network interface for performing administration tasks. This is a
|
||||||
simple command-line interface which is compatible with "telnet":
|
simple command-line interface which is compatible with "telnet":
|
||||||
|
|
||||||
$ emailrelay --as-server --port 125 --forward-to localhost:25 --admin 10026
|
$ emailrelay --as-server --port=125 --forward-to=localhost:25 --admin=10026
|
||||||
$ telnet localhost 10026
|
$ telnet localhost 10026
|
||||||
E-MailRelay> help
|
E-MailRelay> help
|
||||||
E-MailRelay> quit
|
E-MailRelay> quit
|
||||||
@ -718,6 +842,7 @@ Following a normal build from source, a "make install" puts files in the
|
|||||||
following locations:
|
following locations:
|
||||||
* /usr/local/etc/emailrelay.conf
|
* /usr/local/etc/emailrelay.conf
|
||||||
* /usr/local/etc/emailrelay.conf.template
|
* /usr/local/etc/emailrelay.conf.template
|
||||||
|
* /usr/local/etc/pam.d/emailrelay
|
||||||
* /usr/local/libexec/emailrelay/emailrelay-filter-copy
|
* /usr/local/libexec/emailrelay/emailrelay-filter-copy
|
||||||
* /usr/local/libexec/emailrelay/emailrelay-poke
|
* /usr/local/libexec/emailrelay/emailrelay-poke
|
||||||
* /usr/local/libexec/emailrelay/examples/*
|
* /usr/local/libexec/emailrelay/examples/*
|
||||||
@ -732,63 +857,37 @@ following locations:
|
|||||||
* /usr/local/var/spool/emailrelay/emailrelay.*.content
|
* /usr/local/var/spool/emailrelay/emailrelay.*.content
|
||||||
* /usr/local/var/spool/emailrelay/emailrelay.*.envelope
|
* /usr/local/var/spool/emailrelay/emailrelay.*.envelope
|
||||||
|
|
||||||
This directory structure is constrained by the GNU/"autoconf" conventions rather
|
|
||||||
than the Filesystem Hierarchy Standard (FHS).
|
|
||||||
|
|
||||||
To force FHS compliance you can use the "--enable-fhs" switch when running
|
|
||||||
"configure". This results in the following file locations:
|
|
||||||
* /etc/emailrelay.conf
|
|
||||||
* /etc/emailrelay.conf.template
|
|
||||||
* /etc/init.d/emailrelay
|
|
||||||
* /usr/lib/emailrelay/emailrelay-filter-copy
|
|
||||||
* /usr/lib/emailrelay/emailrelay-poke
|
|
||||||
* /usr/lib/emailrelay/examples/*
|
|
||||||
* /usr/sbin/emailrelay
|
|
||||||
* /usr/sbin/emailrelay-passwd
|
|
||||||
* /usr/sbin/emailrelay-submit
|
|
||||||
* /usr/share/doc/emailrelay/*
|
|
||||||
* /usr/share/doc/emailrelay/index.html
|
|
||||||
* /usr/share/doc/emailrelay/README
|
|
||||||
* /usr/share/man/man1/emailrelay*.1.gz
|
|
||||||
* /var/spool/emailrelay/emailrelay.*.content
|
|
||||||
* /var/spool/emailrelay/emailrelay.*.envelope
|
|
||||||
|
|
||||||
For finer control of the directory structure the following can be specified on
|
For finer control of the directory structure the following can be specified on
|
||||||
the "configure" command-line:
|
the "configure" command-line:
|
||||||
* --mandir=<dir>
|
* --mandir=<dir>
|
||||||
* --sbindir=<dir>
|
* --sbindir=<dir>
|
||||||
|
* --datadir=<dir>
|
||||||
* e_libexecdir=<dir>
|
* e_libexecdir=<dir>
|
||||||
* e_sysconfdir=<dir>
|
* e_sysconfdir=<dir>
|
||||||
* e_docdir=<dir>
|
* e_docdir=<dir>
|
||||||
* e_examplesdir=<dir>
|
* e_examplesdir=<dir>
|
||||||
* e_initdir=<dir>
|
* e_initdir=<dir>
|
||||||
* e_spooldir=<dir>
|
* e_spooldir=<dir>
|
||||||
|
* e_pamdir=<dir>
|
||||||
|
* e_icondir=<dir>
|
||||||
|
|
||||||
For example, running "./configure --prefix=/usr e_spooldir=/tmp/spool" will
|
For example, running "./configure --prefix=/usr e_spooldir=/tmp/spool" will
|
||||||
create the GNU-style directory structure under "/usr" rather than "/usr/local",
|
install to a directory structure under "/usr" rather than "/usr/local",
|
||||||
and create the E-MailRelay spool directory as "/tmp/spool" rather than
|
and create the E-MailRelay spool directory as "/tmp/spool" rather than
|
||||||
"/usr/local/var/spool/emailrelay".
|
"/usr/local/var/spool/emailrelay".
|
||||||
|
|
||||||
The default spool directory path which is built into the executables and scripts
|
For a directory structure conforming more closely to the FHS use this configure
|
||||||
comes from "configure" via the makefiles.
|
command:
|
||||||
|
|
||||||
Even though the "--enable-fhs" switch overrides all other directory specifiers
|
./configure --prefix=/usr --localstatedir=/var --libexecdir=/usr/lib --sysconfdir=/etc e_init_dir=/etc/init.d
|
||||||
during the build process, it is still possible to change the installation root
|
|
||||||
directory using "make install DESTDIR=<root>" or "DESTDIR=<root> make -e install".
|
|
||||||
But note that this will not affect the default spool directory path built into
|
|
||||||
the scripts and executables so the correct spool directory will have to be
|
|
||||||
specified at run-time with the "--spool-dir" switch.
|
|
||||||
|
|
||||||
If building the configuration GUI then you may need to set the "PKG_CONFIG_PATH"
|
As usual, it is possible to change the installation root directory after
|
||||||
environment variable to point to the ".pc" files in the Qt "lib" directory and
|
building by using "make DESTDIR=<root> install" or
|
||||||
set the "e_qtmoc" configure variable to point to the Qt "moc" utility. You
|
"DESTDIR=<root> make -e install". However, this will not affect the default
|
||||||
may also need to set the correct library directory for Qt if it is wrong in
|
spool directory path built into the scripts and executables so the correct spool
|
||||||
the ".pc" file by setting "LDFLAGS":
|
directory will have to be specified at run-time with the "--spool-dir" option.
|
||||||
|
|
||||||
export QT=/usr/local/qt4
|
|
||||||
LDFLAGS=-L$QT/lib PKG_CONFIG_PATH=$QT/lib ./configure --enable-gui e_qtmoc="$QT/bin/moc"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Copyright (C) 2001-2008 Graeme Walker <graeme_walker@users.sourceforge.net>. All rights reserved.
|
Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>. All rights reserved.
|
||||||
|
Before Width: | Height: | Size: 7.1 KiB After Width: | Height: | Size: 7.1 KiB |
@ -4,13 +4,13 @@ E-MailRelay User Guide
|
|||||||
What is it?
|
What is it?
|
||||||
-----------
|
-----------
|
||||||
E-MailRelay is a simple store-and-forward message transfer agent and proxy
|
E-MailRelay is a simple store-and-forward message transfer agent and proxy
|
||||||
server. It runs on Unix-like operating systems (including Linux), and on
|
server. It runs on Unix-like operating systems (including Linux and Mac OS X),
|
||||||
Windows.
|
and on Windows.
|
||||||
|
|
||||||
When used as proxy server the E-MailRelay program ("emailrelay") runs in the
|
When used as proxy server the E-MailRelay program ("emailrelay") runs in the
|
||||||
background and accepts e-mail from local e-mail client programs (KMail, Outlook
|
background and accepts e-mail from local e-mail client programs (Thunderbird,
|
||||||
etc.) or from the outside world, using the SMTP protocol. As soon as an e-mail
|
Outlook etc.) or from the outside world, using the SMTP protocol. As soon as an
|
||||||
message is received it is forwarded on to the next SMTP server for onward
|
e-mail message is received it is forwarded on to the next SMTP server for onward
|
||||||
delivery. This becomes more useful when you add in your own message processing:
|
delivery. This becomes more useful when you add in your own message processing:
|
||||||
as each message is received it can be passed one of your programs for editing,
|
as each message is received it can be passed one of your programs for editing,
|
||||||
filtering, encrypting etc.
|
filtering, encrypting etc.
|
||||||
@ -26,8 +26,9 @@ read the spooled messages.
|
|||||||
|
|
||||||
What it's not
|
What it's not
|
||||||
-------------
|
-------------
|
||||||
E-MailRelay is not a routing MTA. It forwards e-mail to a pre-configured SMTP
|
E-MailRelay does not do routing of individual messages; it is not a routing MTA.
|
||||||
server, regardless of any message addressing or DNS redirects.
|
It forwards all e-mail messages to a pre-configured SMTP server, regardless of
|
||||||
|
any message addressing or DNS redirects.
|
||||||
|
|
||||||
E-MailRelay is not a delivery agent. Some programs like "fetchmail" send
|
E-MailRelay is not a delivery agent. Some programs like "fetchmail" send
|
||||||
locally-addressed e-mail to the local SMTP server in order to deliver them to
|
locally-addressed e-mail to the local SMTP server in order to deliver them to
|
||||||
@ -38,54 +39,56 @@ Why use it?
|
|||||||
E-MailRelay is a simple tool that does SMTP. For simple tasks it is likely
|
E-MailRelay is a simple tool that does SMTP. For simple tasks it is likely
|
||||||
to be easier to understand and configure than a more general purpose MTA.
|
to be easier to understand and configure than a more general purpose MTA.
|
||||||
|
|
||||||
|
The code has few dependencies on third-party libraries or run-time environments
|
||||||
|
so it is easy to build and install especially when targeting embedded systems.
|
||||||
|
|
||||||
|
The single-threaded, event-driven design with non-blocking i/o may provide
|
||||||
|
better performance and resource usage than some of the alternatives.
|
||||||
|
|
||||||
E-MailRelay is designed to be policy-free, so that you can implement your own
|
E-MailRelay is designed to be policy-free, so that you can implement your own
|
||||||
policies for message retries, bounces, local mailbox delivery, spam filtering
|
policies for message retries, bounces, local mailbox delivery, spam filtering
|
||||||
etc. through external scripts.
|
etc. through external scripts.
|
||||||
|
|
||||||
It has no dependencies on third-party libraries or run-time environments so it
|
|
||||||
is easy to build and install, and the single-threaded, event-driven design with
|
|
||||||
non-blocking i/o may provide better performance and resource usage than some of
|
|
||||||
the alternatives.
|
|
||||||
|
|
||||||
Typical applications of E-MailRelay include:
|
Typical applications of E-MailRelay include:
|
||||||
* spam filtering and virus checking incoming mail
|
* spam filtering and virus checking incoming mail
|
||||||
* adding digital signatures or legal disclaimers to outgoing mail
|
* adding digital signatures or legal disclaimers to outgoing mail
|
||||||
* doing store-and-forward for outgoing mail across a dial-up Internet connection
|
* store-and-forward for outgoing mail across an intermittent Internet connection
|
||||||
* adding authentication where the existing infrastructure does not support it
|
* adding authentication and encryption where the existing infrastructure does not support it
|
||||||
* simple SMTP proxying on a firewall host or DMZ
|
* taking messages in with SMTP and serving them to local POP clients
|
||||||
* SMTP to POP gateway
|
* giving multiple POP clients independent copies of incoming e-mail
|
||||||
|
* SMTP proxying by running the proxy server on the firewall host
|
||||||
|
|
||||||
Running E-MailRelay
|
Running E-MailRelay
|
||||||
-------------------
|
-------------------
|
||||||
To use E-MailRelay in store-and-forward mode use the "--as-server" switch to
|
To use E-MailRelay in store-and-forward mode use the "--as-server" option to
|
||||||
start the storage daemon in the background, and then trigger delivery of spooled
|
start the storage daemon in the background, and then trigger delivery of spooled
|
||||||
messages by running with the "--as-client" switch and the address of the target
|
messages by running with the "--as-client" option and the address of the target
|
||||||
host.
|
host.
|
||||||
|
|
||||||
For example, to start a storage daemon listening on port 10025 use a command like
|
For example, to start a storage daemon listening on port 10025 use a command
|
||||||
this:
|
like this:
|
||||||
|
|
||||||
emailrelay --as-server --port 10025 --spool-dir /tmp
|
emailrelay --as-server --port 10025 --spool-dir /tmp
|
||||||
|
|
||||||
And then to forward the spooled mail to "smarthost" run something like this:
|
And then to forward the spooled mail to "smarthost" run something like this:
|
||||||
|
|
||||||
emailrelay --as-client smarthost:smtp --spool-dir /tmp
|
emailrelay --as-client smarthost:25 --spool-dir /tmp
|
||||||
|
|
||||||
To get behaviour more like a proxy you can add the "--poll" switch so that
|
To get behaviour more like a proxy you can add the "--poll" option so that
|
||||||
messages are forwarded continuously rather than on-demand. This example starts a
|
messages are forwarded continuously rather than on-demand. This example starts a
|
||||||
store-and-forward server that forwards spooled-up e-mail every hour:
|
store-and-forward server that forwards spooled-up e-mail every hour:
|
||||||
|
|
||||||
emailrelay --as-server --poll 3600 --forward-to smarthost:smtp
|
emailrelay --as-server --poll 3600 --forward-to smarthost:25
|
||||||
|
|
||||||
For a proxy server that forwards each message as it is being received, without
|
For a proxy server that forwards each message as it is being received, without
|
||||||
any delay, you can use the "--as-proxy" mode:
|
any delay, you can use the "--as-proxy" mode:
|
||||||
|
|
||||||
emailrelay --as-proxy smarthost:smtp
|
emailrelay --as-proxy smarthost:25
|
||||||
|
|
||||||
If you want to edit or filter e-mail as it passes through the proxy then specify
|
If you want to edit or filter e-mail as it passes through the proxy then specify
|
||||||
your pre-processor program with the "--filter" switch, something like this:
|
your pre-processor program with the "--filter" option, something like this:
|
||||||
|
|
||||||
emailrelay --as-proxy smarthost:smtp --filter /usr/local/bin/addsig
|
emailrelay --as-proxy smarthost:25 --filter /usr/local/bin/addsig
|
||||||
|
|
||||||
To run E-MailRelay as a POP server without SMTP use "--pop" and "--no-smtp":
|
To run E-MailRelay as a POP server without SMTP use "--pop" and "--no-smtp":
|
||||||
|
|
||||||
@ -94,10 +97,12 @@ To run E-MailRelay as a POP server without SMTP use "--pop" and "--no-smtp":
|
|||||||
The "emailrelay-submit" utility can be used to put messages straight into the
|
The "emailrelay-submit" utility can be used to put messages straight into the
|
||||||
spool directory so that the POP clients can fetch them.
|
spool directory so that the POP clients can fetch them.
|
||||||
|
|
||||||
Note that by default E-MailRelay will always reject connections from remote
|
By default E-MailRelay will always reject connections from remote machines. To
|
||||||
machines. To allow connections from anywhere use the "--remote-clients" switch,
|
allow connections from anywhere use the "--remote-clients" option, but please
|
||||||
but please consider the implications if your machine is connected to the
|
check your firewall settings to make sure this cannot be exploited by spammers.
|
||||||
internet.
|
|
||||||
|
On Windows add "--hidden" to suppress message boxes and also add "--no-daemon"
|
||||||
|
if running as a service.
|
||||||
|
|
||||||
For more information on the command-line options refer to the reference guide
|
For more information on the command-line options refer to the reference guide
|
||||||
or run:
|
or run:
|
||||||
@ -107,206 +112,122 @@ or run:
|
|||||||
Configuration
|
Configuration
|
||||||
-------------
|
-------------
|
||||||
The "emailrelay" program itself is mostly configured through command-line
|
The "emailrelay" program itself is mostly configured through command-line
|
||||||
switches (such as "--port" and "--forward-to"), so there is no single
|
options (such as "--port" and "--forward-to"), so there is no single
|
||||||
definitive configuration file.
|
definitive configuration file.
|
||||||
|
|
||||||
However, in most installations on Unix-like system the E-MailRelay server will
|
However, in most installations on Unix-like system the E-MailRelay server will
|
||||||
be started up by the boot-time script called "emailrelay" in the "/etc/init.d"
|
be started up by the boot-time script called "emailrelay" in the "/etc/init.d"
|
||||||
directory, and this script uses the configuration file "/etc/emailrelay.conf" to
|
directory, and this script uses the configuration file "/etc/emailrelay.conf" to
|
||||||
define the server command-line. Each entry in the configuration file corresponds
|
define the server command-line. Each entry in the configuration file corresponds
|
||||||
to an E-MailRelay command-line switch, so you can edit this file to add and
|
to an E-MailRelay command-line option, so you can edit this file to add and
|
||||||
remove server switches. Refer to the reference guide for a complete list of
|
remove server options. Refer to the reference guide for a complete list of
|
||||||
configuration switches.
|
configuration options.
|
||||||
|
|
||||||
On Windows the installation program creates a startup batch file called
|
On Windows the installation program creates a startup batch file called
|
||||||
"emailrelay-start.bat" that contains all the server command-line switches and
|
"emailrelay-start.bat" that contains all the server command-line options and
|
||||||
you can edit this file to tailor the server configuration. You can also set up
|
you can edit this file to tailor the server configuration. You can also set up
|
||||||
your own shortcuts to the E-MailRelay executable and add and remove command-line
|
your own shortcuts to the E-MailRelay executable and add and remove command-line
|
||||||
switches using the shortcut properties tab.
|
options using the shortcut properties tab.
|
||||||
|
|
||||||
If you are using authentication then you will have to create the text files
|
If you are using authentication then you will have to create the text files
|
||||||
containing your authentication secrets (passwords and password hashes). The
|
containing your authentication secrets (account names, passwords and password
|
||||||
"--server-auth", "--client-auth" and "--pop-auth" command-line switches are used
|
hashes). The "--server-auth", "--client-auth" and "--pop-auth" command-line
|
||||||
to point to these files.
|
options are used to point to these files.
|
||||||
|
|
||||||
There is also a graphical configuration program called "emailrelay-gui" that
|
There is also a graphical configuration program called "emailrelay-gui" that
|
||||||
may be available to help with configuring the system. This is intended to be
|
may be available to help with configuring the system. This is intended to be
|
||||||
used once at installation time (and it is the basis of the self-extracting
|
used once at installation time (and it is the basis of the self-extracting
|
||||||
installer on Windows) but it may also be used to do some simple reconfiguration
|
installer on Windows) but it may also be used to do some simple reconfiguration
|
||||||
of an alreay-installed system.
|
of an alreay-installed system. It takes you through a sequence of configuration
|
||||||
|
pages and then on the last page creates or updates the configuration files, ie.
|
||||||
|
the authentication secrets file and the configuration file "emailrelay.conf"
|
||||||
|
or "emailrelay-start.bat".
|
||||||
|
|
||||||
Logging
|
Logging
|
||||||
-------
|
-------
|
||||||
If the "--log" switch is used then E-MailRelay program issues warnings and error
|
If the "--log" option is used then E-MailRelay program issues warnings and error
|
||||||
messages to the "syslog" system using the "LOG_MAIL" facility. Under Windows it
|
messages to the "syslog" system on Unix or to the Event Viewer's Application log
|
||||||
writes to the "Application" event log.
|
on Windows.
|
||||||
|
|
||||||
The "syslog" system is configured through the "/etc/syslog.conf" file (try
|
On Unix systems you can also redirect the standard error stream to a file,
|
||||||
"man syslog.conf"), and in most cases you will find that "LOG_MAIL" warnings and
|
although you should note that the "--as-server" and "--as-proxy" options
|
||||||
errors are directed to an appropriate log file (perhaps "/var/log/messages").
|
implicitly close the standard error stream soon after startup, so you should
|
||||||
|
replace them with their equivalent options without the "--close-stderr" part.
|
||||||
|
|
||||||
For more verbose logging add the "--verbose" switch. If this becomes difficult
|
On Windows you can log to a file by adding the "--log-file" option to the
|
||||||
to read via the system log (especially on Windows) then try logging to the
|
command-line in the startup batch file. The installation process creates a
|
||||||
standard error stream and redirect that to a file. Bear in mind that you will
|
second startup batch file that contains this option, so check for that first.
|
||||||
need have to replace "--as-server" with "--log" and "--as-proxy" with
|
|
||||||
"--poll 0 --forward-to" since the "--as-server" and "--as-proxy" switches
|
|
||||||
implicitly close the standard error stream soon after startup.
|
|
||||||
|
|
||||||
emailrelay --log --verbose > emailrelay.log 2>&1
|
For more verbose logging add the "--verbose" option to the command-line.
|
||||||
|
|
||||||
Troubleshooting
|
|
||||||
---------------
|
|
||||||
A useful technique for troubleshooting SMTP problems is to telnet into the
|
|
||||||
remote server and drive the SMTP protocol manually. Telnet can be told to
|
|
||||||
connect to the remote SMTP port by putting the port number (25) on the command
|
|
||||||
line after the remote hostname, for example: "telnet smtp.myisp.net 25".
|
|
||||||
|
|
||||||
Once connected you should get a startup banner from the server, which may tell
|
|
||||||
you what server software you have connected to. From there you should type
|
|
||||||
something like "EHLO myhost.mydomain". The response to the EHLO command should
|
|
||||||
contain a list of SMTP extensions which the server software supports. If this
|
|
||||||
includes the AUTH extension then the set of supported authentication mechanisms
|
|
||||||
(such as LOGIN, CRAM-MD5 etc.) will be listed on the same line.
|
|
||||||
|
|
||||||
After the EHLO response you should type "MAIL FROM:<myhost.mydomain>", retaining
|
|
||||||
the angle brackets but substituting your own address. If this is accepted then
|
|
||||||
enter a "RCPT TO:<me@myhost.mydomain>" command to say where the e-mail is going.
|
|
||||||
(Again, retain the angle brackets but substitute an appropriate address.)
|
|
||||||
|
|
||||||
After one or more "RCPT TO" commands you should enter the "DATA" command,
|
|
||||||
followed by the message content. The message content should include an RFC822
|
|
||||||
header, followed by a blank line, followed by the message text. For testing
|
|
||||||
purposes you might get away without having any header/body structure at all, but
|
|
||||||
to do things properly you should have at least a "To:" line, a "From:" line and
|
|
||||||
a "Subject:" line in the header.
|
|
||||||
|
|
||||||
At the end of the message text type a "." on a line of its own. At that point
|
|
||||||
the message should get dispatched, and eventually end up in your in-box in the
|
|
||||||
usual way (assuming you put your own address in the "RCPT TO" command).
|
|
||||||
|
|
||||||
The following is an example SMTP dialogue, with ">>" and "<<" marks added to
|
|
||||||
show what was typed and what was received:
|
|
||||||
>> telnet smtp.myisp.net 25
|
|
||||||
<< Trying 12.34.56.78...
|
|
||||||
<< Connected to smtp.myisp.net.
|
|
||||||
<< Escape character is '^]'.
|
|
||||||
<< 220 mail12.myisp.net ESMTP Exim 3.13 #0 Sat, 17 Nov 2001 16:22:39 +0000
|
|
||||||
>> EHLO myhost.myisp.net
|
|
||||||
<< 250-mail12.myisp.net Hello modem-185.myisp.net [12.34.56.78]
|
|
||||||
<< 250-SIZE 104857600
|
|
||||||
<< 250-PIPELINING
|
|
||||||
<< 250 HELP
|
|
||||||
>> MAIL FROM:<me@myhost.myisp.net>
|
|
||||||
<< 250 <me@myhost.myisp.net> is syntactically correct
|
|
||||||
>> RCPT TO:<me@myhost.myisp.net>
|
|
||||||
<< 250 <me@myhost.myisp.net> verified
|
|
||||||
>> DATA
|
|
||||||
<< 354 Enter message, ending with "." on a line by itself
|
|
||||||
>> To: me@myhost.myisp.net
|
|
||||||
>> From: me@myhost.myisp.net
|
|
||||||
>> Subject: test
|
|
||||||
>>
|
|
||||||
>> Test message.
|
|
||||||
>> .
|
|
||||||
<< 250 OK id=1658Fp-0000Il-00
|
|
||||||
>> QUIT
|
|
||||||
<< 221 mail12.myisp.net closing connection
|
|
||||||
<< Connection closed by foreign host.
|
|
||||||
|
|
||||||
If you get some sort of "access denied" errors when talking to a server which
|
|
||||||
does not support the AUTH extension, then your ISP may be using POP-before-SMTP
|
|
||||||
authentication. In this scheme you are required to conduct an authenticated POP
|
|
||||||
or IMAP dialogue before you try to use SMTP. The POP/IMAP dialogue is done
|
|
||||||
separately from the SMTP connection, but bear in mind that there might be a time
|
|
||||||
limit so that your SMTP connection has to be made soon after the POP/IMAP
|
|
||||||
authentication. You should be able to use an e-mail client program, or something
|
|
||||||
like "fetchmail" to do the POP/IMAP authentication.
|
|
||||||
|
|
||||||
If you can send mail messages sucessfully using telnet, then you should look at
|
|
||||||
the E-MailRelay "--verbose" log output and compare what you do interactively
|
|
||||||
with what the program does.
|
|
||||||
|
|
||||||
Preventing open mail relay
|
Preventing open mail relay
|
||||||
--------------------------
|
--------------------------
|
||||||
If you are running E-MailRelay as a server with a permanent connection to the
|
If you are running E-MailRelay as a server with a permanent connection to the
|
||||||
Internet it is important to prevent open mail relay because this can be
|
Internet it is important to prevent open mail relay because this can be
|
||||||
exploited by spammers. By default open mail relaying is not possible because
|
exploited by spammers and get you into trouble with your ISP. By default open
|
||||||
E-MailRelay does not accept IP connections from remote clients. However, if you
|
mail relaying is not possible because E-MailRelay does not accept IP connections
|
||||||
use the "--remote-clients" switch then you need to be more careful.
|
from remote clients. However, if you use the "--remote-clients" option then you
|
||||||
|
need to be more careful.
|
||||||
|
|
||||||
If the only required access to the E-MailRelay server is from a local network
|
If the only required access to the E-MailRelay server is from a local network
|
||||||
and not from the Internet then you can use the "--interface" switch to listen
|
and not from the Internet then just set up your firewall to block incoming
|
||||||
for incoming connections only on the local network interface. You should also
|
connections on ports 25 (SMTP) and 110 (POP) and also use the "--interface"
|
||||||
use a firewall in this scenario.
|
option on the E-MailRelay command-line so that it only listens for incoming
|
||||||
|
connections on the local network.
|
||||||
|
|
||||||
Another option is to require all clients to authenticate by using the
|
If you do need to accept connections from the Internet then you should require
|
||||||
"--server-auth" switch. If you then need local clients, such as your own e-mail
|
all clients to authenticate themselves by using the "--server-auth" option on
|
||||||
client program, to connect without authentication then you must put those
|
the E-MailRelay command-line. If you also want local clients running on your
|
||||||
trusted IP addresses in the secrets file with an authentication mechanism of
|
internal network to be able to bypass this authentication then you can put those
|
||||||
"NONE". Refer to the reference guide for more information.
|
trusted IP addresses in the E-MailRelay secrets file with an authentication
|
||||||
|
mechanism of "NONE". Refer to the reference guide for more information.
|
||||||
Taking it one stage further, you may want to allow connections from the Internet
|
|
||||||
without authentication but only allow them to send mail to local users. In other
|
|
||||||
words you want to allow anyone to deliver e-mail to your system but not allow
|
|
||||||
them to spam someone else. You can do this by requiring authentication with the
|
|
||||||
"--server-auth" switch, then exempt everyone from mandatory authentication with
|
|
||||||
"NONE server *.*.*.* x" line in the secrets file, and finally have an address
|
|
||||||
verifier script ("--verifier") which rejects remote recipient addresses if the
|
|
||||||
client has not authenticated. Again, refer to the reference guide for further
|
|
||||||
details.
|
|
||||||
|
|
||||||
Running as a POP server
|
Running as a POP server
|
||||||
-----------------------
|
-----------------------
|
||||||
E-MailRelay can run as a POP server so that e-mail client programs can retrieve
|
E-MailRelay can run as a POP server so that e-mail client programs can retrieve
|
||||||
messages from the spool directory directly (although it is not a good idea to
|
messages from the E-MailRelay spool directory directly.
|
||||||
run E-MailRelay as a POP server if also forwarding messages by SMTP).
|
|
||||||
|
|
||||||
To allow POP access to spooled messages use a command-line something like this:
|
To allow POP access to spooled messages use a command-line something like this:
|
||||||
|
|
||||||
emailrelay --as-server --pop --pop-auth /etc/emailrelay.auth
|
emailrelay --as-server --pop --pop-auth=/etc/emailrelay.auth
|
||||||
|
|
||||||
You will need to create the authentication secrets file ("/etc/emailrelay.auth"
|
You will need to create the authentication secrets file ("emailrelay.auth" in
|
||||||
in this example) containing usernames and passwords. A simple example would look
|
this example) containing usernames and passwords. A simple example would look
|
||||||
like this:
|
like this:
|
||||||
|
|
||||||
APOP server user1 password1
|
server APOP user1 password1
|
||||||
APOP server user2 password2
|
server APOP user2 password2
|
||||||
|
|
||||||
If you need to serve up messages to more than one POP client consider using the
|
It can sometimes be useful to serve up the same e-mail messages to multiple POP
|
||||||
"--pop-by-name" option with a "--filter" script that moves messages into the
|
clients. For example, you might use several e-mail clients on your local network
|
||||||
appropriate sub-directory. The "emailrelay-filter-copy" program is designed
|
and you would like to see your mail on all of them equally. The "--pop-by-name"
|
||||||
to be used in this way: when a message is received over SMTP it copies it
|
option is intended to be used in this scenario; each e-mail client sees its own
|
||||||
into all available sub-directories for collection by multiple POP clients.
|
copy of the e-mail messages, stored in its own sub-directory of the main spool
|
||||||
|
directory. The name of the sub-directory is simply the name that the client uses
|
||||||
|
to authenticate with the E-MailRelay server. You just need to create the
|
||||||
|
sub-directory for each client and then specify "emailrelay-filter-copy"
|
||||||
|
as the "--filter" program.
|
||||||
|
|
||||||
Refer to the reference guide for more information.
|
Refer to the reference guide for more information.
|
||||||
|
|
||||||
Triggering delivery over dial-up
|
Triggering delivery over dial-up
|
||||||
--------------------------------
|
--------------------------------
|
||||||
If you are using E-MailRelay to store and forward e-mail over a dial-up link to
|
If you are using E-MailRelay on Unix to store and forward e-mail over an
|
||||||
the Internet, then you will need to set things up so that the dialler tells
|
intermittent link to Internet such as dial-up or wireless networking, then you
|
||||||
E-MailRelay when to start forwarding.
|
might need to set things up so that the network tells E-MailRelay when to start
|
||||||
|
forwarding e-mail.
|
||||||
|
|
||||||
In most Unix-like systems a "ppp" daemon calls the script "/etc/ppp/ip-up" when
|
On Linux systems you should find that there are special directories where you
|
||||||
it has successfully established a dial-up link to your ISP. This script will
|
can install your own hook scripts that are called whenever a dial-up or wireless
|
||||||
probably set up IP routes, update the DNS configuration, initialise a firewall,
|
network connection is established. For dial-up this might be "/etc/ppp/ip-up.d",
|
||||||
run "fetchmail" and "sendmail", etc. It may also call out to another script,
|
and for wireless "/etc/network/if-up.d".
|
||||||
"ip-up.local" which is available for you to put stuff into without having to
|
|
||||||
edit "ip-up" itself.
|
|
||||||
|
|
||||||
The simplest approach for editing "ip-up" is to look for a "sendmail -q" line.
|
Just create a two-line script like this in the relevant directory:
|
||||||
If you find "sendmail -q" then it should be sufficient to replace it with this:
|
|
||||||
|
|
||||||
emailrelay --as-client <myisp>:smtp
|
|
||||||
|
|
||||||
where you substitute your ISP's SMTP server address for <myisp>.
|
|
||||||
|
|
||||||
Or if your "ip-up" calls out to "ip-up.local" then create a two-line
|
|
||||||
"/etc/ppp/ip-up.local" script like this:
|
|
||||||
|
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
exec /usr/local/sbin/emailrelay --as-client <myisp>:smtp
|
exec /usr/local/sbin/emailrelay --as-client=myisp.net:smtp
|
||||||
|
|
||||||
If you create "ip-up.local" yourself remember to make it executable.
|
and make it executable using "chmod +x".
|
||||||
|
|
||||||
Notification of failed e-mails
|
Notification of failed e-mails
|
||||||
------------------------------
|
------------------------------
|
||||||
@ -318,22 +239,17 @@ You should check for ".bad" envelope files in the E-MailRelay spool directory
|
|||||||
from time to time.
|
from time to time.
|
||||||
|
|
||||||
If you want failed e-mails to be retried a few times you can run the
|
If you want failed e-mails to be retried a few times you can run the
|
||||||
"emailrelay-resubmit.sh" script periodically, perhaps from "cron". This script
|
"emailrelay-resubmit" script periodically. This script simply removes the ".bad"
|
||||||
simply removes the ".bad" suffix from files in the spool directory, as long as
|
suffix from files in the spool directory, as long as they have not been retried
|
||||||
they have not been retried too many times already.
|
too many times already.
|
||||||
|
|
||||||
If you are using E-MailRelay to forward outgoing e-mails then you can also get
|
|
||||||
failed e-mails to bounce back to your in-tray by running the
|
|
||||||
"emailrelay-notify.sh" script periodically as "root", although this does require
|
|
||||||
"procmail" to act as a delivery agent.
|
|
||||||
|
|
||||||
Usage patterns
|
Usage patterns
|
||||||
--------------
|
--------------
|
||||||
The simplest ways of using E-MailRelay for SMTP are as a proxy or as a
|
The simplest ways of using E-MailRelay for SMTP are as a proxy or for
|
||||||
store-and-forward MTA, but many other configurations are possible. For example,
|
store-and-forward, but many other configurations are possible. For example,
|
||||||
multiple E-MailRelay servers can run in parallel sharing the same spool directory,
|
multiple E-MailRelay servers can run in parallel sharing the same spool
|
||||||
or they can be chained in series to that e-mail messages get transferred
|
directory, or they can be chained in series to that e-mail messages get
|
||||||
from one to the next.
|
transferred from one to the next.
|
||||||
|
|
||||||
Remember that messages can be introduced directly into the E-MailRelay spool
|
Remember that messages can be introduced directly into the E-MailRelay spool
|
||||||
directory using the "emailrelay-submit" utility, and they can be moved out again
|
directory using the "emailrelay-submit" utility, and they can be moved out again
|
||||||
@ -348,7 +264,7 @@ of the main spool directory. If messages are coming in over SMTP then you could
|
|||||||
install an SMTP "--filter" script to move each new message into the relevant
|
install an SMTP "--filter" script to move each new message into the relevant
|
||||||
sub-directory based on the message addressing.
|
sub-directory based on the message addressing.
|
||||||
|
|
||||||
For more ideas check out the "--client-filter" and "--poll" switches, and don't
|
For more ideas check out the "--client-filter" and "--poll" options, and don't
|
||||||
overlook the administration and control interface ("--admin") which you can use
|
overlook the administration and control interface ("--admin") which you can use
|
||||||
to receive notification of message arrival or force message forwarding at any
|
to receive notification of message arrival or force message forwarding at any
|
||||||
time.
|
time.
|
||||||
@ -361,70 +277,59 @@ to mark or reject potential spam.
|
|||||||
To get E-MailRelay to reject spam outright you can just use "spamassassin -e" as
|
To get E-MailRelay to reject spam outright you can just use "spamassassin -e" as
|
||||||
your E-MailRelay "--filter" program:
|
your E-MailRelay "--filter" program:
|
||||||
|
|
||||||
emailrelay --as-server --filter "/usr/bin/spamassassin --exit-code"
|
emailrelay --as-server --filter="/usr/bin/spamassassin --exit-code"
|
||||||
|
|
||||||
Or on Windows:
|
Or on Windows:
|
||||||
|
|
||||||
emailrelay --as-server --filter "c:/Program\ Files/perl/site/bin/spamassassin.bat --exit-code"
|
emailrelay --as-server --filter="c:/Program\ Files/perl/site/bin/spamassassin.bat --exit-code"
|
||||||
|
|
||||||
To get spam messages identified by SpamAssassin but still pass through the
|
To get spam messages identified by SpamAssassin but still pass through the
|
||||||
E-MailRelay system you will have to have a small "--filter" script to collect
|
E-MailRelay system you will have to have a small "--filter" script to collect
|
||||||
the output from the "spamassassin" program and write it back into the
|
the output from the "spamassassin" program and write it back into the
|
||||||
E-MailRelay content file.
|
E-MailRelay content file.
|
||||||
|
|
||||||
Your "--filter" shell script could look something like this:
|
On Unix your "--filter" shell script could look something like this:
|
||||||
|
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
spamassassin "$1" > "$1.tmp"
|
spamassassin "$1" > "$1.tmp"
|
||||||
mv "$1.tmp" "$1"
|
mv "$1.tmp" "$1"
|
||||||
exit 0
|
exit 0
|
||||||
|
|
||||||
Or an equivalent batch script on Windows:
|
On Windows an equivalent batch script would be:
|
||||||
|
|
||||||
c:\Program Files\perl\site\bin\spamassassin.bat %1 > %1.tmp
|
c:\Program Files\perl\site\bin\spamassassin.bat %1 > %1.tmp
|
||||||
ren %1.tmp %1
|
ren %1.tmp %1
|
||||||
exit 0
|
exit 0
|
||||||
|
|
||||||
You may need to set the "--filter-timeout" switch to control how long
|
Or you could adapt the "emailrelay-runperl.js" example script.
|
||||||
E-MailRelay waits for the spam analysis to complete.
|
|
||||||
|
|
||||||
You could also consider doing spam filtering off-line, completely independent
|
|
||||||
of any SMTP activity, by having two E-MailRelay processes chained together
|
|
||||||
working off two spool directories:
|
|
||||||
|
|
||||||
emailrelay --as-server --spool-dir /tmp/spool-in --poll 1 --forward-to localhost:10025
|
|
||||||
emailrelay --as-server --spool-dir /tmp/spool-out --port 10025 --filter /tmp/myspamfilter
|
|
||||||
|
|
||||||
Here the first E-MailRelay server accepts incoming mail straight into its spool
|
|
||||||
directory and it uses a "--poll" timer to independently forward spooled messages
|
|
||||||
to the second server running on port 10025. The second server runs the spam
|
|
||||||
filter as each message is received.
|
|
||||||
|
|
||||||
There is also an experimental mechanism where E-MailRelay can talk direcly to
|
|
||||||
the SpamassAssin "spamd" network deamon using a special form of the "--filter"
|
|
||||||
switch:
|
|
||||||
|
|
||||||
emailrelay --as-server --filter spam:localhost:783
|
|
||||||
|
|
||||||
This might be useful if spam filtering is creating a bottleneck in the
|
|
||||||
E-MailRelay server.
|
|
||||||
|
|
||||||
Google mail
|
Google mail
|
||||||
-----------
|
-----------
|
||||||
To send mail via Google mail's SMTP gateway you will need to create a client
|
To send mail via Google mail's SMTP gateway you will need to create a client
|
||||||
secrets file containing your account details and enable TLS support in
|
secrets file containing your account details and also enable TLS/SSL support in
|
||||||
E-MailRelay by using the "--client-tls" switch.
|
E-MailRelay by using the "--client-tls" option.
|
||||||
|
|
||||||
The secrets file should contain one line of text something like this:
|
The secrets file should contain one line of text something like this:
|
||||||
|
|
||||||
login client myname@gmail.com mypassword
|
login client myname@gmail.com mypassword
|
||||||
|
|
||||||
Reference this file using "--client-auth" on the E-MailRelay command-line and
|
Reference this file using "--client-auth" on the E-MailRelay command-line and
|
||||||
also add in the "--client-tls" switch:
|
also add in the "--client-tls" option:
|
||||||
|
|
||||||
emailrelay --as-proxy smtp.gmail.com:587 --client-tls --client-auth /etc/emailrelay.auth ...
|
emailrelay --as-proxy=smtp.gmail.com:587 --client-tls --client-auth=/etc/emailrelay.auth ...
|
||||||
|
|
||||||
|
Connection tunnelling
|
||||||
|
---------------------
|
||||||
|
E-MailRelay can send mail out via a SOCKS v4 proxy, which makes it easy to route
|
||||||
|
your mail through an encrypted tunnel using "ssh -N -D" or via the Tor
|
||||||
|
anonymising network.
|
||||||
|
|
||||||
|
For example, this will run an E-MailRelay proxy on port 1025 that routes via a
|
||||||
|
local tor server on port 9050 to the mail server at example.com:
|
||||||
|
|
||||||
|
emailrelay --port 1025 --as-proxy=example.com:25@localhost:9050 --domain=anonymous.org --connection-timeout=300
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Copyright (C) 2001-2008 Graeme Walker <graeme_walker@users.sourceforge.net>. All rights reserved.
|
Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>. All rights reserved.
|
||||||
|
BIN
doc/valid-html401.png
Normal file
After Width: | Height: | Size: 2.9 KiB |
116
doc/windows.txt
@ -1,82 +1,108 @@
|
|||||||
E-MailRelay Windows
|
E-MailRelay Windows
|
||||||
===================
|
===================
|
||||||
|
|
||||||
|
Command-line options
|
||||||
|
--------------------
|
||||||
|
There are some differences in the command-line options when running the
|
||||||
|
E-MailRelay server on Windows. These include:
|
||||||
|
* The "--syslog" option refers to the Windows Event Viewer's Application log.
|
||||||
|
* The "--no-daemon" option is used to disable the icon in the system tray.
|
||||||
|
* The "--hidden" option hides all windows and suppresses message boxes (requires "--no-deamon").
|
||||||
|
* The "--peer-lookup" option can be used to add extra information to envelope files for local clients.
|
||||||
|
|
||||||
Setup program
|
Setup program
|
||||||
-------------
|
-------------
|
||||||
Installing E-MailRelay on Windows should be straightforward if you have
|
Installing E-MailRelay on Windows should be straightforward if you have the
|
||||||
self-extracting archive program "emailrelay-setup.exe". Make sure that the
|
setup program "emailrelay-setup.exe" and its associated "payload" data file.
|
||||||
setup program is in a writeable directory with plenty of space on the disk
|
|
||||||
because when you run it it will extract an installation GUI program plus
|
|
||||||
dependent DLLs in into the same directory.
|
|
||||||
|
|
||||||
The installation GUI will take you through the installation options and then
|
Run "emailrelay-setup.exe" as an administrator if you are going to be installing
|
||||||
install the run-time files into your chosen directory.
|
into sensitive directories like "Program Files". If you don't want to run it as
|
||||||
|
an administrator then you will have to rename to (eg.) "emailrelay-gui.exe" to
|
||||||
|
avoid triggering the UAC mechanism.
|
||||||
|
|
||||||
|
The setup GUI will take you through the installation options and then install
|
||||||
|
the run-time files into your chosen locations.
|
||||||
|
|
||||||
Manual installation
|
Manual installation
|
||||||
-------------------
|
-------------------
|
||||||
In summary, the manual installation process for Windows for when you do not have
|
In summary, the manual installation process for Windows for when you do not have
|
||||||
the self-extracting setup program, is as follows:
|
the self-extracting setup program, is as follows:
|
||||||
* Create a new program directory "Program Files\emailrelay"
|
* Create a new program directory "c:\Program Files\emailrelay"
|
||||||
* Unzip into "Program Files\emailrelay"
|
* Copy the packaged files into "Program Files\emailrelay"
|
||||||
* Create a new spool directory "<windir>\spool\emailrelay"
|
* Create a new spool directory "c:\windows\system32\spool\emailrelay"
|
||||||
* Create a new text file, eg. "c:\emailrelay.auth", to contain account details
|
* Create a new text file, eg. "c:\emailrelay.auth", to contain account details
|
||||||
* Add your ISP account details to "emailrelay.auth" with a line like "login client myaccount mypassword"
|
* Add your account details to "emailrelay.auth" with a line like "client login myaccount mypassword"
|
||||||
* Drag "emailrelay.exe" onto the desktop to create a shortcut for the server.
|
* Drag "emailrelay.exe" onto the desktop to create a shortcut for the server.
|
||||||
|
* Add "--as-server --verbose" to the server shortcut properties in the "target" box.
|
||||||
* Drag again to create a shortcut for the forwarding client.
|
* Drag again to create a shortcut for the forwarding client.
|
||||||
* Add "--as-server --verbose" to the server shortcut properties.
|
* Add "--as-client myisp.net:smtp --hidden --client-auth c:\emailrelay.auth" to the client shortcut.
|
||||||
* Add "--as-client myisp.net:smtp --hidden --client-auth c:/emailrelay.auth" to the client shortcut.
|
|
||||||
|
|
||||||
Move shortcuts to "Startup" folders as necessary.
|
Move shortcuts to "Startup" folders as necessary.
|
||||||
|
|
||||||
Running as a service
|
Running as a service
|
||||||
--------------------
|
--------------------
|
||||||
To manually install E-MailRelay as a service so that it starts up automatically
|
If you are installing manually you can set up E-MailRelay as a service so that
|
||||||
at boot-time you must first create a one-line batch file called
|
it starts up automatically at boot-time. You must first have a one-line batch
|
||||||
"emailrelay-start.bat" in the main E-MailRelay directory containing
|
file called "emailrelay-start.bat" in the main E-MailRelay directory containing
|
||||||
the full E-MailRelay server command-line. Then run "emailrelay-service --install"
|
the full E-MailRelay server command-line. Then just run
|
||||||
to install the service.
|
"emailrelay-service --install" to install the service.
|
||||||
|
|
||||||
When the E-MailRelay server is run in this way the "--no-daemon" and "--hidden"
|
When the E-MailRelay server is run in this way the "--no-daemon" and "--hidden"
|
||||||
switches are added automatically to whatever is in the "emailrelay-start" batch
|
options are added automatically to whatever is in the "emailrelay-start" batch
|
||||||
file, so that there is no user interface. (The "--no-daemon" switch on Windows
|
file so that there is no user interface. (The "--no-daemon" option changes the
|
||||||
changes the interface from using the system-tray to using a normal window, and
|
interface from using the system-tray to using a normal window, and the
|
||||||
the "--hidden" switch suppresses the window and any message boxes.)
|
"--hidden" option suppresses the window and any message boxes.)
|
||||||
|
|
||||||
Note that the batch file and the main E-MailRelay executable must be in the same
|
Note that the batch file and the main E-MailRelay executable must be in the same
|
||||||
directory.
|
directory; the service wrapper reads the batch file in order to assemble the
|
||||||
|
correct command-line for running the E-MailRelay server, so it needs to know
|
||||||
|
where to find it.
|
||||||
|
|
||||||
If you need to run multiple E-MailRelay services then pass a unique service name
|
If you need to run multiple E-MailRelay services then pass a unique service name
|
||||||
on the "emailrelay-service --install <name>" command-line. This name is used to
|
and display name on the "emailrelay-service --install <name> <display-name>"
|
||||||
derive the name of the "<name>-start.bat" batch file that contains the
|
command-line.
|
||||||
E-MailRelay server's command-line switches so you will need to create this too.
|
|
||||||
|
The service name you give is used to derive the name of the "<name>-start.bat"
|
||||||
|
batch file that contains the E-MailRelay server's command-line options, so you
|
||||||
|
will need to create that first.
|
||||||
|
|
||||||
|
For example:
|
||||||
|
copy emailrelay-start.bat emailrelay-client-start.bat
|
||||||
|
edit emailrelay-client-start.bat
|
||||||
|
emailrelay-service --install emailrelay-client "E-MailRelay Client"
|
||||||
|
copy emailrelay-start.bat emailrelay-server-start.bat
|
||||||
|
edit emailrelay-server-start.bat
|
||||||
|
emailrelay-service --install emailrelay-server "E-MailRelay Server"
|
||||||
|
|
||||||
Diagnostics
|
Diagnostics
|
||||||
-----------
|
-----------
|
||||||
E-MailRelay normally writes errors and warnings into the system event log, which
|
E-MailRelay normally writes errors and warnings into the Windows Event Log,
|
||||||
you can view by running "eventvwr.exe". You can increase the verbosity by adding
|
which you can view by running "eventvwr.exe" or going to
|
||||||
the "--verbose" switch to the E-MailRelay command-line, typically by editing the
|
"ControlPanel"->"SystemAndSecurity"->"AdministrativeTools"->"EventViewer"; from
|
||||||
"emailrelay-start.bat" batch script.
|
there look under "Windows Logs" and "Application".
|
||||||
|
|
||||||
The E-MailRelay server also logs to the standard error stream. However, the
|
You can increase the verbosity of the logging by adding the "--verbose" option
|
||||||
"--as-server" and "--as-proxy" switches implicitly incorporate "--close-stderr"
|
to the E-MailRelay command-line, typically by editing the "emailrelay-start.bat"
|
||||||
so with these switches the standard error logging will stop soon after startup.
|
batch script.
|
||||||
|
|
||||||
To get continuous logging to a log file you should replace "--as-server" with
|
Telnet
|
||||||
"--log" and "--as-proxy" with "--poll 0 --forward-to" and then use "2>" to
|
------
|
||||||
redirect the standard error stream, eg:
|
If you want to test E-MailRelay using telnet (as described elsewhere) then you
|
||||||
|
might need to enable the Windows telnet client using
|
||||||
"c:\program files\emailrelay\emailrelay.exe" --log -v -L ... > c:\temp.out 2>&1
|
"ControlPanel"->"ProgramsAndFeatures"->"TurnWindowsFeaturesOnAndOff".
|
||||||
|
|
||||||
Building from source
|
Building from source
|
||||||
--------------------
|
--------------------
|
||||||
E-MailRelay can be compiled using Microsoft Visual Studio C++ (MSVC) 6 or MinGW,
|
E-MailRelay can be compiled using various versions of Microsoft Visual Studio
|
||||||
although the installation/configuration GUI can only be built with MinGW because
|
C++ (MSVC) or MinGW.
|
||||||
of its dependence on Qt.
|
|
||||||
|
|
||||||
There is a Visual Studio workspace file for MSVC 6 in the "src" directory. For
|
A Visual Studio "solution" for MSVC 2012 is provided in the "src" directory to
|
||||||
MinGW please follow the guidelines in "mingw-common.mak" which is also in the
|
build the main E-MailRelay executable, although it does not include a project
|
||||||
"src" directory.
|
for the Qt-based installation/configuration GUI.
|
||||||
|
|
||||||
|
For a complete build that includes the E-MailRelay GUI use MinGW, following the
|
||||||
|
instructions in "src/mingw-common.mak" and "doc/developer.txt".
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Copyright (C) 2001-2008 Graeme Walker <graeme_walker@users.sourceforge.net>. All rights reserved.
|
Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>. All rights reserved.
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
/* End PBXAggregateTarget section */
|
/* End PBXAggregateTarget section */
|
||||||
|
|
||||||
/* Begin PBXBuildFile section */
|
/* Begin PBXBuildFile section */
|
||||||
|
EE1753D616B882A100575457 /* genvironment_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE1753D516B882A100575457 /* genvironment_unix.cpp */; };
|
||||||
EE486FEF0D3E3EA900AB4CC6 /* dir.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE486FCA0D3E3EA900AB4CC6 /* dir.cpp */; };
|
EE486FEF0D3E3EA900AB4CC6 /* dir.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE486FCA0D3E3EA900AB4CC6 /* dir.cpp */; };
|
||||||
EE486FF20D3E3EA900AB4CC6 /* gdialog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE486FD00D3E3EA900AB4CC6 /* gdialog.cpp */; };
|
EE486FF20D3E3EA900AB4CC6 /* gdialog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE486FD00D3E3EA900AB4CC6 /* gdialog.cpp */; };
|
||||||
EE486FF40D3E3EA900AB4CC6 /* gpage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE486FD40D3E3EA900AB4CC6 /* gpage.cpp */; };
|
EE486FF40D3E3EA900AB4CC6 /* gpage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE486FD40D3E3EA900AB4CC6 /* gpage.cpp */; };
|
||||||
@ -34,11 +35,15 @@
|
|||||||
EE4870560D3E529100AB4CC6 /* moc_gdialog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE4870530D3E529100AB4CC6 /* moc_gdialog.cpp */; };
|
EE4870560D3E529100AB4CC6 /* moc_gdialog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE4870530D3E529100AB4CC6 /* moc_gdialog.cpp */; };
|
||||||
EE4870570D3E529100AB4CC6 /* moc_gpage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE4870540D3E529100AB4CC6 /* moc_gpage.cpp */; };
|
EE4870570D3E529100AB4CC6 /* moc_gpage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE4870540D3E529100AB4CC6 /* moc_gpage.cpp */; };
|
||||||
EE4870580D3E529100AB4CC6 /* moc_pages.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE4870550D3E529100AB4CC6 /* moc_pages.cpp */; };
|
EE4870580D3E529100AB4CC6 /* moc_pages.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE4870550D3E529100AB4CC6 /* moc_pages.cpp */; };
|
||||||
|
EE529995184D5F4200AAD1FE /* unpack.c in Sources */ = {isa = PBXBuildFile; fileRef = EE486FEC0D3E3EA900AB4CC6 /* unpack.c */; };
|
||||||
|
EE52999B184D5FF900AAD1FE /* gregister_mac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE52999A184D5FF900AAD1FE /* gregister_mac.cpp */; };
|
||||||
|
EEBDCC1216A6040100BDFB44 /* mapfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EEBDCC0A16A6040100BDFB44 /* mapfile.cpp */; };
|
||||||
|
EEBDCC1316A6040100BDFB44 /* pointer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EEBDCC0C16A6040100BDFB44 /* pointer.cpp */; };
|
||||||
|
EEBDCC1816A604AD00BDFB44 /* gstrings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EEBDCC1716A604AD00BDFB44 /* gstrings.cpp */; };
|
||||||
EEC342C10D50E0BD00DD9918 /* boot_mac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EEC342BF0D50E0BD00DD9918 /* boot_mac.cpp */; };
|
EEC342C10D50E0BD00DD9918 /* boot_mac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EEC342BF0D50E0BD00DD9918 /* boot_mac.cpp */; };
|
||||||
EEC342C20D50E0BD00DD9918 /* dir_mac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EEC342C00D50E0BD00DD9918 /* dir_mac.cpp */; };
|
EEC342C20D50E0BD00DD9918 /* dir_mac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EEC342C00D50E0BD00DD9918 /* dir_mac.cpp */; };
|
||||||
EEC342C60D50E0D800DD9918 /* glink_mac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EEC342C30D50E0D800DD9918 /* glink_mac.cpp */; };
|
EEC342C60D50E0D800DD9918 /* glink_mac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EEC342C30D50E0D800DD9918 /* glink_mac.cpp */; };
|
||||||
EEC342C80D50E0D800DD9918 /* state.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EEC342C50D50E0D800DD9918 /* state.cpp */; };
|
EEC342C80D50E0D800DD9918 /* state.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EEC342C50D50E0D800DD9918 /* state.cpp */; };
|
||||||
EEC342E80D50F68600DD9918 /* guistart.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EEC342C40D50E0D800DD9918 /* guistart.cpp */; };
|
|
||||||
EEC342FA0D50F72800DD9918 /* unpackmain.c in Sources */ = {isa = PBXBuildFile; fileRef = EEC342F90D50F72800DD9918 /* unpackmain.c */; };
|
EEC342FA0D50F72800DD9918 /* unpackmain.c in Sources */ = {isa = PBXBuildFile; fileRef = EEC342F90D50F72800DD9918 /* unpackmain.c */; };
|
||||||
EEC342FC0D50F73900DD9918 /* unpack.c in Sources */ = {isa = PBXBuildFile; fileRef = EE486FEC0D3E3EA900AB4CC6 /* unpack.c */; };
|
EEC342FC0D50F73900DD9918 /* unpack.c in Sources */ = {isa = PBXBuildFile; fileRef = EE486FEC0D3E3EA900AB4CC6 /* unpack.c */; };
|
||||||
/* End PBXBuildFile section */
|
/* End PBXBuildFile section */
|
||||||
@ -81,6 +86,7 @@
|
|||||||
|
|
||||||
/* Begin PBXFileReference section */
|
/* Begin PBXFileReference section */
|
||||||
8DD76F6C0486A84900D96B5E /* emailrelay-gui */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "emailrelay-gui"; sourceTree = BUILT_PRODUCTS_DIR; };
|
8DD76F6C0486A84900D96B5E /* emailrelay-gui */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "emailrelay-gui"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
|
EE1753D516B882A100575457 /* genvironment_unix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = genvironment_unix.cpp; path = src/glib/genvironment_unix.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
EE486FC90D3E3EA900AB4CC6 /* boot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = boot.h; sourceTree = "<group>"; };
|
EE486FC90D3E3EA900AB4CC6 /* boot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = boot.h; sourceTree = "<group>"; };
|
||||||
EE486FCA0D3E3EA900AB4CC6 /* dir.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dir.cpp; sourceTree = "<group>"; };
|
EE486FCA0D3E3EA900AB4CC6 /* dir.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dir.cpp; sourceTree = "<group>"; };
|
||||||
EE486FCB0D3E3EA900AB4CC6 /* dir.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dir.h; sourceTree = "<group>"; };
|
EE486FCB0D3E3EA900AB4CC6 /* dir.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dir.h; sourceTree = "<group>"; };
|
||||||
@ -107,19 +113,27 @@
|
|||||||
EE486FE50D3E3EA900AB4CC6 /* pages.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pages.cpp; sourceTree = "<group>"; };
|
EE486FE50D3E3EA900AB4CC6 /* pages.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pages.cpp; sourceTree = "<group>"; };
|
||||||
EE486FE60D3E3EA900AB4CC6 /* pages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pages.h; sourceTree = "<group>"; };
|
EE486FE60D3E3EA900AB4CC6 /* pages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pages.h; sourceTree = "<group>"; };
|
||||||
EE486FE70D3E3EA900AB4CC6 /* qt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qt.h; sourceTree = "<group>"; };
|
EE486FE70D3E3EA900AB4CC6 /* qt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = qt.h; sourceTree = "<group>"; };
|
||||||
EE486FE80D3E3EA900AB4CC6 /* run.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = run.c; sourceTree = "<group>"; };
|
|
||||||
EE486FE90D3E3EA900AB4CC6 /* service_install.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = service_install.cpp; sourceTree = "<group>"; };
|
|
||||||
EE486FEA0D3E3EA900AB4CC6 /* service_install.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = service_install.h; sourceTree = "<group>"; };
|
|
||||||
EE486FEB0D3E3EA900AB4CC6 /* service_wrapper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = service_wrapper.cpp; sourceTree = "<group>"; };
|
|
||||||
EE486FEC0D3E3EA900AB4CC6 /* unpack.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = unpack.c; sourceTree = "<group>"; };
|
EE486FEC0D3E3EA900AB4CC6 /* unpack.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = unpack.c; sourceTree = "<group>"; };
|
||||||
EE486FED0D3E3EA900AB4CC6 /* unpack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = unpack.h; sourceTree = "<group>"; };
|
EE486FED0D3E3EA900AB4CC6 /* unpack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = unpack.h; sourceTree = "<group>"; };
|
||||||
EE4870530D3E529100AB4CC6 /* moc_gdialog.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = moc_gdialog.cpp; path = src/gui/moc_gdialog.cpp; sourceTree = "<group>"; };
|
EE4870530D3E529100AB4CC6 /* moc_gdialog.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = moc_gdialog.cpp; path = src/gui/moc_gdialog.cpp; sourceTree = "<group>"; };
|
||||||
EE4870540D3E529100AB4CC6 /* moc_gpage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = moc_gpage.cpp; path = src/gui/moc_gpage.cpp; sourceTree = "<group>"; };
|
EE4870540D3E529100AB4CC6 /* moc_gpage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = moc_gpage.cpp; path = src/gui/moc_gpage.cpp; sourceTree = "<group>"; };
|
||||||
EE4870550D3E529100AB4CC6 /* moc_pages.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = moc_pages.cpp; path = src/gui/moc_pages.cpp; sourceTree = "<group>"; };
|
EE4870550D3E529100AB4CC6 /* moc_pages.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = moc_pages.cpp; path = src/gui/moc_pages.cpp; sourceTree = "<group>"; };
|
||||||
|
EE529999184D5FF900AAD1FE /* gregister.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gregister.h; sourceTree = "<group>"; };
|
||||||
|
EE52999A184D5FF900AAD1FE /* gregister_mac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gregister_mac.cpp; sourceTree = "<group>"; };
|
||||||
|
EEBDCC0416A6040100BDFB44 /* boot_unix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = boot_unix.cpp; sourceTree = "<group>"; };
|
||||||
|
EEBDCC0516A6040100BDFB44 /* boot_win32.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = boot_win32.cpp; sourceTree = "<group>"; };
|
||||||
|
EEBDCC0616A6040100BDFB44 /* emailrelay-icon.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = "emailrelay-icon.icns"; sourceTree = "<group>"; };
|
||||||
|
EEBDCC0716A6040100BDFB44 /* emailrelay-icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "emailrelay-icon.png"; sourceTree = "<group>"; };
|
||||||
|
EEBDCC0816A6040100BDFB44 /* glink_unix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glink_unix.cpp; sourceTree = "<group>"; };
|
||||||
|
EEBDCC0916A6040100BDFB44 /* glink_win32.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glink_win32.cpp; sourceTree = "<group>"; };
|
||||||
|
EEBDCC0A16A6040100BDFB44 /* mapfile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mapfile.cpp; sourceTree = "<group>"; };
|
||||||
|
EEBDCC0B16A6040100BDFB44 /* mapfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mapfile.h; sourceTree = "<group>"; };
|
||||||
|
EEBDCC0C16A6040100BDFB44 /* pointer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pointer.cpp; sourceTree = "<group>"; };
|
||||||
|
EEBDCC0D16A6040100BDFB44 /* pointer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pointer.h; sourceTree = "<group>"; };
|
||||||
|
EEBDCC1716A604AD00BDFB44 /* gstrings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = gstrings.cpp; path = src/glib/gstrings.cpp; sourceTree = SOURCE_ROOT; };
|
||||||
EEC342BF0D50E0BD00DD9918 /* boot_mac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = boot_mac.cpp; sourceTree = "<group>"; };
|
EEC342BF0D50E0BD00DD9918 /* boot_mac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = boot_mac.cpp; sourceTree = "<group>"; };
|
||||||
EEC342C00D50E0BD00DD9918 /* dir_mac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dir_mac.cpp; sourceTree = "<group>"; };
|
EEC342C00D50E0BD00DD9918 /* dir_mac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dir_mac.cpp; sourceTree = "<group>"; };
|
||||||
EEC342C30D50E0D800DD9918 /* glink_mac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glink_mac.cpp; sourceTree = "<group>"; };
|
EEC342C30D50E0D800DD9918 /* glink_mac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glink_mac.cpp; sourceTree = "<group>"; };
|
||||||
EEC342C40D50E0D800DD9918 /* guistart.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guistart.cpp; sourceTree = "<group>"; };
|
|
||||||
EEC342C50D50E0D800DD9918 /* state.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = state.cpp; sourceTree = "<group>"; };
|
EEC342C50D50E0D800DD9918 /* state.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = state.cpp; sourceTree = "<group>"; };
|
||||||
EEC342CB0D50E1D500DD9918 /* state.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = state.h; sourceTree = "<group>"; };
|
EEC342CB0D50E1D500DD9918 /* state.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = state.h; sourceTree = "<group>"; };
|
||||||
EEC342DF0D50F62E00DD9918 /* emailrelay-start-gui */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "emailrelay-start-gui"; sourceTree = BUILT_PRODUCTS_DIR; };
|
EEC342DF0D50F62E00DD9918 /* emailrelay-start-gui */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "emailrelay-start-gui"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
@ -175,10 +189,23 @@
|
|||||||
EE486FC70D3E3EA900AB4CC6 /* gui */ = {
|
EE486FC70D3E3EA900AB4CC6 /* gui */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
EE529999184D5FF900AAD1FE /* gregister.h */,
|
||||||
|
EE52999A184D5FF900AAD1FE /* gregister_mac.cpp */,
|
||||||
|
EE1753D516B882A100575457 /* genvironment_unix.cpp */,
|
||||||
|
EEBDCC1716A604AD00BDFB44 /* gstrings.cpp */,
|
||||||
|
EEBDCC0416A6040100BDFB44 /* boot_unix.cpp */,
|
||||||
|
EEBDCC0516A6040100BDFB44 /* boot_win32.cpp */,
|
||||||
|
EEBDCC0616A6040100BDFB44 /* emailrelay-icon.icns */,
|
||||||
|
EEBDCC0716A6040100BDFB44 /* emailrelay-icon.png */,
|
||||||
|
EEBDCC0816A6040100BDFB44 /* glink_unix.cpp */,
|
||||||
|
EEBDCC0916A6040100BDFB44 /* glink_win32.cpp */,
|
||||||
|
EEBDCC0A16A6040100BDFB44 /* mapfile.cpp */,
|
||||||
|
EEBDCC0B16A6040100BDFB44 /* mapfile.h */,
|
||||||
|
EEBDCC0C16A6040100BDFB44 /* pointer.cpp */,
|
||||||
|
EEBDCC0D16A6040100BDFB44 /* pointer.h */,
|
||||||
EEC342F90D50F72800DD9918 /* unpackmain.c */,
|
EEC342F90D50F72800DD9918 /* unpackmain.c */,
|
||||||
EEC342CB0D50E1D500DD9918 /* state.h */,
|
EEC342CB0D50E1D500DD9918 /* state.h */,
|
||||||
EEC342C30D50E0D800DD9918 /* glink_mac.cpp */,
|
EEC342C30D50E0D800DD9918 /* glink_mac.cpp */,
|
||||||
EEC342C40D50E0D800DD9918 /* guistart.cpp */,
|
|
||||||
EEC342C50D50E0D800DD9918 /* state.cpp */,
|
EEC342C50D50E0D800DD9918 /* state.cpp */,
|
||||||
EEC342BF0D50E0BD00DD9918 /* boot_mac.cpp */,
|
EEC342BF0D50E0BD00DD9918 /* boot_mac.cpp */,
|
||||||
EEC342C00D50E0BD00DD9918 /* dir_mac.cpp */,
|
EEC342C00D50E0BD00DD9918 /* dir_mac.cpp */,
|
||||||
@ -208,10 +235,6 @@
|
|||||||
EE486FE50D3E3EA900AB4CC6 /* pages.cpp */,
|
EE486FE50D3E3EA900AB4CC6 /* pages.cpp */,
|
||||||
EE486FE60D3E3EA900AB4CC6 /* pages.h */,
|
EE486FE60D3E3EA900AB4CC6 /* pages.h */,
|
||||||
EE486FE70D3E3EA900AB4CC6 /* qt.h */,
|
EE486FE70D3E3EA900AB4CC6 /* qt.h */,
|
||||||
EE486FE80D3E3EA900AB4CC6 /* run.c */,
|
|
||||||
EE486FE90D3E3EA900AB4CC6 /* service_install.cpp */,
|
|
||||||
EE486FEA0D3E3EA900AB4CC6 /* service_install.h */,
|
|
||||||
EE486FEB0D3E3EA900AB4CC6 /* service_wrapper.cpp */,
|
|
||||||
EE486FEC0D3E3EA900AB4CC6 /* unpack.c */,
|
EE486FEC0D3E3EA900AB4CC6 /* unpack.c */,
|
||||||
EE486FED0D3E3EA900AB4CC6 /* unpack.h */,
|
EE486FED0D3E3EA900AB4CC6 /* unpack.h */,
|
||||||
);
|
);
|
||||||
@ -346,6 +369,12 @@
|
|||||||
EEC342C20D50E0BD00DD9918 /* dir_mac.cpp in Sources */,
|
EEC342C20D50E0BD00DD9918 /* dir_mac.cpp in Sources */,
|
||||||
EEC342C60D50E0D800DD9918 /* glink_mac.cpp in Sources */,
|
EEC342C60D50E0D800DD9918 /* glink_mac.cpp in Sources */,
|
||||||
EEC342C80D50E0D800DD9918 /* state.cpp in Sources */,
|
EEC342C80D50E0D800DD9918 /* state.cpp in Sources */,
|
||||||
|
EEBDCC1216A6040100BDFB44 /* mapfile.cpp in Sources */,
|
||||||
|
EEBDCC1316A6040100BDFB44 /* pointer.cpp in Sources */,
|
||||||
|
EEBDCC1816A604AD00BDFB44 /* gstrings.cpp in Sources */,
|
||||||
|
EE1753D616B882A100575457 /* genvironment_unix.cpp in Sources */,
|
||||||
|
EE529995184D5F4200AAD1FE /* unpack.c in Sources */,
|
||||||
|
EE52999B184D5FF900AAD1FE /* gregister_mac.cpp in Sources */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
@ -353,7 +382,6 @@
|
|||||||
isa = PBXSourcesBuildPhase;
|
isa = PBXSourcesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
EEC342E80D50F68600DD9918 /* guistart.cpp in Sources */,
|
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
|
@ -1,28 +1,27 @@
|
|||||||
Summary: Simple e-mail message transfer agent and proxy using SMTP
|
Summary: Simple e-mail message transfer agent and proxy using SMTP
|
||||||
Name: emailrelay
|
Name: emailrelay
|
||||||
Version: 1.8.1
|
Version: 1.9
|
||||||
Release: 1
|
Release: 1
|
||||||
License: GPL3
|
License: GPL3
|
||||||
Group: System Environment/Daemons
|
Group: System Environment/Daemons
|
||||||
URL: http://emailrelay.sourceforge.net/
|
URL: http://emailrelay.sourceforge.net/
|
||||||
Source: http://sourceforge.net/sourceforge/emailrelay/emailrelay-1.8.1-src.tar.gz
|
Source: http://sourceforge.net/sourceforge/emailrelay/emailrelay-1.9-src.tar.gz
|
||||||
BuildRoot: /tmp/emailrelay-install
|
BuildRoot: /tmp/emailrelay-install
|
||||||
|
|
||||||
%description
|
%description
|
||||||
E-MailRelay is a simple SMTP proxy and store-and-forward message transfer agent
|
E-MailRelay is a simple SMTP proxy and store-and-forward message transfer agent
|
||||||
(MTA). When running as a proxy all e-mail messages can be passed through a
|
(MTA). When running as a proxy all e-mail messages can be passed through a
|
||||||
user-defined program, such as a spam filter, which can drop, re-address or edit
|
user-defined program, such as a spam filter, which can drop, re-address or edit
|
||||||
messages as they pass through. When running as a store-and-forward MTA incoming
|
messages as they pass through. When running as a store-and-forward MTA incoming
|
||||||
messages are stored in a local spool directory, and then forwarded to the next
|
messages are stored in a local spool directory, and then forwarded to the next
|
||||||
SMTP server on request.
|
SMTP server on request.
|
||||||
|
|
||||||
Because of its functional simplicity E-MailRelay is easy to configure, often
|
|
||||||
only requiring the address of the target SMTP server to be put on the command
|
|
||||||
line.
|
|
||||||
|
|
||||||
E-MailRelay can also run as a POP3 server. Messages received over SMTP can be
|
E-MailRelay can also run as a POP3 server. Messages received over SMTP can be
|
||||||
automatically dropped into several independent POP3 mailboxes.
|
automatically dropped into several independent POP3 mailboxes.
|
||||||
|
|
||||||
|
E-MailRelay uses the same non-blocking i/o model as Squid and Nginx giving
|
||||||
|
excellent scalability and resource usage.
|
||||||
|
|
||||||
C++ source code is available for Linux, FreeBSD, MacOS X etc, and Windows.
|
C++ source code is available for Linux, FreeBSD, MacOS X etc, and Windows.
|
||||||
Distribution is under the GNU General Public License V3.
|
Distribution is under the GNU General Public License V3.
|
||||||
|
|
||||||
@ -30,14 +29,15 @@ Distribution is under the GNU General Public License V3.
|
|||||||
%setup
|
%setup
|
||||||
|
|
||||||
%build
|
%build
|
||||||
./configure --enable-fhs --disable-gui --without-man2html --without-doxygen --with-openssl --enable-static-linking --disable-install-hook
|
./configure --prefix=/usr --localstatedir=/var --libexecdir=/usr/lib --sysconfdir=/etc e_initdir=/etc/init.d --disable-gui --without-man2html --without-doxygen --with-openssl --with-zlib --enable-static-linking --disable-install-hook
|
||||||
make
|
make
|
||||||
|
|
||||||
%install
|
%install
|
||||||
make install-strip destdir=$RPM_BUILD_ROOT DESTDIR=$RPM_BUILD_ROOT
|
make install-strip destdir=$RPM_BUILD_ROOT DESTDIR=$RPM_BUILD_ROOT
|
||||||
|
|
||||||
%post
|
%post
|
||||||
test -f /usr/lib/lsb/install_initd && cd /etc/init.d && /usr/lib/lsb/install_initd emailrelay || true
|
test -f /usr/lib/lsb/install_initd && cd $RPM_BUILD_ROOT/etc/init.d && /usr/lib/lsb/install_initd emailrelay || true
|
||||||
|
test -f $RPM_BUILD_ROOT/etc/emailrelay.conf || cp $RPM_BUILD_ROOT/etc/emailrelay.conf.template $RPM_BUILD_ROOT/etc/emailrelay.conf || true
|
||||||
|
|
||||||
%preun
|
%preun
|
||||||
test $1 -eq 0 && test -f /usr/lib/lsb/remove_initd && cd /etc/init.d && /usr/lib/lsb/remove_initd emailrelay || true
|
test $1 -eq 0 && test -f /usr/lib/lsb/remove_initd && cd /etc/init.d && /usr/lib/lsb/remove_initd emailrelay || true
|
||||||
@ -48,21 +48,32 @@ test "$RPM_BUILD_ROOT" = "/" || rm -rf "$RPM_BUILD_ROOT"
|
|||||||
%files
|
%files
|
||||||
|
|
||||||
%config /etc/emailrelay.conf
|
%config /etc/emailrelay.conf
|
||||||
|
%config /etc/pam.d/emailrelay
|
||||||
/etc/emailrelay.conf.template
|
/etc/emailrelay.conf.template
|
||||||
|
/etc/emailrelay.auth.template
|
||||||
/etc/init.d/emailrelay
|
/etc/init.d/emailrelay
|
||||||
/usr/share/man/man1/emailrelay.1.gz
|
/usr/share/man/man1/emailrelay.1.gz
|
||||||
/usr/share/man/man1/emailrelay-filter-copy.1.gz
|
/usr/share/man/man1/emailrelay-filter-copy.1.gz
|
||||||
/usr/share/man/man1/emailrelay-poke.1.gz
|
/usr/share/man/man1/emailrelay-poke.1.gz
|
||||||
/usr/share/man/man1/emailrelay-passwd.1.gz
|
/usr/share/man/man1/emailrelay-passwd.1.gz
|
||||||
/usr/share/man/man1/emailrelay-submit.1.gz
|
/usr/share/man/man1/emailrelay-submit.1.gz
|
||||||
%docdir /usr/share/doc/emailrelay
|
%doc /usr/share/doc/emailrelay/AUTHORS
|
||||||
|
%doc /usr/share/doc/emailrelay/COPYING
|
||||||
|
%doc /usr/share/doc/emailrelay/INSTALL
|
||||||
|
/usr/share/doc/emailrelay/README.mac
|
||||||
|
/usr/share/doc/emailrelay/README.windows
|
||||||
|
/usr/share/doc/emailrelay/README.embedded
|
||||||
|
/usr/share/doc/emailrelay/diagram-1.png
|
||||||
|
/usr/share/doc/emailrelay/diagram-2.png
|
||||||
|
/usr/share/doc/emailrelay/emailrelay-doxygen.css
|
||||||
|
/usr/share/doc/emailrelay/valid-html401.png
|
||||||
/usr/share/doc/emailrelay/index.html
|
/usr/share/doc/emailrelay/index.html
|
||||||
/usr/share/doc/emailrelay/windows.html
|
/usr/share/doc/emailrelay/windows.html
|
||||||
/usr/share/doc/emailrelay/gsmtp-classes.png
|
/usr/share/doc/emailrelay/gsmtp-classes.png
|
||||||
/usr/share/doc/emailrelay/emailrelay.docbook
|
/usr/share/doc/emailrelay/emailrelay.docbook
|
||||||
%doc /usr/share/doc/emailrelay/developer.txt
|
/usr/share/doc/emailrelay/developer.txt
|
||||||
/usr/share/doc/emailrelay/reference.html
|
/usr/share/doc/emailrelay/reference.html
|
||||||
%doc /usr/share/doc/emailrelay/NEWS
|
/usr/share/doc/emailrelay/NEWS
|
||||||
%doc /usr/share/doc/emailrelay/reference.txt
|
%doc /usr/share/doc/emailrelay/reference.txt
|
||||||
/usr/share/doc/emailrelay/developer.html
|
/usr/share/doc/emailrelay/developer.html
|
||||||
/usr/share/doc/emailrelay/auth.png
|
/usr/share/doc/emailrelay/auth.png
|
||||||
@ -81,8 +92,7 @@ test "$RPM_BUILD_ROOT" = "/" || rm -rf "$RPM_BUILD_ROOT"
|
|||||||
/usr/share/doc/emailrelay/emailrelay-man.html
|
/usr/share/doc/emailrelay/emailrelay-man.html
|
||||||
%docdir /usr/share/doc/emailrelay/doxygen
|
%docdir /usr/share/doc/emailrelay/doxygen
|
||||||
/usr/share/doc/emailrelay/doxygen/index.html
|
/usr/share/doc/emailrelay/doxygen/index.html
|
||||||
%dir /usr/lib/emailrelay
|
/usr/share/doc/emailrelay/doxygen/emailrelay-doxygen.css
|
||||||
%dir /usr/lib/emailrelay/examples
|
|
||||||
/usr/lib/emailrelay/examples/emailrelay-process.sh
|
/usr/lib/emailrelay/examples/emailrelay-process.sh
|
||||||
/usr/lib/emailrelay/examples/emailrelay-deliver.sh
|
/usr/lib/emailrelay/examples/emailrelay-deliver.sh
|
||||||
/usr/lib/emailrelay/examples/emailrelay-resubmit.sh
|
/usr/lib/emailrelay/examples/emailrelay-resubmit.sh
|
||||||
@ -94,6 +104,7 @@ test "$RPM_BUILD_ROOT" = "/" || rm -rf "$RPM_BUILD_ROOT"
|
|||||||
/usr/sbin/emailrelay-submit
|
/usr/sbin/emailrelay-submit
|
||||||
/usr/sbin/emailrelay
|
/usr/sbin/emailrelay
|
||||||
/usr/sbin/emailrelay-passwd
|
/usr/sbin/emailrelay-passwd
|
||||||
|
/usr/share/emailrelay/emailrelay-icon.png
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
|
||||||
|
@ -26,7 +26,8 @@
|
|||||||
/* End PBXAggregateTarget section */
|
/* End PBXAggregateTarget section */
|
||||||
|
|
||||||
/* Begin PBXBuildFile section */
|
/* Begin PBXBuildFile section */
|
||||||
EE303C5D0D326C9700D840F2 /* empty.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303AD50D326C9600D840F2 /* empty.cpp */; };
|
EE1753B016B850C600575457 /* gconnectionlookup_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE1753AF16B850C600575457 /* gconnectionlookup_unix.cpp */; };
|
||||||
|
EE1753BC16B852AD00575457 /* genvironment_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE1753BB16B852AD00575457 /* genvironment_unix.cpp */; };
|
||||||
EE303D000D326C9700D840F2 /* admin_enabled.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303C050D326C9600D840F2 /* admin_enabled.cpp */; };
|
EE303D000D326C9700D840F2 /* admin_enabled.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303C050D326C9600D840F2 /* admin_enabled.cpp */; };
|
||||||
EE303D010D326C9700D840F2 /* commandline_full.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303C070D326C9600D840F2 /* commandline_full.cpp */; };
|
EE303D010D326C9700D840F2 /* commandline_full.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303C070D326C9600D840F2 /* commandline_full.cpp */; };
|
||||||
EE303D030D326C9700D840F2 /* configuration.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303C0A0D326C9600D840F2 /* configuration.cpp */; };
|
EE303D030D326C9700D840F2 /* configuration.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303C0A0D326C9600D840F2 /* configuration.cpp */; };
|
||||||
@ -104,7 +105,6 @@
|
|||||||
EE303E1A0D329BC800D840F2 /* gpopsecrets.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B7F0D326C9600D840F2 /* gpopsecrets.cpp */; };
|
EE303E1A0D329BC800D840F2 /* gpopsecrets.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B7F0D326C9600D840F2 /* gpopsecrets.cpp */; };
|
||||||
EE303E260D329C1200D840F2 /* gstoredmessage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303BCC0D326C9600D840F2 /* gstoredmessage.cpp */; };
|
EE303E260D329C1200D840F2 /* gstoredmessage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303BCC0D326C9600D840F2 /* gstoredmessage.cpp */; };
|
||||||
EE303E270D329C1400D840F2 /* gexecutableverifier.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B950D326C9600D840F2 /* gexecutableverifier.cpp */; };
|
EE303E270D329C1400D840F2 /* gexecutableverifier.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B950D326C9600D840F2 /* gexecutableverifier.cpp */; };
|
||||||
EE303E280D329C1500D840F2 /* gsecrets_full.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303BBD0D326C9600D840F2 /* gsecrets_full.cpp */; };
|
|
||||||
EE303E290D329C1700D840F2 /* ginternalverifier.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B9B0D326C9600D840F2 /* ginternalverifier.cpp */; };
|
EE303E290D329C1700D840F2 /* ginternalverifier.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B9B0D326C9600D840F2 /* ginternalverifier.cpp */; };
|
||||||
EE303E2A0D329C1800D840F2 /* grequestclient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303BB60D326C9600D840F2 /* grequestclient.cpp */; };
|
EE303E2A0D329C1800D840F2 /* grequestclient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303BB60D326C9600D840F2 /* grequestclient.cpp */; };
|
||||||
EE303E2B0D329C1A00D840F2 /* gadminserver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B8D0D326C9600D840F2 /* gadminserver.cpp */; };
|
EE303E2B0D329C1A00D840F2 /* gadminserver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B8D0D326C9600D840F2 /* gadminserver.cpp */; };
|
||||||
@ -113,12 +113,10 @@
|
|||||||
EE303E2E0D329C1F00D840F2 /* gclientprotocol.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B910D326C9600D840F2 /* gclientprotocol.cpp */; };
|
EE303E2E0D329C1F00D840F2 /* gclientprotocol.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B910D326C9600D840F2 /* gclientprotocol.cpp */; };
|
||||||
EE303E2F0D329C2200D840F2 /* gmessagestore.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B9D0D326C9600D840F2 /* gmessagestore.cpp */; };
|
EE303E2F0D329C2200D840F2 /* gmessagestore.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B9D0D326C9600D840F2 /* gmessagestore.cpp */; };
|
||||||
EE303E300D329C2400D840F2 /* gfilestore.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B990D326C9600D840F2 /* gfilestore.cpp */; };
|
EE303E300D329C2400D840F2 /* gfilestore.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B990D326C9600D840F2 /* gfilestore.cpp */; };
|
||||||
EE303E310D329C2500D840F2 /* gsasl_native.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303BBA0D326C9600D840F2 /* gsasl_native.cpp */; };
|
|
||||||
EE303E320D329C2600D840F2 /* gmessagestore_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B9F0D326C9600D840F2 /* gmessagestore_unix.cpp */; };
|
EE303E320D329C2600D840F2 /* gmessagestore_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B9F0D326C9600D840F2 /* gmessagestore_unix.cpp */; };
|
||||||
EE303E330D329C2800D840F2 /* gverifierstatus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303BD30D326C9600D840F2 /* gverifierstatus.cpp */; };
|
EE303E330D329C2800D840F2 /* gverifierstatus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303BD30D326C9600D840F2 /* gverifierstatus.cpp */; };
|
||||||
EE303E340D329C2A00D840F2 /* gspamprocessor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303BC80D326C9600D840F2 /* gspamprocessor.cpp */; };
|
EE303E340D329C2A00D840F2 /* gspamprocessor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303BC80D326C9600D840F2 /* gspamprocessor.cpp */; };
|
||||||
EE303E350D329C2C00D840F2 /* gnullprocessor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303BA90D326C9600D840F2 /* gnullprocessor.cpp */; };
|
EE303E350D329C2C00D840F2 /* gnullprocessor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303BA90D326C9600D840F2 /* gnullprocessor.cpp */; };
|
||||||
EE303E360D329C3000D840F2 /* gbase64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B8F0D326C9600D840F2 /* gbase64.cpp */; };
|
|
||||||
EE303E370D329C3200D840F2 /* gverifierfactory_exec_enabled.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303BD20D326C9600D840F2 /* gverifierfactory_exec_enabled.cpp */; };
|
EE303E370D329C3200D840F2 /* gverifierfactory_exec_enabled.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303BD20D326C9600D840F2 /* gverifierfactory_exec_enabled.cpp */; };
|
||||||
EE303E380D329C3400D840F2 /* gnetworkverifier.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303BA30D326C9600D840F2 /* gnetworkverifier.cpp */; };
|
EE303E380D329C3400D840F2 /* gnetworkverifier.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303BA30D326C9600D840F2 /* gnetworkverifier.cpp */; };
|
||||||
EE303E390D329C3700D840F2 /* gstoredfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303BCA0D326C9600D840F2 /* gstoredfile.cpp */; };
|
EE303E390D329C3700D840F2 /* gstoredfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303BCA0D326C9600D840F2 /* gstoredfile.cpp */; };
|
||||||
@ -135,14 +133,146 @@
|
|||||||
EE303E440D329C4B00D840F2 /* gnetworkprocessor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303BA10D326C9600D840F2 /* gnetworkprocessor.cpp */; };
|
EE303E440D329C4B00D840F2 /* gnetworkprocessor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303BA10D326C9600D840F2 /* gnetworkprocessor.cpp */; };
|
||||||
EE303E450D329C4E00D840F2 /* gsmtpserver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303BC40D326C9600D840F2 /* gsmtpserver.cpp */; };
|
EE303E450D329C4E00D840F2 /* gsmtpserver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303BC40D326C9600D840F2 /* gsmtpserver.cpp */; };
|
||||||
EE303E460D329C5000D840F2 /* gserverprotocol.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303BBF0D326C9600D840F2 /* gserverprotocol.cpp */; };
|
EE303E460D329C5000D840F2 /* gserverprotocol.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303BBF0D326C9600D840F2 /* gserverprotocol.cpp */; };
|
||||||
EE9918310D91664E00FB06D5 /* empty.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303AD50D326C9600D840F2 /* empty.cpp */; };
|
EE89C05216A5B5EB006CBE2E /* gsaslclient_native.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE89C03E16A5B5EB006CBE2E /* gsaslclient_native.cpp */; };
|
||||||
|
EE89C05416A5B5EB006CBE2E /* gsaslserver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE89C04016A5B5EB006CBE2E /* gsaslserver.cpp */; };
|
||||||
|
EE89C05516A5B5EB006CBE2E /* gsaslserverbasic_native.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE89C04316A5B5EB006CBE2E /* gsaslserverbasic_native.cpp */; };
|
||||||
|
EE89C05816A5B5EB006CBE2E /* gsaslserverfactory_pam.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE89C04716A5B5EB006CBE2E /* gsaslserverfactory_pam.cpp */; };
|
||||||
|
EE89C05916A5B5EB006CBE2E /* gsaslserverpam.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE89C04816A5B5EB006CBE2E /* gsaslserverpam.cpp */; };
|
||||||
|
EE89C05C16A5B5EB006CBE2E /* gsecrets_pam.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE89C04D16A5B5EB006CBE2E /* gsecrets_pam.cpp */; };
|
||||||
|
EE89C05D16A5B5EB006CBE2E /* gsecretsfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE89C04E16A5B5EB006CBE2E /* gsecretsfile.cpp */; };
|
||||||
|
EE89C05E16A5B5EB006CBE2E /* gvalid.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE89C05016A5B5EB006CBE2E /* gvalid.cpp */; };
|
||||||
|
EE89C06416A5B722006CBE2E /* garg_mac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE89C06316A5B722006CBE2E /* garg_mac.cpp */; };
|
||||||
|
EE89C06F16A5B7A4006CBE2E /* gbase64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE89C06516A5B7A4006CBE2E /* gbase64.cpp */; };
|
||||||
|
EE89C07216A5B7A4006CBE2E /* gpam.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE89C06A16A5B7A4006CBE2E /* gpam.cpp */; };
|
||||||
|
EE89C07316A5B7A4006CBE2E /* gpam_linux.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE89C06C16A5B7A4006CBE2E /* gpam_linux.cpp */; settings = {COMPILER_FLAGS = "-I/usr/include/pam"; }; };
|
||||||
|
EE89C07516A5B7A4006CBE2E /* gstrings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE89C06E16A5B7A4006CBE2E /* gstrings.cpp */; };
|
||||||
|
EE89C07616A5B7DE006CBE2E /* gcleanup_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303ADF0D326C9600D840F2 /* gcleanup_unix.cpp */; };
|
||||||
|
EE89C07716A5B7E4006CBE2E /* gcounter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303AE20D326C9600D840F2 /* gcounter.cpp */; };
|
||||||
|
EE89C07816A5B803006CBE2E /* gdaemon_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303AE50D326C9600D840F2 /* gdaemon_unix.cpp */; };
|
||||||
|
EE89C07916A5B807006CBE2E /* gdate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303AE70D326C9600D840F2 /* gdate.cpp */; };
|
||||||
|
EE89C07A16A5B80B006CBE2E /* gdatetime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303AE90D326C9600D840F2 /* gdatetime.cpp */; };
|
||||||
|
EE89C07B16A5B80D006CBE2E /* gdatetime_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303AEB0D326C9600D840F2 /* gdatetime_unix.cpp */; };
|
||||||
|
EE89C07C16A5B81B006CBE2E /* gdirectory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303AEF0D326C9600D840F2 /* gdirectory.cpp */; };
|
||||||
|
EE89C07D16A5B821006CBE2E /* gdirectory_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303AF10D326C9600D840F2 /* gdirectory_unix.cpp */; };
|
||||||
|
EE89C07E16A5B825006CBE2E /* gdirectory_unix_glob.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303AF20D326C9600D840F2 /* gdirectory_unix_glob.cpp */; };
|
||||||
|
EE89C07F16A5B829006CBE2E /* gexception.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303AF50D326C9600D840F2 /* gexception.cpp */; };
|
||||||
|
EE89C08016A5B82A006CBE2E /* gexecutable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303AF70D326C9600D840F2 /* gexecutable.cpp */; };
|
||||||
|
EE89C08116A5B82C006CBE2E /* gexecutable_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303AF90D326C9600D840F2 /* gexecutable_unix.cpp */; };
|
||||||
|
EE89C08216A5B82F006CBE2E /* gfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303AFB0D326C9600D840F2 /* gfile.cpp */; };
|
||||||
|
EE89C08316A5B838006CBE2E /* gfile_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303AFD0D326C9600D840F2 /* gfile_unix.cpp */; };
|
||||||
|
EE89C08416A5B83A006CBE2E /* gfs_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B000D326C9600D840F2 /* gfs_unix.cpp */; };
|
||||||
|
EE89C08516A5B83B006CBE2E /* ggetopt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B020D326C9600D840F2 /* ggetopt.cpp */; };
|
||||||
|
EE89C08616A5B83E006CBE2E /* ghostname_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B050D326C9600D840F2 /* ghostname_unix.cpp */; };
|
||||||
|
EE89C08716A5B848006CBE2E /* gidentity_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B090D326C9600D840F2 /* gidentity_unix.cpp */; };
|
||||||
|
EE89C08816A5B84C006CBE2E /* glog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B0C0D326C9600D840F2 /* glog.cpp */; };
|
||||||
|
EE89C08916A5B84D006CBE2E /* glogoutput.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B0E0D326C9600D840F2 /* glogoutput.cpp */; };
|
||||||
|
EE89C08A16A5B84F006CBE2E /* glogoutput_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B100D326C9600D840F2 /* glogoutput_unix.cpp */; };
|
||||||
|
EE89C08B16A5B854006CBE2E /* gpath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B1A0D326C9600D840F2 /* gpath.cpp */; };
|
||||||
|
EE89C08C16A5B857006CBE2E /* gpidfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B1C0D326C9600D840F2 /* gpidfile.cpp */; };
|
||||||
|
EE89C08D16A5B858006CBE2E /* gprocess_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B1F0D326C9600D840F2 /* gprocess_unix.cpp */; };
|
||||||
|
EE89C08E16A5B85A006CBE2E /* groot.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B210D326C9600D840F2 /* groot.cpp */; };
|
||||||
|
EE89C08F16A5B85F006CBE2E /* gslot.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B260D326C9600D840F2 /* gslot.cpp */; };
|
||||||
|
EE89C09016A5B862006CBE2E /* gstr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B290D326C9600D840F2 /* gstr.cpp */; };
|
||||||
|
EE89C09116A5B867006CBE2E /* gtest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B2C0D326C9600D840F2 /* gtest.cpp */; };
|
||||||
|
EE89C09216A5B869006CBE2E /* gtime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B2E0D326C9600D840F2 /* gtime.cpp */; };
|
||||||
|
EE89C09316A5B86B006CBE2E /* gxtext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B300D326C9600D840F2 /* gxtext.cpp */; };
|
||||||
|
EE89C09416A5B86F006CBE2E /* md5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B340D326C9600D840F2 /* md5.cpp */; };
|
||||||
|
EE89C09A16A5D19B006CBE2E /* gdescriptor_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B440D326C9600D840F2 /* gdescriptor_unix.cpp */; };
|
||||||
|
EE89C09C16A5D1A7006CBE2E /* gaddress_ipv4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B3A0D326C9600D840F2 /* gaddress_ipv4.cpp */; };
|
||||||
|
EE89C09D16A5D1A9006CBE2E /* gbufferedserverpeer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B3C0D326C9600D840F2 /* gbufferedserverpeer.cpp */; };
|
||||||
|
EE89C09E16A5D1AB006CBE2E /* gclient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B3E0D326C9600D840F2 /* gclient.cpp */; };
|
||||||
|
EE89C09F16A5D1AE006CBE2E /* gconnection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B410D326C9600D840F2 /* gconnection.cpp */; };
|
||||||
|
EE89C0A016A5D1B3006CBE2E /* geventhandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B470D326C9600D840F2 /* geventhandler.cpp */; };
|
||||||
|
EE89C0A116A5D1B4006CBE2E /* geventloop.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B490D326C9600D840F2 /* geventloop.cpp */; };
|
||||||
|
EE89C0A216A5D1B5006CBE2E /* geventloop_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B4B0D326C9600D840F2 /* geventloop_unix.cpp */; };
|
||||||
|
EE89C0A316A5D1B9006CBE2E /* gheapclient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B4D0D326C9600D840F2 /* gheapclient.cpp */; };
|
||||||
|
EE89C0A416A5D1BA006CBE2E /* glinebuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B4F0D326C9600D840F2 /* glinebuffer.cpp */; };
|
||||||
|
EE89C0A516A5D1BC006CBE2E /* glocal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B510D326C9600D840F2 /* glocal.cpp */; };
|
||||||
|
EE89C0A616A5D1C4006CBE2E /* glocal_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B540D326C9600D840F2 /* glocal_unix.cpp */; };
|
||||||
|
EE89C0A716A5D1CA006CBE2E /* gmonitor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B560D326C9600D840F2 /* gmonitor.cpp */; };
|
||||||
|
EE89C0A816A5D1CC006CBE2E /* gmultiserver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B580D326C9600D840F2 /* gmultiserver.cpp */; };
|
||||||
|
EE89C0A916A5D1CF006CBE2E /* gresolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B5D0D326C9600D840F2 /* gresolver.cpp */; };
|
||||||
|
EE89C0AB16A5D1D4006CBE2E /* gresolver_ipv4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B610D326C9600D840F2 /* gresolver_ipv4.cpp */; };
|
||||||
|
EE89C0AC16A5D1D6006CBE2E /* gresolver_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B630D326C9600D840F2 /* gresolver_unix.cpp */; };
|
||||||
|
EE89C0AD16A5D1DD006CBE2E /* gresolverinfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B650D326C9600D840F2 /* gresolverinfo.cpp */; };
|
||||||
|
EE89C0AE16A5D1DE006CBE2E /* gserver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B670D326C9600D840F2 /* gserver.cpp */; };
|
||||||
|
EE89C0AF16A5D1E0006CBE2E /* gsimpleclient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B690D326C9600D840F2 /* gsimpleclient.cpp */; };
|
||||||
|
EE89C0B016A5D1E2006CBE2E /* gsimpleclient_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B6B0D326C9600D840F2 /* gsimpleclient_unix.cpp */; };
|
||||||
|
EE89C0B116A5D1E7006CBE2E /* gsocket.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B6D0D326C9600D840F2 /* gsocket.cpp */; };
|
||||||
|
EE89C0B216A5D1ED006CBE2E /* gsocket_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B6F0D326C9600D840F2 /* gsocket_unix.cpp */; };
|
||||||
|
EE89C0B316A5D1EF006CBE2E /* gsocketprotocol.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B710D326C9600D840F2 /* gsocketprotocol.cpp */; };
|
||||||
|
EE89C0B416A5D1F0006CBE2E /* gtimer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B730D326C9600D840F2 /* gtimer.cpp */; };
|
||||||
|
EE89C0B516A5D1F2006CBE2E /* gtimerlist.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B750D326C9600D840F2 /* gtimerlist.cpp */; };
|
||||||
|
EE89C0BA16A5D306006CBE2E /* gdescriptor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE89C0B916A5D306006CBE2E /* gdescriptor.cpp */; };
|
||||||
|
EE89C0BF16A5E642006CBE2E /* garg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303AD90D326C9600D840F2 /* garg.cpp */; };
|
||||||
|
EE89C0C016A5E645006CBE2E /* garg_mac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE89C06316A5B722006CBE2E /* garg_mac.cpp */; };
|
||||||
|
EE89C0C116A5E649006CBE2E /* gbase64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE89C06516A5B7A4006CBE2E /* gbase64.cpp */; };
|
||||||
|
EE89C0C216A5E64C006CBE2E /* gcleanup_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303ADF0D326C9600D840F2 /* gcleanup_unix.cpp */; };
|
||||||
|
EE89C0C316A5E669006CBE2E /* gcounter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303AE20D326C9600D840F2 /* gcounter.cpp */; };
|
||||||
|
EE89C0C416A5E66B006CBE2E /* gdaemon_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303AE50D326C9600D840F2 /* gdaemon_unix.cpp */; };
|
||||||
|
EE89C0C516A5E66C006CBE2E /* gdate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303AE70D326C9600D840F2 /* gdate.cpp */; };
|
||||||
|
EE89C0C616A5E66E006CBE2E /* gdatetime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303AE90D326C9600D840F2 /* gdatetime.cpp */; };
|
||||||
|
EE89C0C716A5E670006CBE2E /* gdatetime_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303AEB0D326C9600D840F2 /* gdatetime_unix.cpp */; };
|
||||||
|
EE89C0C816A5E673006CBE2E /* gdirectory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303AEF0D326C9600D840F2 /* gdirectory.cpp */; };
|
||||||
|
EE89C0C916A5E675006CBE2E /* gdirectory_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303AF10D326C9600D840F2 /* gdirectory_unix.cpp */; };
|
||||||
|
EE89C0CA16A5E677006CBE2E /* gdirectory_unix_glob.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303AF20D326C9600D840F2 /* gdirectory_unix_glob.cpp */; };
|
||||||
|
EE89C0CB16A5E67B006CBE2E /* gexception.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303AF50D326C9600D840F2 /* gexception.cpp */; };
|
||||||
|
EE89C0CC16A5E67D006CBE2E /* gexecutable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303AF70D326C9600D840F2 /* gexecutable.cpp */; };
|
||||||
|
EE89C0CD16A5E67E006CBE2E /* gexecutable_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303AF90D326C9600D840F2 /* gexecutable_unix.cpp */; };
|
||||||
|
EE89C0CE16A5E685006CBE2E /* gfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303AFB0D326C9600D840F2 /* gfile.cpp */; };
|
||||||
|
EE89C0CF16A5E687006CBE2E /* gfile_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303AFD0D326C9600D840F2 /* gfile_unix.cpp */; };
|
||||||
|
EE89C0D016A5E689006CBE2E /* gfs_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B000D326C9600D840F2 /* gfs_unix.cpp */; };
|
||||||
|
EE89C0D116A5E68A006CBE2E /* ggetopt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B020D326C9600D840F2 /* ggetopt.cpp */; };
|
||||||
|
EE89C0D216A5E68D006CBE2E /* ghostname_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B050D326C9600D840F2 /* ghostname_unix.cpp */; };
|
||||||
|
EE89C0D316A5E68F006CBE2E /* gidentity_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B090D326C9600D840F2 /* gidentity_unix.cpp */; };
|
||||||
|
EE89C0D416A5E693006CBE2E /* glog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B0C0D326C9600D840F2 /* glog.cpp */; };
|
||||||
|
EE89C0D516A5E695006CBE2E /* glogoutput.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B0E0D326C9600D840F2 /* glogoutput.cpp */; };
|
||||||
|
EE89C0D616A5E696006CBE2E /* glogoutput_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B100D326C9600D840F2 /* glogoutput_unix.cpp */; };
|
||||||
|
EE89C0D716A5E698006CBE2E /* gmd5_native.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B130D326C9600D840F2 /* gmd5_native.cpp */; };
|
||||||
|
EE89C0D816A5E6A0006CBE2E /* gnewprocess_unix_exec_enabled.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B170D326C9600D840F2 /* gnewprocess_unix_exec_enabled.cpp */; };
|
||||||
|
EE89C0DA16A5E6A6006CBE2E /* gpam.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE89C06A16A5B7A4006CBE2E /* gpam.cpp */; };
|
||||||
|
EE89C0DB16A5E6A7006CBE2E /* gpam_linux.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE89C06C16A5B7A4006CBE2E /* gpam_linux.cpp */; settings = {COMPILER_FLAGS = "-I/usr/include/pam"; }; };
|
||||||
|
EE89C0DC16A5E6AC006CBE2E /* gpath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B1A0D326C9600D840F2 /* gpath.cpp */; };
|
||||||
|
EE89C0DD16A5E6AE006CBE2E /* gpidfile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B1C0D326C9600D840F2 /* gpidfile.cpp */; };
|
||||||
|
EE89C0DE16A5E6AF006CBE2E /* gprocess_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B1F0D326C9600D840F2 /* gprocess_unix.cpp */; };
|
||||||
|
EE89C0DF16A5E6B4006CBE2E /* groot.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B210D326C9600D840F2 /* groot.cpp */; };
|
||||||
|
EE89C0E016A5E6B5006CBE2E /* gslot.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B260D326C9600D840F2 /* gslot.cpp */; };
|
||||||
|
EE89C0E116A5E6B6006CBE2E /* gstr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B290D326C9600D840F2 /* gstr.cpp */; };
|
||||||
|
EE89C0E216A5E6B7006CBE2E /* gstrings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE89C06E16A5B7A4006CBE2E /* gstrings.cpp */; };
|
||||||
|
EE89C0E316A5E6B8006CBE2E /* gtest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B2C0D326C9600D840F2 /* gtest.cpp */; };
|
||||||
|
EE89C0E416A5E6B9006CBE2E /* gtime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B2E0D326C9600D840F2 /* gtime.cpp */; };
|
||||||
|
EE89C0E516A5E6BA006CBE2E /* gxtext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B300D326C9600D840F2 /* gxtext.cpp */; };
|
||||||
|
EE89C0E616A5E6BF006CBE2E /* md5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B340D326C9600D840F2 /* md5.cpp */; };
|
||||||
|
EE89C0E716A5E6C9006CBE2E /* gaddress_ipv4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B3A0D326C9600D840F2 /* gaddress_ipv4.cpp */; };
|
||||||
|
EE89C0E816A5E6CA006CBE2E /* gbufferedserverpeer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B3C0D326C9600D840F2 /* gbufferedserverpeer.cpp */; };
|
||||||
|
EE89C0E916A5E6CC006CBE2E /* gclient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B3E0D326C9600D840F2 /* gclient.cpp */; };
|
||||||
|
EE89C0EA16A5E6CD006CBE2E /* gconnection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B410D326C9600D840F2 /* gconnection.cpp */; };
|
||||||
|
EE89C0EB16A5E6CE006CBE2E /* gdescriptor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE89C0B916A5D306006CBE2E /* gdescriptor.cpp */; };
|
||||||
|
EE89C0EC16A5E6D0006CBE2E /* gdescriptor_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B440D326C9600D840F2 /* gdescriptor_unix.cpp */; };
|
||||||
|
EE89C0ED16A5E6D1006CBE2E /* geventhandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B470D326C9600D840F2 /* geventhandler.cpp */; };
|
||||||
|
EE89C0EE16A5E6D2006CBE2E /* geventloop.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B490D326C9600D840F2 /* geventloop.cpp */; };
|
||||||
|
EE89C0EF16A5E6D5006CBE2E /* geventloop_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B4B0D326C9600D840F2 /* geventloop_unix.cpp */; };
|
||||||
|
EE89C0F016A5E6D6006CBE2E /* gheapclient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B4D0D326C9600D840F2 /* gheapclient.cpp */; };
|
||||||
|
EE89C0F116A5E6D7006CBE2E /* glinebuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B4F0D326C9600D840F2 /* glinebuffer.cpp */; };
|
||||||
|
EE89C0F216A5E6D9006CBE2E /* glocal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B510D326C9600D840F2 /* glocal.cpp */; };
|
||||||
|
EE89C0F316A5E6DB006CBE2E /* glocal_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B540D326C9600D840F2 /* glocal_unix.cpp */; };
|
||||||
|
EE89C0F416A5E6DE006CBE2E /* gmonitor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B560D326C9600D840F2 /* gmonitor.cpp */; };
|
||||||
|
EE89C0F516A5E6DF006CBE2E /* gmultiserver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B580D326C9600D840F2 /* gmultiserver.cpp */; };
|
||||||
|
EE89C0F616A5E6E0006CBE2E /* gresolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B5D0D326C9600D840F2 /* gresolver.cpp */; };
|
||||||
|
EE89C0F716A5E6E7006CBE2E /* gresolver_ipv4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B610D326C9600D840F2 /* gresolver_ipv4.cpp */; };
|
||||||
|
EE89C0F816A5E6E9006CBE2E /* gresolver_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B630D326C9600D840F2 /* gresolver_unix.cpp */; };
|
||||||
|
EE89C0F916A5E6EB006CBE2E /* gresolverinfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B650D326C9600D840F2 /* gresolverinfo.cpp */; };
|
||||||
|
EE89C0FA16A5E6EC006CBE2E /* gserver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B670D326C9600D840F2 /* gserver.cpp */; };
|
||||||
|
EE89C0FB16A5E6ED006CBE2E /* gsimpleclient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B690D326C9600D840F2 /* gsimpleclient.cpp */; };
|
||||||
|
EE89C0FC16A5E6F1006CBE2E /* gsimpleclient_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B6B0D326C9600D840F2 /* gsimpleclient_unix.cpp */; };
|
||||||
|
EE89C0FD16A5E6F2006CBE2E /* gsocket.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B6D0D326C9600D840F2 /* gsocket.cpp */; };
|
||||||
|
EE89C0FE16A5E6F3006CBE2E /* gsocket_unix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B6F0D326C9600D840F2 /* gsocket_unix.cpp */; };
|
||||||
|
EE89C0FF16A5E6F4006CBE2E /* gsocketprotocol.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B710D326C9600D840F2 /* gsocketprotocol.cpp */; };
|
||||||
|
EE89C10016A5E6F5006CBE2E /* gtimer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B730D326C9600D840F2 /* gtimer.cpp */; };
|
||||||
|
EE89C10116A5E6F8006CBE2E /* gtimerlist.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303B750D326C9600D840F2 /* gtimerlist.cpp */; };
|
||||||
EE9918420D91670200FB06D5 /* filter_copy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303C130D326C9600D840F2 /* filter_copy.cpp */; };
|
EE9918420D91670200FB06D5 /* filter_copy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303C130D326C9600D840F2 /* filter_copy.cpp */; };
|
||||||
EE9918440D91673900FB06D5 /* filter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303C100D326C9600D840F2 /* filter.cpp */; };
|
EE9918440D91673900FB06D5 /* filter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303C100D326C9600D840F2 /* filter.cpp */; };
|
||||||
EE9918460D91675100FB06D5 /* legal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303C190D326C9600D840F2 /* legal.cpp */; };
|
EE9918460D91675100FB06D5 /* legal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303C190D326C9600D840F2 /* legal.cpp */; };
|
||||||
EE99184F0D91693000FB06D5 /* empty.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303AD50D326C9600D840F2 /* empty.cpp */; };
|
|
||||||
EE99185F0D91695000FB06D5 /* empty.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303AD50D326C9600D840F2 /* empty.cpp */; };
|
|
||||||
EE99186F0D91697900FB06D5 /* empty.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303AD50D326C9600D840F2 /* empty.cpp */; };
|
|
||||||
EE99187F0D91698A00FB06D5 /* empty.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303AD50D326C9600D840F2 /* empty.cpp */; };
|
|
||||||
EE99188D0D9169FE00FB06D5 /* start.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE99188B0D9169F700FB06D5 /* start.cpp */; };
|
EE99188D0D9169FE00FB06D5 /* start.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE99188B0D9169F700FB06D5 /* start.cpp */; };
|
||||||
EE99188F0D916A3600FB06D5 /* passwd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303C250D326C9700D840F2 /* passwd.cpp */; };
|
EE99188F0D916A3600FB06D5 /* passwd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE303C250D326C9700D840F2 /* passwd.cpp */; };
|
||||||
EE9918900D916A4E00FB06D5 /* poke.c in Sources */ = {isa = PBXBuildFile; fileRef = EE303C270D326C9700D840F2 /* poke.c */; };
|
EE9918900D916A4E00FB06D5 /* poke.c in Sources */ = {isa = PBXBuildFile; fileRef = EE303C270D326C9700D840F2 /* poke.c */; };
|
||||||
@ -333,10 +463,10 @@
|
|||||||
|
|
||||||
/* Begin PBXFileReference section */
|
/* Begin PBXFileReference section */
|
||||||
8DD76F6C0486A84900D96B5E /* emailrelay */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = emailrelay; sourceTree = BUILT_PRODUCTS_DIR; };
|
8DD76F6C0486A84900D96B5E /* emailrelay */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = emailrelay; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
EE303AD30D326C9600D840F2 /* emailrelay.dsw */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = emailrelay.dsw; sourceTree = "<group>"; };
|
EE1753AE16B850C600575457 /* gconnectionlookup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gconnectionlookup.h; sourceTree = "<group>"; };
|
||||||
EE303AD50D326C9600D840F2 /* empty.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = empty.cpp; sourceTree = "<group>"; };
|
EE1753AF16B850C600575457 /* gconnectionlookup_unix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gconnectionlookup_unix.cpp; sourceTree = "<group>"; };
|
||||||
EE303AD60D326C9600D840F2 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
|
EE1753BA16B852AD00575457 /* genvironment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = genvironment.h; sourceTree = "<group>"; };
|
||||||
EE303AD70D326C9600D840F2 /* Makefile.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.in; sourceTree = "<group>"; };
|
EE1753BB16B852AD00575457 /* genvironment_unix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = genvironment_unix.cpp; sourceTree = "<group>"; };
|
||||||
EE303AD90D326C9600D840F2 /* garg.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = garg.cpp; sourceTree = "<group>"; };
|
EE303AD90D326C9600D840F2 /* garg.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = garg.cpp; sourceTree = "<group>"; };
|
||||||
EE303ADA0D326C9600D840F2 /* garg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = garg.h; sourceTree = "<group>"; };
|
EE303ADA0D326C9600D840F2 /* garg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = garg.h; sourceTree = "<group>"; };
|
||||||
EE303ADB0D326C9600D840F2 /* garg_unix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = garg_unix.cpp; sourceTree = "<group>"; };
|
EE303ADB0D326C9600D840F2 /* garg_unix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = garg_unix.cpp; sourceTree = "<group>"; };
|
||||||
@ -345,7 +475,6 @@
|
|||||||
EE303ADE0D326C9600D840F2 /* gcleanup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gcleanup.h; sourceTree = "<group>"; };
|
EE303ADE0D326C9600D840F2 /* gcleanup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gcleanup.h; sourceTree = "<group>"; };
|
||||||
EE303ADF0D326C9600D840F2 /* gcleanup_unix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gcleanup_unix.cpp; sourceTree = "<group>"; };
|
EE303ADF0D326C9600D840F2 /* gcleanup_unix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gcleanup_unix.cpp; sourceTree = "<group>"; };
|
||||||
EE303AE00D326C9600D840F2 /* gcleanup_win32.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gcleanup_win32.cpp; sourceTree = "<group>"; };
|
EE303AE00D326C9600D840F2 /* gcleanup_win32.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gcleanup_win32.cpp; sourceTree = "<group>"; };
|
||||||
EE303AE10D326C9600D840F2 /* gconvert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gconvert.h; sourceTree = "<group>"; };
|
|
||||||
EE303AE20D326C9600D840F2 /* gcounter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gcounter.cpp; sourceTree = "<group>"; };
|
EE303AE20D326C9600D840F2 /* gcounter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gcounter.cpp; sourceTree = "<group>"; };
|
||||||
EE303AE30D326C9600D840F2 /* gcounter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gcounter.h; sourceTree = "<group>"; };
|
EE303AE30D326C9600D840F2 /* gcounter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gcounter.h; sourceTree = "<group>"; };
|
||||||
EE303AE40D326C9600D840F2 /* gdaemon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gdaemon.h; sourceTree = "<group>"; };
|
EE303AE40D326C9600D840F2 /* gdaemon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gdaemon.h; sourceTree = "<group>"; };
|
||||||
@ -466,7 +595,6 @@
|
|||||||
EE303B580D326C9600D840F2 /* gmultiserver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gmultiserver.cpp; sourceTree = "<group>"; };
|
EE303B580D326C9600D840F2 /* gmultiserver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gmultiserver.cpp; sourceTree = "<group>"; };
|
||||||
EE303B590D326C9600D840F2 /* gmultiserver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gmultiserver.h; sourceTree = "<group>"; };
|
EE303B590D326C9600D840F2 /* gmultiserver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gmultiserver.h; sourceTree = "<group>"; };
|
||||||
EE303B5A0D326C9600D840F2 /* gnet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gnet.h; sourceTree = "<group>"; };
|
EE303B5A0D326C9600D840F2 /* gnet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gnet.h; sourceTree = "<group>"; };
|
||||||
EE303B5B0D326C9600D840F2 /* grequest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = grequest.cpp; sourceTree = "<group>"; };
|
|
||||||
EE303B5C0D326C9600D840F2 /* grequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = grequest.h; sourceTree = "<group>"; };
|
EE303B5C0D326C9600D840F2 /* grequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = grequest.h; sourceTree = "<group>"; };
|
||||||
EE303B5D0D326C9600D840F2 /* gresolver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gresolver.cpp; sourceTree = "<group>"; };
|
EE303B5D0D326C9600D840F2 /* gresolver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gresolver.cpp; sourceTree = "<group>"; };
|
||||||
EE303B5E0D326C9600D840F2 /* gresolver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gresolver.h; sourceTree = "<group>"; };
|
EE303B5E0D326C9600D840F2 /* gresolver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gresolver.h; sourceTree = "<group>"; };
|
||||||
@ -516,8 +644,6 @@
|
|||||||
EE303B8B0D326C9600D840F2 /* mingw.mak */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = mingw.mak; sourceTree = "<group>"; };
|
EE303B8B0D326C9600D840F2 /* mingw.mak */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = mingw.mak; sourceTree = "<group>"; };
|
||||||
EE303B8D0D326C9600D840F2 /* gadminserver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gadminserver.cpp; sourceTree = "<group>"; };
|
EE303B8D0D326C9600D840F2 /* gadminserver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gadminserver.cpp; sourceTree = "<group>"; };
|
||||||
EE303B8E0D326C9600D840F2 /* gadminserver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gadminserver.h; sourceTree = "<group>"; };
|
EE303B8E0D326C9600D840F2 /* gadminserver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gadminserver.h; sourceTree = "<group>"; };
|
||||||
EE303B8F0D326C9600D840F2 /* gbase64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gbase64.cpp; sourceTree = "<group>"; };
|
|
||||||
EE303B900D326C9600D840F2 /* gbase64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gbase64.h; sourceTree = "<group>"; };
|
|
||||||
EE303B910D326C9600D840F2 /* gclientprotocol.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gclientprotocol.cpp; sourceTree = "<group>"; };
|
EE303B910D326C9600D840F2 /* gclientprotocol.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gclientprotocol.cpp; sourceTree = "<group>"; };
|
||||||
EE303B920D326C9600D840F2 /* gclientprotocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gclientprotocol.h; sourceTree = "<group>"; };
|
EE303B920D326C9600D840F2 /* gclientprotocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gclientprotocol.h; sourceTree = "<group>"; };
|
||||||
EE303B930D326C9600D840F2 /* gexecutableprocessor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gexecutableprocessor.cpp; sourceTree = "<group>"; };
|
EE303B930D326C9600D840F2 /* gexecutableprocessor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gexecutableprocessor.cpp; sourceTree = "<group>"; };
|
||||||
@ -557,13 +683,6 @@
|
|||||||
EE303BB50D326C9600D840F2 /* gprotocolmessagestore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gprotocolmessagestore.h; sourceTree = "<group>"; };
|
EE303BB50D326C9600D840F2 /* gprotocolmessagestore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gprotocolmessagestore.h; sourceTree = "<group>"; };
|
||||||
EE303BB60D326C9600D840F2 /* grequestclient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = grequestclient.cpp; sourceTree = "<group>"; };
|
EE303BB60D326C9600D840F2 /* grequestclient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = grequestclient.cpp; sourceTree = "<group>"; };
|
||||||
EE303BB70D326C9600D840F2 /* grequestclient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = grequestclient.h; sourceTree = "<group>"; };
|
EE303BB70D326C9600D840F2 /* grequestclient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = grequestclient.h; sourceTree = "<group>"; };
|
||||||
EE303BB80D326C9600D840F2 /* gsasl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gsasl.h; sourceTree = "<group>"; };
|
|
||||||
EE303BB90D326C9600D840F2 /* gsasl_gnu.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gsasl_gnu.cpp; sourceTree = "<group>"; };
|
|
||||||
EE303BBA0D326C9600D840F2 /* gsasl_native.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gsasl_native.cpp; sourceTree = "<group>"; };
|
|
||||||
EE303BBB0D326C9600D840F2 /* gsasl_none.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gsasl_none.cpp; sourceTree = "<group>"; };
|
|
||||||
EE303BBC0D326C9600D840F2 /* gsecrets.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gsecrets.h; sourceTree = "<group>"; };
|
|
||||||
EE303BBD0D326C9600D840F2 /* gsecrets_full.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gsecrets_full.cpp; sourceTree = "<group>"; };
|
|
||||||
EE303BBE0D326C9600D840F2 /* gsecrets_none.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gsecrets_none.cpp; sourceTree = "<group>"; };
|
|
||||||
EE303BBF0D326C9600D840F2 /* gserverprotocol.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gserverprotocol.cpp; sourceTree = "<group>"; };
|
EE303BBF0D326C9600D840F2 /* gserverprotocol.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gserverprotocol.cpp; sourceTree = "<group>"; };
|
||||||
EE303BC00D326C9600D840F2 /* gserverprotocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gserverprotocol.h; sourceTree = "<group>"; };
|
EE303BC00D326C9600D840F2 /* gserverprotocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gserverprotocol.h; sourceTree = "<group>"; };
|
||||||
EE303BC10D326C9600D840F2 /* gsmtp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gsmtp.h; sourceTree = "<group>"; };
|
EE303BC10D326C9600D840F2 /* gsmtp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gsmtp.h; sourceTree = "<group>"; };
|
||||||
@ -595,7 +714,6 @@
|
|||||||
EE303BDC0D326C9600D840F2 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
|
EE303BDC0D326C9600D840F2 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
|
||||||
EE303BDD0D326C9600D840F2 /* Makefile.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.in; sourceTree = "<group>"; };
|
EE303BDD0D326C9600D840F2 /* Makefile.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.in; sourceTree = "<group>"; };
|
||||||
EE303BDE0D326C9600D840F2 /* mingw.mak */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = mingw.mak; sourceTree = "<group>"; };
|
EE303BDE0D326C9600D840F2 /* mingw.mak */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = mingw.mak; sourceTree = "<group>"; };
|
||||||
EE303BE00D326C9600D840F2 /* boot.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = boot.cpp; sourceTree = "<group>"; };
|
|
||||||
EE303BE10D326C9600D840F2 /* boot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = boot.h; sourceTree = "<group>"; };
|
EE303BE10D326C9600D840F2 /* boot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = boot.h; sourceTree = "<group>"; };
|
||||||
EE303BE20D326C9600D840F2 /* dir.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dir.cpp; sourceTree = "<group>"; };
|
EE303BE20D326C9600D840F2 /* dir.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dir.cpp; sourceTree = "<group>"; };
|
||||||
EE303BE30D326C9600D840F2 /* dir.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dir.h; sourceTree = "<group>"; };
|
EE303BE30D326C9600D840F2 /* dir.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dir.h; sourceTree = "<group>"; };
|
||||||
@ -605,19 +723,16 @@
|
|||||||
EE303BE70D326C9600D840F2 /* gcominit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gcominit.h; sourceTree = "<group>"; };
|
EE303BE70D326C9600D840F2 /* gcominit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gcominit.h; sourceTree = "<group>"; };
|
||||||
EE303BE80D326C9600D840F2 /* gdialog.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gdialog.cpp; sourceTree = "<group>"; };
|
EE303BE80D326C9600D840F2 /* gdialog.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gdialog.cpp; sourceTree = "<group>"; };
|
||||||
EE303BE90D326C9600D840F2 /* gdialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gdialog.h; sourceTree = "<group>"; };
|
EE303BE90D326C9600D840F2 /* gdialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gdialog.h; sourceTree = "<group>"; };
|
||||||
EE303BEA0D326C9600D840F2 /* glink.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glink.cpp; sourceTree = "<group>"; };
|
|
||||||
EE303BEB0D326C9600D840F2 /* glink.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glink.h; sourceTree = "<group>"; };
|
EE303BEB0D326C9600D840F2 /* glink.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glink.h; sourceTree = "<group>"; };
|
||||||
EE303BEC0D326C9600D840F2 /* gpage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gpage.cpp; sourceTree = "<group>"; };
|
EE303BEC0D326C9600D840F2 /* gpage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gpage.cpp; sourceTree = "<group>"; };
|
||||||
EE303BED0D326C9600D840F2 /* gpage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gpage.h; sourceTree = "<group>"; };
|
EE303BED0D326C9600D840F2 /* gpage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gpage.h; sourceTree = "<group>"; };
|
||||||
EE303BEE0D326C9600D840F2 /* guimain.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guimain.cpp; sourceTree = "<group>"; };
|
EE303BEE0D326C9600D840F2 /* guimain.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = guimain.cpp; sourceTree = "<group>"; };
|
||||||
EE303BEF0D326C9600D840F2 /* gunpack.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gunpack.cpp; sourceTree = "<group>"; };
|
EE303BEF0D326C9600D840F2 /* gunpack.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gunpack.cpp; sourceTree = "<group>"; };
|
||||||
EE303BF00D326C9600D840F2 /* gunpack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gunpack.h; sourceTree = "<group>"; };
|
EE303BF00D326C9600D840F2 /* gunpack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gunpack.h; sourceTree = "<group>"; };
|
||||||
EE303BF10D326C9600D840F2 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
|
||||||
EE303BF20D326C9600D840F2 /* installer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = installer.cpp; sourceTree = "<group>"; };
|
EE303BF20D326C9600D840F2 /* installer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = installer.cpp; sourceTree = "<group>"; };
|
||||||
EE303BF30D326C9600D840F2 /* installer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = installer.h; sourceTree = "<group>"; };
|
EE303BF30D326C9600D840F2 /* installer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = installer.h; sourceTree = "<group>"; };
|
||||||
EE303BF40D326C9600D840F2 /* legal.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = legal.cpp; sourceTree = "<group>"; };
|
EE303BF40D326C9600D840F2 /* legal.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = legal.cpp; sourceTree = "<group>"; };
|
||||||
EE303BF50D326C9600D840F2 /* legal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = legal.h; sourceTree = "<group>"; };
|
EE303BF50D326C9600D840F2 /* legal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = legal.h; sourceTree = "<group>"; };
|
||||||
EE303BF60D326C9600D840F2 /* mac.mak */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = mac.mak; sourceTree = "<group>"; };
|
|
||||||
EE303BF70D326C9600D840F2 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
|
EE303BF70D326C9600D840F2 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
|
||||||
EE303BF80D326C9600D840F2 /* Makefile.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.in; sourceTree = "<group>"; };
|
EE303BF80D326C9600D840F2 /* Makefile.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.in; sourceTree = "<group>"; };
|
||||||
EE303BF90D326C9600D840F2 /* mingw.mak */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = mingw.mak; sourceTree = "<group>"; };
|
EE303BF90D326C9600D840F2 /* mingw.mak */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = mingw.mak; sourceTree = "<group>"; };
|
||||||
@ -635,22 +750,16 @@
|
|||||||
EE303C060D326C9600D840F2 /* commandline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = commandline.h; sourceTree = "<group>"; };
|
EE303C060D326C9600D840F2 /* commandline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = commandline.h; sourceTree = "<group>"; };
|
||||||
EE303C070D326C9600D840F2 /* commandline_full.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = commandline_full.cpp; sourceTree = "<group>"; };
|
EE303C070D326C9600D840F2 /* commandline_full.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = commandline_full.cpp; sourceTree = "<group>"; };
|
||||||
EE303C080D326C9600D840F2 /* commandline_simple.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = commandline_simple.cpp; sourceTree = "<group>"; };
|
EE303C080D326C9600D840F2 /* commandline_simple.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = commandline_simple.cpp; sourceTree = "<group>"; };
|
||||||
EE303C090D326C9600D840F2 /* common.dsp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = common.dsp; sourceTree = "<group>"; };
|
|
||||||
EE303C0A0D326C9600D840F2 /* configuration.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = configuration.cpp; sourceTree = "<group>"; };
|
EE303C0A0D326C9600D840F2 /* configuration.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = configuration.cpp; sourceTree = "<group>"; };
|
||||||
EE303C0B0D326C9600D840F2 /* configuration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = configuration.h; sourceTree = "<group>"; };
|
EE303C0B0D326C9600D840F2 /* configuration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = configuration.h; sourceTree = "<group>"; };
|
||||||
EE303C0C0D326C9600D840F2 /* doxygen.cfg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = doxygen.cfg; sourceTree = "<group>"; };
|
|
||||||
EE303C0D0D326C9600D840F2 /* doxygen.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = doxygen.h; sourceTree = "<group>"; };
|
EE303C0D0D326C9600D840F2 /* doxygen.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = doxygen.h; sourceTree = "<group>"; };
|
||||||
EE303C0E0D326C9600D840F2 /* emailrelay.dsp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = emailrelay.dsp; sourceTree = "<group>"; };
|
|
||||||
EE303C0F0D326C9600D840F2 /* emailrelay.rc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = emailrelay.rc; sourceTree = "<group>"; };
|
EE303C0F0D326C9600D840F2 /* emailrelay.rc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = emailrelay.rc; sourceTree = "<group>"; };
|
||||||
EE303C100D326C9600D840F2 /* filter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = filter.cpp; sourceTree = "<group>"; };
|
EE303C100D326C9600D840F2 /* filter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = filter.cpp; sourceTree = "<group>"; };
|
||||||
EE303C110D326C9600D840F2 /* filter.dsp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = filter.dsp; sourceTree = "<group>"; };
|
|
||||||
EE303C120D326C9600D840F2 /* filter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = filter.h; sourceTree = "<group>"; };
|
EE303C120D326C9600D840F2 /* filter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = filter.h; sourceTree = "<group>"; };
|
||||||
EE303C130D326C9600D840F2 /* filter_copy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = filter_copy.cpp; sourceTree = "<group>"; };
|
EE303C130D326C9600D840F2 /* filter_copy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = filter_copy.cpp; sourceTree = "<group>"; };
|
||||||
EE303C140D326C9600D840F2 /* icon-32.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = "icon-32.ico"; sourceTree = "<group>"; };
|
|
||||||
EE303C150D326C9600D840F2 /* icon2.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = icon2.ico; sourceTree = "<group>"; };
|
EE303C150D326C9600D840F2 /* icon2.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = icon2.ico; sourceTree = "<group>"; };
|
||||||
EE303C160D326C9600D840F2 /* icon3.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = icon3.ico; sourceTree = "<group>"; };
|
EE303C160D326C9600D840F2 /* icon3.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = icon3.ico; sourceTree = "<group>"; };
|
||||||
EE303C170D326C9600D840F2 /* icon4.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = icon4.ico; sourceTree = "<group>"; };
|
EE303C170D326C9600D840F2 /* icon4.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = icon4.ico; sourceTree = "<group>"; };
|
||||||
EE303C180D326C9600D840F2 /* icon5.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = icon5.ico; sourceTree = "<group>"; };
|
|
||||||
EE303C190D326C9600D840F2 /* legal.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = legal.cpp; sourceTree = "<group>"; };
|
EE303C190D326C9600D840F2 /* legal.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = legal.cpp; sourceTree = "<group>"; };
|
||||||
EE303C1A0D326C9600D840F2 /* legal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = legal.h; sourceTree = "<group>"; };
|
EE303C1A0D326C9600D840F2 /* legal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = legal.h; sourceTree = "<group>"; };
|
||||||
EE303C1B0D326C9600D840F2 /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = "<group>"; };
|
EE303C1B0D326C9600D840F2 /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = "<group>"; };
|
||||||
@ -664,20 +773,16 @@
|
|||||||
EE303C230D326C9700D840F2 /* output.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = output.cpp; sourceTree = "<group>"; };
|
EE303C230D326C9700D840F2 /* output.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = output.cpp; sourceTree = "<group>"; };
|
||||||
EE303C240D326C9700D840F2 /* output.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = output.h; sourceTree = "<group>"; };
|
EE303C240D326C9700D840F2 /* output.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = output.h; sourceTree = "<group>"; };
|
||||||
EE303C250D326C9700D840F2 /* passwd.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = passwd.cpp; sourceTree = "<group>"; };
|
EE303C250D326C9700D840F2 /* passwd.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = passwd.cpp; sourceTree = "<group>"; };
|
||||||
EE303C260D326C9700D840F2 /* passwd.dsp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = passwd.dsp; sourceTree = "<group>"; };
|
|
||||||
EE303C270D326C9700D840F2 /* poke.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = poke.c; sourceTree = "<group>"; };
|
EE303C270D326C9700D840F2 /* poke.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = poke.c; sourceTree = "<group>"; };
|
||||||
EE303C280D326C9700D840F2 /* poke.dsp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = poke.dsp; sourceTree = "<group>"; };
|
|
||||||
EE303C290D326C9700D840F2 /* resource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = resource.h; sourceTree = "<group>"; };
|
EE303C290D326C9700D840F2 /* resource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = resource.h; sourceTree = "<group>"; };
|
||||||
EE303C2A0D326C9700D840F2 /* run.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = run.cpp; sourceTree = "<group>"; };
|
EE303C2A0D326C9700D840F2 /* run.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = run.cpp; sourceTree = "<group>"; };
|
||||||
EE303C2B0D326C9700D840F2 /* run.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = run.h; sourceTree = "<group>"; };
|
EE303C2B0D326C9700D840F2 /* run.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = run.h; sourceTree = "<group>"; };
|
||||||
EE303C2C0D326C9700D840F2 /* service.dsp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = service.dsp; sourceTree = "<group>"; };
|
|
||||||
EE303C2D0D326C9700D840F2 /* service_install.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = service_install.cpp; sourceTree = "<group>"; };
|
EE303C2D0D326C9700D840F2 /* service_install.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = service_install.cpp; sourceTree = "<group>"; };
|
||||||
EE303C2E0D326C9700D840F2 /* service_install.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = service_install.h; sourceTree = "<group>"; };
|
EE303C2E0D326C9700D840F2 /* service_install.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = service_install.h; sourceTree = "<group>"; };
|
||||||
EE303C2F0D326C9700D840F2 /* service_remove.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = service_remove.cpp; sourceTree = "<group>"; };
|
EE303C2F0D326C9700D840F2 /* service_remove.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = service_remove.cpp; sourceTree = "<group>"; };
|
||||||
EE303C300D326C9700D840F2 /* service_remove.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = service_remove.h; sourceTree = "<group>"; };
|
EE303C300D326C9700D840F2 /* service_remove.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = service_remove.h; sourceTree = "<group>"; };
|
||||||
EE303C310D326C9700D840F2 /* service_wrapper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = service_wrapper.cpp; sourceTree = "<group>"; };
|
EE303C310D326C9700D840F2 /* service_wrapper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = service_wrapper.cpp; sourceTree = "<group>"; };
|
||||||
EE303C320D326C9700D840F2 /* submit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = submit.cpp; sourceTree = "<group>"; };
|
EE303C320D326C9700D840F2 /* submit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = submit.cpp; sourceTree = "<group>"; };
|
||||||
EE303C330D326C9700D840F2 /* submit.dsp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = submit.dsp; sourceTree = "<group>"; };
|
|
||||||
EE303C340D326C9700D840F2 /* winapp.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = winapp.cpp; sourceTree = "<group>"; };
|
EE303C340D326C9700D840F2 /* winapp.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = winapp.cpp; sourceTree = "<group>"; };
|
||||||
EE303C350D326C9700D840F2 /* winapp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = winapp.h; sourceTree = "<group>"; };
|
EE303C350D326C9700D840F2 /* winapp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = winapp.h; sourceTree = "<group>"; };
|
||||||
EE303C360D326C9700D840F2 /* winform.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = winform.cpp; sourceTree = "<group>"; };
|
EE303C360D326C9700D840F2 /* winform.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = winform.cpp; sourceTree = "<group>"; };
|
||||||
@ -685,10 +790,6 @@
|
|||||||
EE303C380D326C9700D840F2 /* winmain.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = winmain.cpp; sourceTree = "<group>"; };
|
EE303C380D326C9700D840F2 /* winmain.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = winmain.cpp; sourceTree = "<group>"; };
|
||||||
EE303C390D326C9700D840F2 /* winmenu.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = winmenu.cpp; sourceTree = "<group>"; };
|
EE303C390D326C9700D840F2 /* winmenu.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = winmenu.cpp; sourceTree = "<group>"; };
|
||||||
EE303C3A0D326C9700D840F2 /* winmenu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = winmenu.h; sourceTree = "<group>"; };
|
EE303C3A0D326C9700D840F2 /* winmenu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = winmenu.h; sourceTree = "<group>"; };
|
||||||
EE303C3B0D326C9700D840F2 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
|
|
||||||
EE303C3C0D326C9700D840F2 /* Makefile.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.in; sourceTree = "<group>"; };
|
|
||||||
EE303C3D0D326C9700D840F2 /* mingw-common.mak */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = "mingw-common.mak"; sourceTree = "<group>"; };
|
|
||||||
EE303C3E0D326C9700D840F2 /* mingw.mak */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = mingw.mak; sourceTree = "<group>"; };
|
|
||||||
EE303C400D326C9700D840F2 /* gappbase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gappbase.cpp; sourceTree = "<group>"; };
|
EE303C400D326C9700D840F2 /* gappbase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gappbase.cpp; sourceTree = "<group>"; };
|
||||||
EE303C410D326C9700D840F2 /* gappbase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gappbase.h; sourceTree = "<group>"; };
|
EE303C410D326C9700D840F2 /* gappbase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gappbase.h; sourceTree = "<group>"; };
|
||||||
EE303C420D326C9700D840F2 /* gappinst.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gappinst.cpp; sourceTree = "<group>"; };
|
EE303C420D326C9700D840F2 /* gappinst.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gappinst.cpp; sourceTree = "<group>"; };
|
||||||
@ -723,38 +824,55 @@
|
|||||||
EE303E120D329BAA00D840F2 /* libgpop.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libgpop.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
EE303E120D329BAA00D840F2 /* libgpop.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libgpop.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
EE303E230D329BFF00D840F2 /* libgsmtp.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libgsmtp.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
EE303E230D329BFF00D840F2 /* libgsmtp.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libgsmtp.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
EE303E4F0D329D8F00D840F2 /* libgssl.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libgssl.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
EE303E4F0D329D8F00D840F2 /* libgssl.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libgssl.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
EE303EA90D366E5500D840F2 /* auth.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = auth.png; sourceTree = "<group>"; };
|
|
||||||
EE303EAA0D366E5500D840F2 /* developer.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = developer.txt; sourceTree = "<group>"; };
|
EE303EAA0D366E5500D840F2 /* developer.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = developer.txt; sourceTree = "<group>"; };
|
||||||
EE303EAB0D366E5500D840F2 /* doxygen_header.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = doxygen_header.html; sourceTree = "<group>"; };
|
|
||||||
EE303EAC0D366E5500D840F2 /* doxygen_missing.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = doxygen_missing.html; sourceTree = "<group>"; };
|
|
||||||
EE303EAD0D366E5500D840F2 /* emailrelay-filter-copy.1 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.man; path = "emailrelay-filter-copy.1"; sourceTree = "<group>"; };
|
EE303EAD0D366E5500D840F2 /* emailrelay-filter-copy.1 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.man; path = "emailrelay-filter-copy.1"; sourceTree = "<group>"; };
|
||||||
EE303EAE0D366E5500D840F2 /* emailrelay-man.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "emailrelay-man.html"; sourceTree = "<group>"; };
|
EE303EAE0D366E5500D840F2 /* emailrelay-man.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "emailrelay-man.html"; sourceTree = "<group>"; };
|
||||||
EE303EAF0D366E5500D840F2 /* emailrelay-passwd.1 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.man; path = "emailrelay-passwd.1"; sourceTree = "<group>"; };
|
EE303EAF0D366E5500D840F2 /* emailrelay-passwd.1 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.man; path = "emailrelay-passwd.1"; sourceTree = "<group>"; };
|
||||||
EE303EB00D366E5500D840F2 /* emailrelay-poke.1 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.man; path = "emailrelay-poke.1"; sourceTree = "<group>"; };
|
EE303EB00D366E5500D840F2 /* emailrelay-poke.1 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.man; path = "emailrelay-poke.1"; sourceTree = "<group>"; };
|
||||||
EE303EB10D366E5500D840F2 /* emailrelay-submit.1 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.man; path = "emailrelay-submit.1"; sourceTree = "<group>"; };
|
EE303EB10D366E5500D840F2 /* emailrelay-submit.1 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.man; path = "emailrelay-submit.1"; sourceTree = "<group>"; };
|
||||||
EE303EB20D366E5500D840F2 /* emailrelay.1 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.man; path = emailrelay.1; sourceTree = "<group>"; };
|
EE303EB20D366E5500D840F2 /* emailrelay.1 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.man; path = emailrelay.1; sourceTree = "<group>"; };
|
||||||
EE303EB30D366E5500D840F2 /* emailrelay.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.css; path = emailrelay.css; sourceTree = "<group>"; };
|
|
||||||
EE303EB40D366E5500D840F2 /* gnet-classes.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "gnet-classes.png"; sourceTree = "<group>"; };
|
|
||||||
EE303EB50D366E5500D840F2 /* gnet-client.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "gnet-client.png"; sourceTree = "<group>"; };
|
|
||||||
EE303EB60D366E5500D840F2 /* gsmtp-classes.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "gsmtp-classes.png"; sourceTree = "<group>"; };
|
|
||||||
EE303EB70D366E5500D840F2 /* gsmtp-serverprotocol.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "gsmtp-serverprotocol.png"; sourceTree = "<group>"; };
|
|
||||||
EE303EB80D366E5500D840F2 /* index.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = index.html; sourceTree = "<group>"; };
|
EE303EB80D366E5500D840F2 /* index.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = index.html; sourceTree = "<group>"; };
|
||||||
EE303EB90D366E5500D840F2 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
|
EE303EB90D366E5500D840F2 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
|
||||||
EE303EBA0D366E5500D840F2 /* Makefile.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.in; sourceTree = "<group>"; };
|
EE303EBA0D366E5500D840F2 /* Makefile.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Makefile.in; sourceTree = "<group>"; };
|
||||||
EE303EBB0D366E5500D840F2 /* reference.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = reference.txt; sourceTree = "<group>"; };
|
EE303EBB0D366E5500D840F2 /* reference.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = reference.txt; sourceTree = "<group>"; };
|
||||||
EE303EBC0D366E5500D840F2 /* sequence-3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "sequence-3.png"; sourceTree = "<group>"; };
|
|
||||||
EE303EBD0D366E5500D840F2 /* userguide.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = userguide.txt; sourceTree = "<group>"; };
|
EE303EBD0D366E5500D840F2 /* userguide.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = userguide.txt; sourceTree = "<group>"; };
|
||||||
EE303EBE0D366E5500D840F2 /* windows.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = windows.txt; sourceTree = "<group>"; };
|
EE303EBE0D366E5500D840F2 /* windows.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = windows.txt; sourceTree = "<group>"; };
|
||||||
|
EE89C03C16A5B5EB006CBE2E /* gauth.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = gauth.h; path = gauth/gauth.h; sourceTree = "<group>"; };
|
||||||
|
EE89C03D16A5B5EB006CBE2E /* gsaslclient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = gsaslclient.h; path = gauth/gsaslclient.h; sourceTree = "<group>"; };
|
||||||
|
EE89C03E16A5B5EB006CBE2E /* gsaslclient_native.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = gsaslclient_native.cpp; path = gauth/gsaslclient_native.cpp; sourceTree = "<group>"; };
|
||||||
|
EE89C03F16A5B5EB006CBE2E /* gsaslclient_none.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = gsaslclient_none.cpp; path = gauth/gsaslclient_none.cpp; sourceTree = "<group>"; };
|
||||||
|
EE89C04016A5B5EB006CBE2E /* gsaslserver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = gsaslserver.cpp; path = gauth/gsaslserver.cpp; sourceTree = "<group>"; };
|
||||||
|
EE89C04116A5B5EB006CBE2E /* gsaslserver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = gsaslserver.h; path = gauth/gsaslserver.h; sourceTree = "<group>"; };
|
||||||
|
EE89C04216A5B5EB006CBE2E /* gsaslserverbasic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = gsaslserverbasic.h; path = gauth/gsaslserverbasic.h; sourceTree = "<group>"; };
|
||||||
|
EE89C04316A5B5EB006CBE2E /* gsaslserverbasic_native.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = gsaslserverbasic_native.cpp; path = gauth/gsaslserverbasic_native.cpp; sourceTree = "<group>"; };
|
||||||
|
EE89C04416A5B5EB006CBE2E /* gsaslserverbasic_none.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = gsaslserverbasic_none.cpp; path = gauth/gsaslserverbasic_none.cpp; sourceTree = "<group>"; };
|
||||||
|
EE89C04516A5B5EB006CBE2E /* gsaslserverfactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = gsaslserverfactory.h; path = gauth/gsaslserverfactory.h; sourceTree = "<group>"; };
|
||||||
|
EE89C04616A5B5EB006CBE2E /* gsaslserverfactory_native.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = gsaslserverfactory_native.cpp; path = gauth/gsaslserverfactory_native.cpp; sourceTree = "<group>"; };
|
||||||
|
EE89C04716A5B5EB006CBE2E /* gsaslserverfactory_pam.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = gsaslserverfactory_pam.cpp; path = gauth/gsaslserverfactory_pam.cpp; sourceTree = "<group>"; };
|
||||||
|
EE89C04816A5B5EB006CBE2E /* gsaslserverpam.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = gsaslserverpam.cpp; path = gauth/gsaslserverpam.cpp; sourceTree = "<group>"; };
|
||||||
|
EE89C04916A5B5EB006CBE2E /* gsaslserverpam.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = gsaslserverpam.h; path = gauth/gsaslserverpam.h; sourceTree = "<group>"; };
|
||||||
|
EE89C04A16A5B5EB006CBE2E /* gsecrets.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = gsecrets.h; path = gauth/gsecrets.h; sourceTree = "<group>"; };
|
||||||
|
EE89C04B16A5B5EB006CBE2E /* gsecrets_full.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = gsecrets_full.cpp; path = gauth/gsecrets_full.cpp; sourceTree = "<group>"; };
|
||||||
|
EE89C04C16A5B5EB006CBE2E /* gsecrets_none.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = gsecrets_none.cpp; path = gauth/gsecrets_none.cpp; sourceTree = "<group>"; };
|
||||||
|
EE89C04D16A5B5EB006CBE2E /* gsecrets_pam.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = gsecrets_pam.cpp; path = gauth/gsecrets_pam.cpp; sourceTree = "<group>"; };
|
||||||
|
EE89C04E16A5B5EB006CBE2E /* gsecretsfile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = gsecretsfile.cpp; path = gauth/gsecretsfile.cpp; sourceTree = "<group>"; };
|
||||||
|
EE89C04F16A5B5EB006CBE2E /* gsecretsfile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = gsecretsfile.h; path = gauth/gsecretsfile.h; sourceTree = "<group>"; };
|
||||||
|
EE89C05016A5B5EB006CBE2E /* gvalid.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = gvalid.cpp; path = gauth/gvalid.cpp; sourceTree = "<group>"; };
|
||||||
|
EE89C05116A5B5EB006CBE2E /* gvalid.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = gvalid.h; path = gauth/gvalid.h; sourceTree = "<group>"; };
|
||||||
|
EE89C06316A5B722006CBE2E /* garg_mac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = garg_mac.cpp; sourceTree = "<group>"; };
|
||||||
|
EE89C06516A5B7A4006CBE2E /* gbase64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gbase64.cpp; sourceTree = "<group>"; };
|
||||||
|
EE89C06616A5B7A4006CBE2E /* gbase64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gbase64.h; sourceTree = "<group>"; };
|
||||||
|
EE89C06A16A5B7A4006CBE2E /* gpam.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gpam.cpp; sourceTree = "<group>"; };
|
||||||
|
EE89C06B16A5B7A4006CBE2E /* gpam.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gpam.h; sourceTree = "<group>"; };
|
||||||
|
EE89C06C16A5B7A4006CBE2E /* gpam_linux.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gpam_linux.cpp; sourceTree = "<group>"; };
|
||||||
|
EE89C06D16A5B7A4006CBE2E /* gpam_none.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gpam_none.cpp; sourceTree = "<group>"; };
|
||||||
|
EE89C06E16A5B7A4006CBE2E /* gstrings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gstrings.cpp; sourceTree = "<group>"; };
|
||||||
|
EE89C0B916A5D306006CBE2E /* gdescriptor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gdescriptor.cpp; sourceTree = "<group>"; };
|
||||||
EE99183F0D91664E00FB06D5 /* emailrelay-filter-copy */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "emailrelay-filter-copy"; sourceTree = BUILT_PRODUCTS_DIR; };
|
EE99183F0D91664E00FB06D5 /* emailrelay-filter-copy */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "emailrelay-filter-copy"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
EE9918410D91664F00FB06D5 /* Info copy.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Info copy.plist"; sourceTree = "<group>"; };
|
|
||||||
EE9918580D91693000FB06D5 /* emailrelay-start */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "emailrelay-start"; sourceTree = BUILT_PRODUCTS_DIR; };
|
EE9918580D91693000FB06D5 /* emailrelay-start */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "emailrelay-start"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
EE99185A0D91693000FB06D5 /* Info copy 2.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Info copy 2.plist"; sourceTree = "<group>"; };
|
|
||||||
EE9918680D91695000FB06D5 /* emailrelay-passwd */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "emailrelay-passwd"; sourceTree = BUILT_PRODUCTS_DIR; };
|
EE9918680D91695000FB06D5 /* emailrelay-passwd */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "emailrelay-passwd"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
EE99186A0D91695000FB06D5 /* Info copy 3.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Info copy 3.plist"; sourceTree = "<group>"; };
|
|
||||||
EE9918780D91697900FB06D5 /* emailrelay-poke */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "emailrelay-poke"; sourceTree = BUILT_PRODUCTS_DIR; };
|
EE9918780D91697900FB06D5 /* emailrelay-poke */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "emailrelay-poke"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
EE99187A0D91697900FB06D5 /* Info copy 4.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Info copy 4.plist"; sourceTree = "<group>"; };
|
|
||||||
EE9918880D91698A00FB06D5 /* emailrelay-submit */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "emailrelay-submit"; sourceTree = BUILT_PRODUCTS_DIR; };
|
EE9918880D91698A00FB06D5 /* emailrelay-submit */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "emailrelay-submit"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
EE99188A0D91698A00FB06D5 /* Info copy 5.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Info copy 5.plist"; sourceTree = "<group>"; };
|
|
||||||
EE99188B0D9169F700FB06D5 /* start.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = start.cpp; sourceTree = "<group>"; };
|
EE99188B0D9169F700FB06D5 /* start.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = start.cpp; sourceTree = "<group>"; };
|
||||||
/* End PBXFileReference section */
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
@ -847,11 +965,6 @@
|
|||||||
08FB7795FE84155DC02AAC07 /* Source */,
|
08FB7795FE84155DC02AAC07 /* Source */,
|
||||||
C6859E8C029090F304C91782 /* Documentation */,
|
C6859E8C029090F304C91782 /* Documentation */,
|
||||||
1AB674ADFE9D54B511CA2CBB /* Products */,
|
1AB674ADFE9D54B511CA2CBB /* Products */,
|
||||||
EE9918410D91664F00FB06D5 /* Info copy.plist */,
|
|
||||||
EE99185A0D91693000FB06D5 /* Info copy 2.plist */,
|
|
||||||
EE99186A0D91695000FB06D5 /* Info copy 3.plist */,
|
|
||||||
EE99187A0D91697900FB06D5 /* Info copy 4.plist */,
|
|
||||||
EE99188A0D91698A00FB06D5 /* Info copy 5.plist */,
|
|
||||||
);
|
);
|
||||||
name = emailrelay;
|
name = emailrelay;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -891,8 +1004,7 @@
|
|||||||
EE303AD20D326C9600D840F2 /* src */ = {
|
EE303AD20D326C9600D840F2 /* src */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
EE303AD30D326C9600D840F2 /* emailrelay.dsw */,
|
EE89C03B16A5B517006CBE2E /* gauth */,
|
||||||
EE303AD40D326C9600D840F2 /* fragments */,
|
|
||||||
EE303AD80D326C9600D840F2 /* glib */,
|
EE303AD80D326C9600D840F2 /* glib */,
|
||||||
EE303B370D326C9600D840F2 /* gnet */,
|
EE303B370D326C9600D840F2 /* gnet */,
|
||||||
EE303B7A0D326C9600D840F2 /* gpop */,
|
EE303B7A0D326C9600D840F2 /* gpop */,
|
||||||
@ -900,28 +1012,24 @@
|
|||||||
EE303BD80D326C9600D840F2 /* gssl */,
|
EE303BD80D326C9600D840F2 /* gssl */,
|
||||||
EE303BDF0D326C9600D840F2 /* gui */,
|
EE303BDF0D326C9600D840F2 /* gui */,
|
||||||
EE303C020D326C9600D840F2 /* main */,
|
EE303C020D326C9600D840F2 /* main */,
|
||||||
EE303C3B0D326C9700D840F2 /* Makefile.am */,
|
|
||||||
EE303C3C0D326C9700D840F2 /* Makefile.in */,
|
|
||||||
EE303C3D0D326C9700D840F2 /* mingw-common.mak */,
|
|
||||||
EE303C3E0D326C9700D840F2 /* mingw.mak */,
|
|
||||||
EE303C3F0D326C9700D840F2 /* win32 */,
|
EE303C3F0D326C9700D840F2 /* win32 */,
|
||||||
);
|
);
|
||||||
path = src;
|
path = src;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
EE303AD40D326C9600D840F2 /* fragments */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
EE303AD50D326C9600D840F2 /* empty.cpp */,
|
|
||||||
EE303AD60D326C9600D840F2 /* Makefile.am */,
|
|
||||||
EE303AD70D326C9600D840F2 /* Makefile.in */,
|
|
||||||
);
|
|
||||||
path = fragments;
|
|
||||||
sourceTree = "<group>";
|
|
||||||
};
|
|
||||||
EE303AD80D326C9600D840F2 /* glib */ = {
|
EE303AD80D326C9600D840F2 /* glib */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
EE1753BA16B852AD00575457 /* genvironment.h */,
|
||||||
|
EE1753BB16B852AD00575457 /* genvironment_unix.cpp */,
|
||||||
|
EE89C06516A5B7A4006CBE2E /* gbase64.cpp */,
|
||||||
|
EE89C06616A5B7A4006CBE2E /* gbase64.h */,
|
||||||
|
EE89C06A16A5B7A4006CBE2E /* gpam.cpp */,
|
||||||
|
EE89C06B16A5B7A4006CBE2E /* gpam.h */,
|
||||||
|
EE89C06C16A5B7A4006CBE2E /* gpam_linux.cpp */,
|
||||||
|
EE89C06D16A5B7A4006CBE2E /* gpam_none.cpp */,
|
||||||
|
EE89C06E16A5B7A4006CBE2E /* gstrings.cpp */,
|
||||||
|
EE89C06316A5B722006CBE2E /* garg_mac.cpp */,
|
||||||
EE303AD90D326C9600D840F2 /* garg.cpp */,
|
EE303AD90D326C9600D840F2 /* garg.cpp */,
|
||||||
EE303ADA0D326C9600D840F2 /* garg.h */,
|
EE303ADA0D326C9600D840F2 /* garg.h */,
|
||||||
EE303ADB0D326C9600D840F2 /* garg_unix.cpp */,
|
EE303ADB0D326C9600D840F2 /* garg_unix.cpp */,
|
||||||
@ -930,7 +1038,6 @@
|
|||||||
EE303ADE0D326C9600D840F2 /* gcleanup.h */,
|
EE303ADE0D326C9600D840F2 /* gcleanup.h */,
|
||||||
EE303ADF0D326C9600D840F2 /* gcleanup_unix.cpp */,
|
EE303ADF0D326C9600D840F2 /* gcleanup_unix.cpp */,
|
||||||
EE303AE00D326C9600D840F2 /* gcleanup_win32.cpp */,
|
EE303AE00D326C9600D840F2 /* gcleanup_win32.cpp */,
|
||||||
EE303AE10D326C9600D840F2 /* gconvert.h */,
|
|
||||||
EE303AE20D326C9600D840F2 /* gcounter.cpp */,
|
EE303AE20D326C9600D840F2 /* gcounter.cpp */,
|
||||||
EE303AE30D326C9600D840F2 /* gcounter.h */,
|
EE303AE30D326C9600D840F2 /* gcounter.h */,
|
||||||
EE303AE40D326C9600D840F2 /* gdaemon.h */,
|
EE303AE40D326C9600D840F2 /* gdaemon.h */,
|
||||||
@ -1023,6 +1130,9 @@
|
|||||||
EE303B370D326C9600D840F2 /* gnet */ = {
|
EE303B370D326C9600D840F2 /* gnet */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
EE1753AE16B850C600575457 /* gconnectionlookup.h */,
|
||||||
|
EE1753AF16B850C600575457 /* gconnectionlookup_unix.cpp */,
|
||||||
|
EE89C0B916A5D306006CBE2E /* gdescriptor.cpp */,
|
||||||
EE303B380D326C9600D840F2 /* gaddress.h */,
|
EE303B380D326C9600D840F2 /* gaddress.h */,
|
||||||
EE303B390D326C9600D840F2 /* gaddress_ip.cpp */,
|
EE303B390D326C9600D840F2 /* gaddress_ip.cpp */,
|
||||||
EE303B3A0D326C9600D840F2 /* gaddress_ipv4.cpp */,
|
EE303B3A0D326C9600D840F2 /* gaddress_ipv4.cpp */,
|
||||||
@ -1058,7 +1168,6 @@
|
|||||||
EE303B580D326C9600D840F2 /* gmultiserver.cpp */,
|
EE303B580D326C9600D840F2 /* gmultiserver.cpp */,
|
||||||
EE303B590D326C9600D840F2 /* gmultiserver.h */,
|
EE303B590D326C9600D840F2 /* gmultiserver.h */,
|
||||||
EE303B5A0D326C9600D840F2 /* gnet.h */,
|
EE303B5A0D326C9600D840F2 /* gnet.h */,
|
||||||
EE303B5B0D326C9600D840F2 /* grequest.cpp */,
|
|
||||||
EE303B5C0D326C9600D840F2 /* grequest.h */,
|
EE303B5C0D326C9600D840F2 /* grequest.h */,
|
||||||
EE303B5D0D326C9600D840F2 /* gresolver.cpp */,
|
EE303B5D0D326C9600D840F2 /* gresolver.cpp */,
|
||||||
EE303B5E0D326C9600D840F2 /* gresolver.h */,
|
EE303B5E0D326C9600D840F2 /* gresolver.h */,
|
||||||
@ -1122,8 +1231,6 @@
|
|||||||
children = (
|
children = (
|
||||||
EE303B8D0D326C9600D840F2 /* gadminserver.cpp */,
|
EE303B8D0D326C9600D840F2 /* gadminserver.cpp */,
|
||||||
EE303B8E0D326C9600D840F2 /* gadminserver.h */,
|
EE303B8E0D326C9600D840F2 /* gadminserver.h */,
|
||||||
EE303B8F0D326C9600D840F2 /* gbase64.cpp */,
|
|
||||||
EE303B900D326C9600D840F2 /* gbase64.h */,
|
|
||||||
EE303B910D326C9600D840F2 /* gclientprotocol.cpp */,
|
EE303B910D326C9600D840F2 /* gclientprotocol.cpp */,
|
||||||
EE303B920D326C9600D840F2 /* gclientprotocol.h */,
|
EE303B920D326C9600D840F2 /* gclientprotocol.h */,
|
||||||
EE303B930D326C9600D840F2 /* gexecutableprocessor.cpp */,
|
EE303B930D326C9600D840F2 /* gexecutableprocessor.cpp */,
|
||||||
@ -1163,13 +1270,6 @@
|
|||||||
EE303BB50D326C9600D840F2 /* gprotocolmessagestore.h */,
|
EE303BB50D326C9600D840F2 /* gprotocolmessagestore.h */,
|
||||||
EE303BB60D326C9600D840F2 /* grequestclient.cpp */,
|
EE303BB60D326C9600D840F2 /* grequestclient.cpp */,
|
||||||
EE303BB70D326C9600D840F2 /* grequestclient.h */,
|
EE303BB70D326C9600D840F2 /* grequestclient.h */,
|
||||||
EE303BB80D326C9600D840F2 /* gsasl.h */,
|
|
||||||
EE303BB90D326C9600D840F2 /* gsasl_gnu.cpp */,
|
|
||||||
EE303BBA0D326C9600D840F2 /* gsasl_native.cpp */,
|
|
||||||
EE303BBB0D326C9600D840F2 /* gsasl_none.cpp */,
|
|
||||||
EE303BBC0D326C9600D840F2 /* gsecrets.h */,
|
|
||||||
EE303BBD0D326C9600D840F2 /* gsecrets_full.cpp */,
|
|
||||||
EE303BBE0D326C9600D840F2 /* gsecrets_none.cpp */,
|
|
||||||
EE303BBF0D326C9600D840F2 /* gserverprotocol.cpp */,
|
EE303BBF0D326C9600D840F2 /* gserverprotocol.cpp */,
|
||||||
EE303BC00D326C9600D840F2 /* gserverprotocol.h */,
|
EE303BC00D326C9600D840F2 /* gserverprotocol.h */,
|
||||||
EE303BC10D326C9600D840F2 /* gsmtp.h */,
|
EE303BC10D326C9600D840F2 /* gsmtp.h */,
|
||||||
@ -1215,7 +1315,6 @@
|
|||||||
EE303BDF0D326C9600D840F2 /* gui */ = {
|
EE303BDF0D326C9600D840F2 /* gui */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
EE303BE00D326C9600D840F2 /* boot.cpp */,
|
|
||||||
EE303BE10D326C9600D840F2 /* boot.h */,
|
EE303BE10D326C9600D840F2 /* boot.h */,
|
||||||
EE303BE20D326C9600D840F2 /* dir.cpp */,
|
EE303BE20D326C9600D840F2 /* dir.cpp */,
|
||||||
EE303BE30D326C9600D840F2 /* dir.h */,
|
EE303BE30D326C9600D840F2 /* dir.h */,
|
||||||
@ -1225,19 +1324,16 @@
|
|||||||
EE303BE70D326C9600D840F2 /* gcominit.h */,
|
EE303BE70D326C9600D840F2 /* gcominit.h */,
|
||||||
EE303BE80D326C9600D840F2 /* gdialog.cpp */,
|
EE303BE80D326C9600D840F2 /* gdialog.cpp */,
|
||||||
EE303BE90D326C9600D840F2 /* gdialog.h */,
|
EE303BE90D326C9600D840F2 /* gdialog.h */,
|
||||||
EE303BEA0D326C9600D840F2 /* glink.cpp */,
|
|
||||||
EE303BEB0D326C9600D840F2 /* glink.h */,
|
EE303BEB0D326C9600D840F2 /* glink.h */,
|
||||||
EE303BEC0D326C9600D840F2 /* gpage.cpp */,
|
EE303BEC0D326C9600D840F2 /* gpage.cpp */,
|
||||||
EE303BED0D326C9600D840F2 /* gpage.h */,
|
EE303BED0D326C9600D840F2 /* gpage.h */,
|
||||||
EE303BEE0D326C9600D840F2 /* guimain.cpp */,
|
EE303BEE0D326C9600D840F2 /* guimain.cpp */,
|
||||||
EE303BEF0D326C9600D840F2 /* gunpack.cpp */,
|
EE303BEF0D326C9600D840F2 /* gunpack.cpp */,
|
||||||
EE303BF00D326C9600D840F2 /* gunpack.h */,
|
EE303BF00D326C9600D840F2 /* gunpack.h */,
|
||||||
EE303BF10D326C9600D840F2 /* Info.plist */,
|
|
||||||
EE303BF20D326C9600D840F2 /* installer.cpp */,
|
EE303BF20D326C9600D840F2 /* installer.cpp */,
|
||||||
EE303BF30D326C9600D840F2 /* installer.h */,
|
EE303BF30D326C9600D840F2 /* installer.h */,
|
||||||
EE303BF40D326C9600D840F2 /* legal.cpp */,
|
EE303BF40D326C9600D840F2 /* legal.cpp */,
|
||||||
EE303BF50D326C9600D840F2 /* legal.h */,
|
EE303BF50D326C9600D840F2 /* legal.h */,
|
||||||
EE303BF60D326C9600D840F2 /* mac.mak */,
|
|
||||||
EE303BF70D326C9600D840F2 /* Makefile.am */,
|
EE303BF70D326C9600D840F2 /* Makefile.am */,
|
||||||
EE303BF80D326C9600D840F2 /* Makefile.in */,
|
EE303BF80D326C9600D840F2 /* Makefile.in */,
|
||||||
EE303BF90D326C9600D840F2 /* mingw.mak */,
|
EE303BF90D326C9600D840F2 /* mingw.mak */,
|
||||||
@ -1263,22 +1359,16 @@
|
|||||||
EE303C060D326C9600D840F2 /* commandline.h */,
|
EE303C060D326C9600D840F2 /* commandline.h */,
|
||||||
EE303C070D326C9600D840F2 /* commandline_full.cpp */,
|
EE303C070D326C9600D840F2 /* commandline_full.cpp */,
|
||||||
EE303C080D326C9600D840F2 /* commandline_simple.cpp */,
|
EE303C080D326C9600D840F2 /* commandline_simple.cpp */,
|
||||||
EE303C090D326C9600D840F2 /* common.dsp */,
|
|
||||||
EE303C0A0D326C9600D840F2 /* configuration.cpp */,
|
EE303C0A0D326C9600D840F2 /* configuration.cpp */,
|
||||||
EE303C0B0D326C9600D840F2 /* configuration.h */,
|
EE303C0B0D326C9600D840F2 /* configuration.h */,
|
||||||
EE303C0C0D326C9600D840F2 /* doxygen.cfg */,
|
|
||||||
EE303C0D0D326C9600D840F2 /* doxygen.h */,
|
EE303C0D0D326C9600D840F2 /* doxygen.h */,
|
||||||
EE303C0E0D326C9600D840F2 /* emailrelay.dsp */,
|
|
||||||
EE303C0F0D326C9600D840F2 /* emailrelay.rc */,
|
EE303C0F0D326C9600D840F2 /* emailrelay.rc */,
|
||||||
EE303C100D326C9600D840F2 /* filter.cpp */,
|
EE303C100D326C9600D840F2 /* filter.cpp */,
|
||||||
EE303C110D326C9600D840F2 /* filter.dsp */,
|
|
||||||
EE303C120D326C9600D840F2 /* filter.h */,
|
EE303C120D326C9600D840F2 /* filter.h */,
|
||||||
EE303C130D326C9600D840F2 /* filter_copy.cpp */,
|
EE303C130D326C9600D840F2 /* filter_copy.cpp */,
|
||||||
EE303C140D326C9600D840F2 /* icon-32.ico */,
|
|
||||||
EE303C150D326C9600D840F2 /* icon2.ico */,
|
EE303C150D326C9600D840F2 /* icon2.ico */,
|
||||||
EE303C160D326C9600D840F2 /* icon3.ico */,
|
EE303C160D326C9600D840F2 /* icon3.ico */,
|
||||||
EE303C170D326C9600D840F2 /* icon4.ico */,
|
EE303C170D326C9600D840F2 /* icon4.ico */,
|
||||||
EE303C180D326C9600D840F2 /* icon5.ico */,
|
|
||||||
EE303C190D326C9600D840F2 /* legal.cpp */,
|
EE303C190D326C9600D840F2 /* legal.cpp */,
|
||||||
EE303C1A0D326C9600D840F2 /* legal.h */,
|
EE303C1A0D326C9600D840F2 /* legal.h */,
|
||||||
EE303C1B0D326C9600D840F2 /* main.cpp */,
|
EE303C1B0D326C9600D840F2 /* main.cpp */,
|
||||||
@ -1292,20 +1382,16 @@
|
|||||||
EE303C230D326C9700D840F2 /* output.cpp */,
|
EE303C230D326C9700D840F2 /* output.cpp */,
|
||||||
EE303C240D326C9700D840F2 /* output.h */,
|
EE303C240D326C9700D840F2 /* output.h */,
|
||||||
EE303C250D326C9700D840F2 /* passwd.cpp */,
|
EE303C250D326C9700D840F2 /* passwd.cpp */,
|
||||||
EE303C260D326C9700D840F2 /* passwd.dsp */,
|
|
||||||
EE303C270D326C9700D840F2 /* poke.c */,
|
EE303C270D326C9700D840F2 /* poke.c */,
|
||||||
EE303C280D326C9700D840F2 /* poke.dsp */,
|
|
||||||
EE303C290D326C9700D840F2 /* resource.h */,
|
EE303C290D326C9700D840F2 /* resource.h */,
|
||||||
EE303C2A0D326C9700D840F2 /* run.cpp */,
|
EE303C2A0D326C9700D840F2 /* run.cpp */,
|
||||||
EE303C2B0D326C9700D840F2 /* run.h */,
|
EE303C2B0D326C9700D840F2 /* run.h */,
|
||||||
EE303C2C0D326C9700D840F2 /* service.dsp */,
|
|
||||||
EE303C2D0D326C9700D840F2 /* service_install.cpp */,
|
EE303C2D0D326C9700D840F2 /* service_install.cpp */,
|
||||||
EE303C2E0D326C9700D840F2 /* service_install.h */,
|
EE303C2E0D326C9700D840F2 /* service_install.h */,
|
||||||
EE303C2F0D326C9700D840F2 /* service_remove.cpp */,
|
EE303C2F0D326C9700D840F2 /* service_remove.cpp */,
|
||||||
EE303C300D326C9700D840F2 /* service_remove.h */,
|
EE303C300D326C9700D840F2 /* service_remove.h */,
|
||||||
EE303C310D326C9700D840F2 /* service_wrapper.cpp */,
|
EE303C310D326C9700D840F2 /* service_wrapper.cpp */,
|
||||||
EE303C320D326C9700D840F2 /* submit.cpp */,
|
EE303C320D326C9700D840F2 /* submit.cpp */,
|
||||||
EE303C330D326C9700D840F2 /* submit.dsp */,
|
|
||||||
EE303C340D326C9700D840F2 /* winapp.cpp */,
|
EE303C340D326C9700D840F2 /* winapp.cpp */,
|
||||||
EE303C350D326C9700D840F2 /* winapp.h */,
|
EE303C350D326C9700D840F2 /* winapp.h */,
|
||||||
EE303C360D326C9700D840F2 /* winform.cpp */,
|
EE303C360D326C9700D840F2 /* winform.cpp */,
|
||||||
@ -1356,32 +1442,52 @@
|
|||||||
EE303EA80D366E5500D840F2 /* doc */ = {
|
EE303EA80D366E5500D840F2 /* doc */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
EE303EA90D366E5500D840F2 /* auth.png */,
|
|
||||||
EE303EAA0D366E5500D840F2 /* developer.txt */,
|
EE303EAA0D366E5500D840F2 /* developer.txt */,
|
||||||
EE303EAB0D366E5500D840F2 /* doxygen_header.html */,
|
|
||||||
EE303EAC0D366E5500D840F2 /* doxygen_missing.html */,
|
|
||||||
EE303EAD0D366E5500D840F2 /* emailrelay-filter-copy.1 */,
|
EE303EAD0D366E5500D840F2 /* emailrelay-filter-copy.1 */,
|
||||||
EE303EAE0D366E5500D840F2 /* emailrelay-man.html */,
|
EE303EAE0D366E5500D840F2 /* emailrelay-man.html */,
|
||||||
EE303EAF0D366E5500D840F2 /* emailrelay-passwd.1 */,
|
EE303EAF0D366E5500D840F2 /* emailrelay-passwd.1 */,
|
||||||
EE303EB00D366E5500D840F2 /* emailrelay-poke.1 */,
|
EE303EB00D366E5500D840F2 /* emailrelay-poke.1 */,
|
||||||
EE303EB10D366E5500D840F2 /* emailrelay-submit.1 */,
|
EE303EB10D366E5500D840F2 /* emailrelay-submit.1 */,
|
||||||
EE303EB20D366E5500D840F2 /* emailrelay.1 */,
|
EE303EB20D366E5500D840F2 /* emailrelay.1 */,
|
||||||
EE303EB30D366E5500D840F2 /* emailrelay.css */,
|
|
||||||
EE303EB40D366E5500D840F2 /* gnet-classes.png */,
|
|
||||||
EE303EB50D366E5500D840F2 /* gnet-client.png */,
|
|
||||||
EE303EB60D366E5500D840F2 /* gsmtp-classes.png */,
|
|
||||||
EE303EB70D366E5500D840F2 /* gsmtp-serverprotocol.png */,
|
|
||||||
EE303EB80D366E5500D840F2 /* index.html */,
|
EE303EB80D366E5500D840F2 /* index.html */,
|
||||||
EE303EB90D366E5500D840F2 /* Makefile.am */,
|
EE303EB90D366E5500D840F2 /* Makefile.am */,
|
||||||
EE303EBA0D366E5500D840F2 /* Makefile.in */,
|
EE303EBA0D366E5500D840F2 /* Makefile.in */,
|
||||||
EE303EBB0D366E5500D840F2 /* reference.txt */,
|
EE303EBB0D366E5500D840F2 /* reference.txt */,
|
||||||
EE303EBC0D366E5500D840F2 /* sequence-3.png */,
|
|
||||||
EE303EBD0D366E5500D840F2 /* userguide.txt */,
|
EE303EBD0D366E5500D840F2 /* userguide.txt */,
|
||||||
EE303EBE0D366E5500D840F2 /* windows.txt */,
|
EE303EBE0D366E5500D840F2 /* windows.txt */,
|
||||||
);
|
);
|
||||||
path = doc;
|
path = doc;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
|
EE89C03B16A5B517006CBE2E /* gauth */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
EE89C03C16A5B5EB006CBE2E /* gauth.h */,
|
||||||
|
EE89C03D16A5B5EB006CBE2E /* gsaslclient.h */,
|
||||||
|
EE89C03E16A5B5EB006CBE2E /* gsaslclient_native.cpp */,
|
||||||
|
EE89C03F16A5B5EB006CBE2E /* gsaslclient_none.cpp */,
|
||||||
|
EE89C04016A5B5EB006CBE2E /* gsaslserver.cpp */,
|
||||||
|
EE89C04116A5B5EB006CBE2E /* gsaslserver.h */,
|
||||||
|
EE89C04216A5B5EB006CBE2E /* gsaslserverbasic.h */,
|
||||||
|
EE89C04316A5B5EB006CBE2E /* gsaslserverbasic_native.cpp */,
|
||||||
|
EE89C04416A5B5EB006CBE2E /* gsaslserverbasic_none.cpp */,
|
||||||
|
EE89C04516A5B5EB006CBE2E /* gsaslserverfactory.h */,
|
||||||
|
EE89C04616A5B5EB006CBE2E /* gsaslserverfactory_native.cpp */,
|
||||||
|
EE89C04716A5B5EB006CBE2E /* gsaslserverfactory_pam.cpp */,
|
||||||
|
EE89C04816A5B5EB006CBE2E /* gsaslserverpam.cpp */,
|
||||||
|
EE89C04916A5B5EB006CBE2E /* gsaslserverpam.h */,
|
||||||
|
EE89C04A16A5B5EB006CBE2E /* gsecrets.h */,
|
||||||
|
EE89C04B16A5B5EB006CBE2E /* gsecrets_full.cpp */,
|
||||||
|
EE89C04C16A5B5EB006CBE2E /* gsecrets_none.cpp */,
|
||||||
|
EE89C04D16A5B5EB006CBE2E /* gsecrets_pam.cpp */,
|
||||||
|
EE89C04E16A5B5EB006CBE2E /* gsecretsfile.cpp */,
|
||||||
|
EE89C04F16A5B5EB006CBE2E /* gsecretsfile.h */,
|
||||||
|
EE89C05016A5B5EB006CBE2E /* gvalid.cpp */,
|
||||||
|
EE89C05116A5B5EB006CBE2E /* gvalid.h */,
|
||||||
|
);
|
||||||
|
name = gauth;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
/* End PBXGroup section */
|
/* End PBXGroup section */
|
||||||
|
|
||||||
/* Begin PBXHeadersBuildPhase section */
|
/* Begin PBXHeadersBuildPhase section */
|
||||||
@ -1660,7 +1766,6 @@
|
|||||||
isa = PBXSourcesBuildPhase;
|
isa = PBXSourcesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
EE303C5D0D326C9700D840F2 /* empty.cpp in Sources */,
|
|
||||||
EE303D000D326C9700D840F2 /* admin_enabled.cpp in Sources */,
|
EE303D000D326C9700D840F2 /* admin_enabled.cpp in Sources */,
|
||||||
EE303D010D326C9700D840F2 /* commandline_full.cpp in Sources */,
|
EE303D010D326C9700D840F2 /* commandline_full.cpp in Sources */,
|
||||||
EE303D030D326C9700D840F2 /* configuration.cpp in Sources */,
|
EE303D030D326C9700D840F2 /* configuration.cpp in Sources */,
|
||||||
@ -1669,6 +1774,79 @@
|
|||||||
EE303D0A0D326C9700D840F2 /* news.cpp in Sources */,
|
EE303D0A0D326C9700D840F2 /* news.cpp in Sources */,
|
||||||
EE303D0B0D326C9700D840F2 /* output.cpp in Sources */,
|
EE303D0B0D326C9700D840F2 /* output.cpp in Sources */,
|
||||||
EE303D0E0D326C9700D840F2 /* run.cpp in Sources */,
|
EE303D0E0D326C9700D840F2 /* run.cpp in Sources */,
|
||||||
|
EE89C05216A5B5EB006CBE2E /* gsaslclient_native.cpp in Sources */,
|
||||||
|
EE89C05416A5B5EB006CBE2E /* gsaslserver.cpp in Sources */,
|
||||||
|
EE89C05516A5B5EB006CBE2E /* gsaslserverbasic_native.cpp in Sources */,
|
||||||
|
EE89C05816A5B5EB006CBE2E /* gsaslserverfactory_pam.cpp in Sources */,
|
||||||
|
EE89C05916A5B5EB006CBE2E /* gsaslserverpam.cpp in Sources */,
|
||||||
|
EE89C05C16A5B5EB006CBE2E /* gsecrets_pam.cpp in Sources */,
|
||||||
|
EE89C05D16A5B5EB006CBE2E /* gsecretsfile.cpp in Sources */,
|
||||||
|
EE89C05E16A5B5EB006CBE2E /* gvalid.cpp in Sources */,
|
||||||
|
EE89C06416A5B722006CBE2E /* garg_mac.cpp in Sources */,
|
||||||
|
EE89C06F16A5B7A4006CBE2E /* gbase64.cpp in Sources */,
|
||||||
|
EE89C07216A5B7A4006CBE2E /* gpam.cpp in Sources */,
|
||||||
|
EE89C07316A5B7A4006CBE2E /* gpam_linux.cpp in Sources */,
|
||||||
|
EE89C07516A5B7A4006CBE2E /* gstrings.cpp in Sources */,
|
||||||
|
EE89C07616A5B7DE006CBE2E /* gcleanup_unix.cpp in Sources */,
|
||||||
|
EE89C07716A5B7E4006CBE2E /* gcounter.cpp in Sources */,
|
||||||
|
EE89C07816A5B803006CBE2E /* gdaemon_unix.cpp in Sources */,
|
||||||
|
EE89C07916A5B807006CBE2E /* gdate.cpp in Sources */,
|
||||||
|
EE89C07A16A5B80B006CBE2E /* gdatetime.cpp in Sources */,
|
||||||
|
EE89C07B16A5B80D006CBE2E /* gdatetime_unix.cpp in Sources */,
|
||||||
|
EE89C07C16A5B81B006CBE2E /* gdirectory.cpp in Sources */,
|
||||||
|
EE89C07D16A5B821006CBE2E /* gdirectory_unix.cpp in Sources */,
|
||||||
|
EE89C07E16A5B825006CBE2E /* gdirectory_unix_glob.cpp in Sources */,
|
||||||
|
EE89C07F16A5B829006CBE2E /* gexception.cpp in Sources */,
|
||||||
|
EE89C08016A5B82A006CBE2E /* gexecutable.cpp in Sources */,
|
||||||
|
EE89C08116A5B82C006CBE2E /* gexecutable_unix.cpp in Sources */,
|
||||||
|
EE89C08216A5B82F006CBE2E /* gfile.cpp in Sources */,
|
||||||
|
EE89C08316A5B838006CBE2E /* gfile_unix.cpp in Sources */,
|
||||||
|
EE89C08416A5B83A006CBE2E /* gfs_unix.cpp in Sources */,
|
||||||
|
EE89C08516A5B83B006CBE2E /* ggetopt.cpp in Sources */,
|
||||||
|
EE89C08616A5B83E006CBE2E /* ghostname_unix.cpp in Sources */,
|
||||||
|
EE89C08716A5B848006CBE2E /* gidentity_unix.cpp in Sources */,
|
||||||
|
EE89C08816A5B84C006CBE2E /* glog.cpp in Sources */,
|
||||||
|
EE89C08916A5B84D006CBE2E /* glogoutput.cpp in Sources */,
|
||||||
|
EE89C08A16A5B84F006CBE2E /* glogoutput_unix.cpp in Sources */,
|
||||||
|
EE89C08B16A5B854006CBE2E /* gpath.cpp in Sources */,
|
||||||
|
EE89C08C16A5B857006CBE2E /* gpidfile.cpp in Sources */,
|
||||||
|
EE89C08D16A5B858006CBE2E /* gprocess_unix.cpp in Sources */,
|
||||||
|
EE89C08E16A5B85A006CBE2E /* groot.cpp in Sources */,
|
||||||
|
EE89C08F16A5B85F006CBE2E /* gslot.cpp in Sources */,
|
||||||
|
EE89C09016A5B862006CBE2E /* gstr.cpp in Sources */,
|
||||||
|
EE89C09116A5B867006CBE2E /* gtest.cpp in Sources */,
|
||||||
|
EE89C09216A5B869006CBE2E /* gtime.cpp in Sources */,
|
||||||
|
EE89C09316A5B86B006CBE2E /* gxtext.cpp in Sources */,
|
||||||
|
EE89C09416A5B86F006CBE2E /* md5.cpp in Sources */,
|
||||||
|
EE89C09A16A5D19B006CBE2E /* gdescriptor_unix.cpp in Sources */,
|
||||||
|
EE89C09C16A5D1A7006CBE2E /* gaddress_ipv4.cpp in Sources */,
|
||||||
|
EE89C09D16A5D1A9006CBE2E /* gbufferedserverpeer.cpp in Sources */,
|
||||||
|
EE89C09E16A5D1AB006CBE2E /* gclient.cpp in Sources */,
|
||||||
|
EE89C09F16A5D1AE006CBE2E /* gconnection.cpp in Sources */,
|
||||||
|
EE89C0A016A5D1B3006CBE2E /* geventhandler.cpp in Sources */,
|
||||||
|
EE89C0A116A5D1B4006CBE2E /* geventloop.cpp in Sources */,
|
||||||
|
EE89C0A216A5D1B5006CBE2E /* geventloop_unix.cpp in Sources */,
|
||||||
|
EE89C0A316A5D1B9006CBE2E /* gheapclient.cpp in Sources */,
|
||||||
|
EE89C0A416A5D1BA006CBE2E /* glinebuffer.cpp in Sources */,
|
||||||
|
EE89C0A516A5D1BC006CBE2E /* glocal.cpp in Sources */,
|
||||||
|
EE89C0A616A5D1C4006CBE2E /* glocal_unix.cpp in Sources */,
|
||||||
|
EE89C0A716A5D1CA006CBE2E /* gmonitor.cpp in Sources */,
|
||||||
|
EE89C0A816A5D1CC006CBE2E /* gmultiserver.cpp in Sources */,
|
||||||
|
EE89C0A916A5D1CF006CBE2E /* gresolver.cpp in Sources */,
|
||||||
|
EE89C0AB16A5D1D4006CBE2E /* gresolver_ipv4.cpp in Sources */,
|
||||||
|
EE89C0AC16A5D1D6006CBE2E /* gresolver_unix.cpp in Sources */,
|
||||||
|
EE89C0AD16A5D1DD006CBE2E /* gresolverinfo.cpp in Sources */,
|
||||||
|
EE89C0AE16A5D1DE006CBE2E /* gserver.cpp in Sources */,
|
||||||
|
EE89C0AF16A5D1E0006CBE2E /* gsimpleclient.cpp in Sources */,
|
||||||
|
EE89C0B016A5D1E2006CBE2E /* gsimpleclient_unix.cpp in Sources */,
|
||||||
|
EE89C0B116A5D1E7006CBE2E /* gsocket.cpp in Sources */,
|
||||||
|
EE89C0B216A5D1ED006CBE2E /* gsocket_unix.cpp in Sources */,
|
||||||
|
EE89C0B316A5D1EF006CBE2E /* gsocketprotocol.cpp in Sources */,
|
||||||
|
EE89C0B416A5D1F0006CBE2E /* gtimer.cpp in Sources */,
|
||||||
|
EE89C0B516A5D1F2006CBE2E /* gtimerlist.cpp in Sources */,
|
||||||
|
EE89C0BA16A5D306006CBE2E /* gdescriptor.cpp in Sources */,
|
||||||
|
EE1753B016B850C600575457 /* gconnectionlookup_unix.cpp in Sources */,
|
||||||
|
EE1753BC16B852AD00575457 /* genvironment_unix.cpp in Sources */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
@ -1766,7 +1944,6 @@
|
|||||||
files = (
|
files = (
|
||||||
EE303E260D329C1200D840F2 /* gstoredmessage.cpp in Sources */,
|
EE303E260D329C1200D840F2 /* gstoredmessage.cpp in Sources */,
|
||||||
EE303E270D329C1400D840F2 /* gexecutableverifier.cpp in Sources */,
|
EE303E270D329C1400D840F2 /* gexecutableverifier.cpp in Sources */,
|
||||||
EE303E280D329C1500D840F2 /* gsecrets_full.cpp in Sources */,
|
|
||||||
EE303E290D329C1700D840F2 /* ginternalverifier.cpp in Sources */,
|
EE303E290D329C1700D840F2 /* ginternalverifier.cpp in Sources */,
|
||||||
EE303E2A0D329C1800D840F2 /* grequestclient.cpp in Sources */,
|
EE303E2A0D329C1800D840F2 /* grequestclient.cpp in Sources */,
|
||||||
EE303E2B0D329C1A00D840F2 /* gadminserver.cpp in Sources */,
|
EE303E2B0D329C1A00D840F2 /* gadminserver.cpp in Sources */,
|
||||||
@ -1775,12 +1952,10 @@
|
|||||||
EE303E2E0D329C1F00D840F2 /* gclientprotocol.cpp in Sources */,
|
EE303E2E0D329C1F00D840F2 /* gclientprotocol.cpp in Sources */,
|
||||||
EE303E2F0D329C2200D840F2 /* gmessagestore.cpp in Sources */,
|
EE303E2F0D329C2200D840F2 /* gmessagestore.cpp in Sources */,
|
||||||
EE303E300D329C2400D840F2 /* gfilestore.cpp in Sources */,
|
EE303E300D329C2400D840F2 /* gfilestore.cpp in Sources */,
|
||||||
EE303E310D329C2500D840F2 /* gsasl_native.cpp in Sources */,
|
|
||||||
EE303E320D329C2600D840F2 /* gmessagestore_unix.cpp in Sources */,
|
EE303E320D329C2600D840F2 /* gmessagestore_unix.cpp in Sources */,
|
||||||
EE303E330D329C2800D840F2 /* gverifierstatus.cpp in Sources */,
|
EE303E330D329C2800D840F2 /* gverifierstatus.cpp in Sources */,
|
||||||
EE303E340D329C2A00D840F2 /* gspamprocessor.cpp in Sources */,
|
EE303E340D329C2A00D840F2 /* gspamprocessor.cpp in Sources */,
|
||||||
EE303E350D329C2C00D840F2 /* gnullprocessor.cpp in Sources */,
|
EE303E350D329C2C00D840F2 /* gnullprocessor.cpp in Sources */,
|
||||||
EE303E360D329C3000D840F2 /* gbase64.cpp in Sources */,
|
|
||||||
EE303E370D329C3200D840F2 /* gverifierfactory_exec_enabled.cpp in Sources */,
|
EE303E370D329C3200D840F2 /* gverifierfactory_exec_enabled.cpp in Sources */,
|
||||||
EE303E380D329C3400D840F2 /* gnetworkverifier.cpp in Sources */,
|
EE303E380D329C3400D840F2 /* gnetworkverifier.cpp in Sources */,
|
||||||
EE303E390D329C3700D840F2 /* gstoredfile.cpp in Sources */,
|
EE303E390D329C3700D840F2 /* gstoredfile.cpp in Sources */,
|
||||||
@ -1812,7 +1987,6 @@
|
|||||||
isa = PBXSourcesBuildPhase;
|
isa = PBXSourcesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
EE9918310D91664E00FB06D5 /* empty.cpp in Sources */,
|
|
||||||
EE9918420D91670200FB06D5 /* filter_copy.cpp in Sources */,
|
EE9918420D91670200FB06D5 /* filter_copy.cpp in Sources */,
|
||||||
EE9918440D91673900FB06D5 /* filter.cpp in Sources */,
|
EE9918440D91673900FB06D5 /* filter.cpp in Sources */,
|
||||||
EE9918460D91675100FB06D5 /* legal.cpp in Sources */,
|
EE9918460D91675100FB06D5 /* legal.cpp in Sources */,
|
||||||
@ -1823,7 +1997,6 @@
|
|||||||
isa = PBXSourcesBuildPhase;
|
isa = PBXSourcesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
EE99184F0D91693000FB06D5 /* empty.cpp in Sources */,
|
|
||||||
EE99188D0D9169FE00FB06D5 /* start.cpp in Sources */,
|
EE99188D0D9169FE00FB06D5 /* start.cpp in Sources */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
@ -1832,7 +2005,6 @@
|
|||||||
isa = PBXSourcesBuildPhase;
|
isa = PBXSourcesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
EE99185F0D91695000FB06D5 /* empty.cpp in Sources */,
|
|
||||||
EE99188F0D916A3600FB06D5 /* passwd.cpp in Sources */,
|
EE99188F0D916A3600FB06D5 /* passwd.cpp in Sources */,
|
||||||
EE9918A50D916B1A00FB06D5 /* legal.cpp in Sources */,
|
EE9918A50D916B1A00FB06D5 /* legal.cpp in Sources */,
|
||||||
);
|
);
|
||||||
@ -1842,7 +2014,6 @@
|
|||||||
isa = PBXSourcesBuildPhase;
|
isa = PBXSourcesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
EE99186F0D91697900FB06D5 /* empty.cpp in Sources */,
|
|
||||||
EE9918900D916A4E00FB06D5 /* poke.c in Sources */,
|
EE9918900D916A4E00FB06D5 /* poke.c in Sources */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
@ -1851,9 +2022,74 @@
|
|||||||
isa = PBXSourcesBuildPhase;
|
isa = PBXSourcesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
EE99187F0D91698A00FB06D5 /* empty.cpp in Sources */,
|
|
||||||
EE9918920D916A7400FB06D5 /* submit.cpp in Sources */,
|
EE9918920D916A7400FB06D5 /* submit.cpp in Sources */,
|
||||||
EE9918940D916A8600FB06D5 /* legal.cpp in Sources */,
|
EE9918940D916A8600FB06D5 /* legal.cpp in Sources */,
|
||||||
|
EE89C0BF16A5E642006CBE2E /* garg.cpp in Sources */,
|
||||||
|
EE89C0C016A5E645006CBE2E /* garg_mac.cpp in Sources */,
|
||||||
|
EE89C0C116A5E649006CBE2E /* gbase64.cpp in Sources */,
|
||||||
|
EE89C0C216A5E64C006CBE2E /* gcleanup_unix.cpp in Sources */,
|
||||||
|
EE89C0C316A5E669006CBE2E /* gcounter.cpp in Sources */,
|
||||||
|
EE89C0C416A5E66B006CBE2E /* gdaemon_unix.cpp in Sources */,
|
||||||
|
EE89C0C516A5E66C006CBE2E /* gdate.cpp in Sources */,
|
||||||
|
EE89C0C616A5E66E006CBE2E /* gdatetime.cpp in Sources */,
|
||||||
|
EE89C0C716A5E670006CBE2E /* gdatetime_unix.cpp in Sources */,
|
||||||
|
EE89C0C816A5E673006CBE2E /* gdirectory.cpp in Sources */,
|
||||||
|
EE89C0C916A5E675006CBE2E /* gdirectory_unix.cpp in Sources */,
|
||||||
|
EE89C0CA16A5E677006CBE2E /* gdirectory_unix_glob.cpp in Sources */,
|
||||||
|
EE89C0CB16A5E67B006CBE2E /* gexception.cpp in Sources */,
|
||||||
|
EE89C0CC16A5E67D006CBE2E /* gexecutable.cpp in Sources */,
|
||||||
|
EE89C0CD16A5E67E006CBE2E /* gexecutable_unix.cpp in Sources */,
|
||||||
|
EE89C0CE16A5E685006CBE2E /* gfile.cpp in Sources */,
|
||||||
|
EE89C0CF16A5E687006CBE2E /* gfile_unix.cpp in Sources */,
|
||||||
|
EE89C0D016A5E689006CBE2E /* gfs_unix.cpp in Sources */,
|
||||||
|
EE89C0D116A5E68A006CBE2E /* ggetopt.cpp in Sources */,
|
||||||
|
EE89C0D216A5E68D006CBE2E /* ghostname_unix.cpp in Sources */,
|
||||||
|
EE89C0D316A5E68F006CBE2E /* gidentity_unix.cpp in Sources */,
|
||||||
|
EE89C0D416A5E693006CBE2E /* glog.cpp in Sources */,
|
||||||
|
EE89C0D516A5E695006CBE2E /* glogoutput.cpp in Sources */,
|
||||||
|
EE89C0D616A5E696006CBE2E /* glogoutput_unix.cpp in Sources */,
|
||||||
|
EE89C0D716A5E698006CBE2E /* gmd5_native.cpp in Sources */,
|
||||||
|
EE89C0D816A5E6A0006CBE2E /* gnewprocess_unix_exec_enabled.cpp in Sources */,
|
||||||
|
EE89C0DA16A5E6A6006CBE2E /* gpam.cpp in Sources */,
|
||||||
|
EE89C0DB16A5E6A7006CBE2E /* gpam_linux.cpp in Sources */,
|
||||||
|
EE89C0DC16A5E6AC006CBE2E /* gpath.cpp in Sources */,
|
||||||
|
EE89C0DD16A5E6AE006CBE2E /* gpidfile.cpp in Sources */,
|
||||||
|
EE89C0DE16A5E6AF006CBE2E /* gprocess_unix.cpp in Sources */,
|
||||||
|
EE89C0DF16A5E6B4006CBE2E /* groot.cpp in Sources */,
|
||||||
|
EE89C0E016A5E6B5006CBE2E /* gslot.cpp in Sources */,
|
||||||
|
EE89C0E116A5E6B6006CBE2E /* gstr.cpp in Sources */,
|
||||||
|
EE89C0E216A5E6B7006CBE2E /* gstrings.cpp in Sources */,
|
||||||
|
EE89C0E316A5E6B8006CBE2E /* gtest.cpp in Sources */,
|
||||||
|
EE89C0E416A5E6B9006CBE2E /* gtime.cpp in Sources */,
|
||||||
|
EE89C0E516A5E6BA006CBE2E /* gxtext.cpp in Sources */,
|
||||||
|
EE89C0E616A5E6BF006CBE2E /* md5.cpp in Sources */,
|
||||||
|
EE89C0E716A5E6C9006CBE2E /* gaddress_ipv4.cpp in Sources */,
|
||||||
|
EE89C0E816A5E6CA006CBE2E /* gbufferedserverpeer.cpp in Sources */,
|
||||||
|
EE89C0E916A5E6CC006CBE2E /* gclient.cpp in Sources */,
|
||||||
|
EE89C0EA16A5E6CD006CBE2E /* gconnection.cpp in Sources */,
|
||||||
|
EE89C0EB16A5E6CE006CBE2E /* gdescriptor.cpp in Sources */,
|
||||||
|
EE89C0EC16A5E6D0006CBE2E /* gdescriptor_unix.cpp in Sources */,
|
||||||
|
EE89C0ED16A5E6D1006CBE2E /* geventhandler.cpp in Sources */,
|
||||||
|
EE89C0EE16A5E6D2006CBE2E /* geventloop.cpp in Sources */,
|
||||||
|
EE89C0EF16A5E6D5006CBE2E /* geventloop_unix.cpp in Sources */,
|
||||||
|
EE89C0F016A5E6D6006CBE2E /* gheapclient.cpp in Sources */,
|
||||||
|
EE89C0F116A5E6D7006CBE2E /* glinebuffer.cpp in Sources */,
|
||||||
|
EE89C0F216A5E6D9006CBE2E /* glocal.cpp in Sources */,
|
||||||
|
EE89C0F316A5E6DB006CBE2E /* glocal_unix.cpp in Sources */,
|
||||||
|
EE89C0F416A5E6DE006CBE2E /* gmonitor.cpp in Sources */,
|
||||||
|
EE89C0F516A5E6DF006CBE2E /* gmultiserver.cpp in Sources */,
|
||||||
|
EE89C0F616A5E6E0006CBE2E /* gresolver.cpp in Sources */,
|
||||||
|
EE89C0F716A5E6E7006CBE2E /* gresolver_ipv4.cpp in Sources */,
|
||||||
|
EE89C0F816A5E6E9006CBE2E /* gresolver_unix.cpp in Sources */,
|
||||||
|
EE89C0F916A5E6EB006CBE2E /* gresolverinfo.cpp in Sources */,
|
||||||
|
EE89C0FA16A5E6EC006CBE2E /* gserver.cpp in Sources */,
|
||||||
|
EE89C0FB16A5E6ED006CBE2E /* gsimpleclient.cpp in Sources */,
|
||||||
|
EE89C0FC16A5E6F1006CBE2E /* gsimpleclient_unix.cpp in Sources */,
|
||||||
|
EE89C0FD16A5E6F2006CBE2E /* gsocket.cpp in Sources */,
|
||||||
|
EE89C0FE16A5E6F3006CBE2E /* gsocket_unix.cpp in Sources */,
|
||||||
|
EE89C0FF16A5E6F4006CBE2E /* gsocketprotocol.cpp in Sources */,
|
||||||
|
EE89C10016A5E6F5006CBE2E /* gtimer.cpp in Sources */,
|
||||||
|
EE89C10116A5E6F8006CBE2E /* gtimerlist.cpp in Sources */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
@ -1973,6 +2209,7 @@
|
|||||||
"-lglib",
|
"-lglib",
|
||||||
"-lssl",
|
"-lssl",
|
||||||
"-lcrypto",
|
"-lcrypto",
|
||||||
|
"-lpam",
|
||||||
);
|
);
|
||||||
PRODUCT_NAME = emailrelay;
|
PRODUCT_NAME = emailrelay;
|
||||||
ZERO_LINK = YES;
|
ZERO_LINK = YES;
|
||||||
@ -1986,7 +2223,7 @@
|
|||||||
EXECUTABLE_EXTENSION = .app;
|
EXECUTABLE_EXTENSION = .app;
|
||||||
GCC_INLINES_ARE_PRIVATE_EXTERN = NO;
|
GCC_INLINES_ARE_PRIVATE_EXTERN = NO;
|
||||||
GCC_MODEL_TUNING = G5;
|
GCC_MODEL_TUNING = G5;
|
||||||
INFOPLIST_FILE = Info.plist;
|
INFOPLIST_FILE = "";
|
||||||
INSTALL_PATH = /usr/local/bin;
|
INSTALL_PATH = /usr/local/bin;
|
||||||
MACH_O_TYPE = mh_execute;
|
MACH_O_TYPE = mh_execute;
|
||||||
OTHER_LDFLAGS = (
|
OTHER_LDFLAGS = (
|
||||||
@ -1997,6 +2234,7 @@
|
|||||||
"-lglib",
|
"-lglib",
|
||||||
"-lssl",
|
"-lssl",
|
||||||
"-lcrypto",
|
"-lcrypto",
|
||||||
|
"-lpam",
|
||||||
);
|
);
|
||||||
PRODUCT_NAME = emailrelay;
|
PRODUCT_NAME = emailrelay;
|
||||||
};
|
};
|
||||||
@ -2210,7 +2448,7 @@
|
|||||||
"G_UNIX=1",
|
"G_UNIX=1",
|
||||||
"_DEBUG=1",
|
"_DEBUG=1",
|
||||||
);
|
);
|
||||||
INFOPLIST_FILE = "/Users/graeme/build.xcode/emailrelay-1.8/Info copy.plist";
|
INFOPLIST_FILE = "";
|
||||||
INSTALL_PATH = /usr/local/bin;
|
INSTALL_PATH = /usr/local/bin;
|
||||||
OTHER_LDFLAGS = "-lglib";
|
OTHER_LDFLAGS = "-lglib";
|
||||||
PRODUCT_NAME = "emailrelay-filter-copy";
|
PRODUCT_NAME = "emailrelay-filter-copy";
|
||||||
@ -2225,7 +2463,7 @@
|
|||||||
EXECUTABLE_EXTENSION = .app;
|
EXECUTABLE_EXTENSION = .app;
|
||||||
GCC_INLINES_ARE_PRIVATE_EXTERN = NO;
|
GCC_INLINES_ARE_PRIVATE_EXTERN = NO;
|
||||||
GCC_MODEL_TUNING = G5;
|
GCC_MODEL_TUNING = G5;
|
||||||
INFOPLIST_FILE = "/Users/graeme/build.xcode/emailrelay-1.8/Info copy.plist";
|
INFOPLIST_FILE = "";
|
||||||
INSTALL_PATH = /usr/local/bin;
|
INSTALL_PATH = /usr/local/bin;
|
||||||
MACH_O_TYPE = mh_execute;
|
MACH_O_TYPE = mh_execute;
|
||||||
OTHER_LDFLAGS = "-lglib";
|
OTHER_LDFLAGS = "-lglib";
|
||||||
@ -2249,7 +2487,7 @@
|
|||||||
"G_UNIX=1",
|
"G_UNIX=1",
|
||||||
"_DEBUG=1",
|
"_DEBUG=1",
|
||||||
);
|
);
|
||||||
INFOPLIST_FILE = "/Users/graeme/build.xcode/emailrelay-1.8/Info copy 2.plist";
|
INFOPLIST_FILE = "";
|
||||||
INSTALL_PATH = /usr/local/bin;
|
INSTALL_PATH = /usr/local/bin;
|
||||||
OTHER_LDFLAGS = "";
|
OTHER_LDFLAGS = "";
|
||||||
PRODUCT_NAME = "emailrelay-start";
|
PRODUCT_NAME = "emailrelay-start";
|
||||||
@ -2264,7 +2502,7 @@
|
|||||||
EXECUTABLE_EXTENSION = .app;
|
EXECUTABLE_EXTENSION = .app;
|
||||||
GCC_INLINES_ARE_PRIVATE_EXTERN = NO;
|
GCC_INLINES_ARE_PRIVATE_EXTERN = NO;
|
||||||
GCC_MODEL_TUNING = G5;
|
GCC_MODEL_TUNING = G5;
|
||||||
INFOPLIST_FILE = "/Users/graeme/build.xcode/emailrelay-1.8/Info copy 2.plist";
|
INFOPLIST_FILE = "";
|
||||||
INSTALL_PATH = /usr/local/bin;
|
INSTALL_PATH = /usr/local/bin;
|
||||||
MACH_O_TYPE = mh_execute;
|
MACH_O_TYPE = mh_execute;
|
||||||
OTHER_LDFLAGS = "";
|
OTHER_LDFLAGS = "";
|
||||||
@ -2288,7 +2526,7 @@
|
|||||||
"G_UNIX=1",
|
"G_UNIX=1",
|
||||||
"_DEBUG=1",
|
"_DEBUG=1",
|
||||||
);
|
);
|
||||||
INFOPLIST_FILE = "/Users/graeme/build.xcode/emailrelay-1.8/Info copy 3.plist";
|
INFOPLIST_FILE = "";
|
||||||
INSTALL_PATH = /usr/local/bin;
|
INSTALL_PATH = /usr/local/bin;
|
||||||
OTHER_LDFLAGS = "-lglib";
|
OTHER_LDFLAGS = "-lglib";
|
||||||
PRODUCT_NAME = "emailrelay-passwd";
|
PRODUCT_NAME = "emailrelay-passwd";
|
||||||
@ -2303,7 +2541,7 @@
|
|||||||
EXECUTABLE_EXTENSION = .app;
|
EXECUTABLE_EXTENSION = .app;
|
||||||
GCC_INLINES_ARE_PRIVATE_EXTERN = NO;
|
GCC_INLINES_ARE_PRIVATE_EXTERN = NO;
|
||||||
GCC_MODEL_TUNING = G5;
|
GCC_MODEL_TUNING = G5;
|
||||||
INFOPLIST_FILE = "/Users/graeme/build.xcode/emailrelay-1.8/Info copy 3.plist";
|
INFOPLIST_FILE = "";
|
||||||
INSTALL_PATH = /usr/local/bin;
|
INSTALL_PATH = /usr/local/bin;
|
||||||
MACH_O_TYPE = mh_execute;
|
MACH_O_TYPE = mh_execute;
|
||||||
OTHER_LDFLAGS = "-lglib";
|
OTHER_LDFLAGS = "-lglib";
|
||||||
@ -2327,7 +2565,7 @@
|
|||||||
"G_UNIX=1",
|
"G_UNIX=1",
|
||||||
"_DEBUG=1",
|
"_DEBUG=1",
|
||||||
);
|
);
|
||||||
INFOPLIST_FILE = "/Users/graeme/build.xcode/emailrelay-1.8/Info copy 4.plist";
|
INFOPLIST_FILE = "";
|
||||||
INSTALL_PATH = /usr/local/bin;
|
INSTALL_PATH = /usr/local/bin;
|
||||||
OTHER_LDFLAGS = "";
|
OTHER_LDFLAGS = "";
|
||||||
PRODUCT_NAME = "emailrelay-poke";
|
PRODUCT_NAME = "emailrelay-poke";
|
||||||
@ -2342,7 +2580,7 @@
|
|||||||
EXECUTABLE_EXTENSION = .app;
|
EXECUTABLE_EXTENSION = .app;
|
||||||
GCC_INLINES_ARE_PRIVATE_EXTERN = NO;
|
GCC_INLINES_ARE_PRIVATE_EXTERN = NO;
|
||||||
GCC_MODEL_TUNING = G5;
|
GCC_MODEL_TUNING = G5;
|
||||||
INFOPLIST_FILE = "/Users/graeme/build.xcode/emailrelay-1.8/Info copy 4.plist";
|
INFOPLIST_FILE = "";
|
||||||
INSTALL_PATH = /usr/local/bin;
|
INSTALL_PATH = /usr/local/bin;
|
||||||
MACH_O_TYPE = mh_execute;
|
MACH_O_TYPE = mh_execute;
|
||||||
OTHER_LDFLAGS = "";
|
OTHER_LDFLAGS = "";
|
||||||
@ -2366,13 +2604,16 @@
|
|||||||
"G_UNIX=1",
|
"G_UNIX=1",
|
||||||
"_DEBUG=1",
|
"_DEBUG=1",
|
||||||
);
|
);
|
||||||
INFOPLIST_FILE = "/Users/graeme/build.xcode/emailrelay-1.8/Info copy 5.plist";
|
INFOPLIST_FILE = "";
|
||||||
INSTALL_PATH = /usr/local/bin;
|
INSTALL_PATH = /usr/local/bin;
|
||||||
OTHER_LDFLAGS = (
|
OTHER_LDFLAGS = (
|
||||||
"-lgsmtp",
|
"-lgsmtp",
|
||||||
"-lgnet",
|
"-lgnet",
|
||||||
"-lgssl",
|
"-lgssl",
|
||||||
"-lglib",
|
"-lglib",
|
||||||
|
"-lssl",
|
||||||
|
"-lpam",
|
||||||
|
"-lcrypto",
|
||||||
);
|
);
|
||||||
PRODUCT_NAME = "emailrelay-submit";
|
PRODUCT_NAME = "emailrelay-submit";
|
||||||
ZERO_LINK = YES;
|
ZERO_LINK = YES;
|
||||||
@ -2386,7 +2627,7 @@
|
|||||||
EXECUTABLE_EXTENSION = .app;
|
EXECUTABLE_EXTENSION = .app;
|
||||||
GCC_INLINES_ARE_PRIVATE_EXTERN = NO;
|
GCC_INLINES_ARE_PRIVATE_EXTERN = NO;
|
||||||
GCC_MODEL_TUNING = G5;
|
GCC_MODEL_TUNING = G5;
|
||||||
INFOPLIST_FILE = "/Users/graeme/build.xcode/emailrelay-1.8/Info copy 5.plist";
|
INFOPLIST_FILE = "";
|
||||||
INSTALL_PATH = /usr/local/bin;
|
INSTALL_PATH = /usr/local/bin;
|
||||||
MACH_O_TYPE = mh_execute;
|
MACH_O_TYPE = mh_execute;
|
||||||
OTHER_LDFLAGS = (
|
OTHER_LDFLAGS = (
|
||||||
@ -2394,6 +2635,9 @@
|
|||||||
"-lgnet",
|
"-lgnet",
|
||||||
"-lgssl",
|
"-lgssl",
|
||||||
"-lglib",
|
"-lglib",
|
||||||
|
"-lssl",
|
||||||
|
"-lpam",
|
||||||
|
"-lcrypto",
|
||||||
);
|
);
|
||||||
PRODUCT_NAME = "emailrelay-submit";
|
PRODUCT_NAME = "emailrelay-submit";
|
||||||
};
|
};
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
#
|
#
|
||||||
## Copyright (C) 2001-2008 Graeme Walker <graeme_walker@users.sourceforge.net>
|
## Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>
|
||||||
##
|
##
|
||||||
## This program is free software: you can redistribute it and/or modify
|
## This program is free software: you can redistribute it and/or modify
|
||||||
## it under the terms of the GNU General Public License as published by
|
## it under the terms of the GNU General Public License as published by
|
||||||
## the Free Software Foundation, either version 3 of the License, or
|
## the Free Software Foundation, either version 3 of the License, or
|
||||||
## (at your option) any later version.
|
## (at your option) any later version.
|
||||||
##
|
##
|
||||||
## This program is distributed in the hope that it will be useful,
|
## This program is distributed in the hope that it will be useful,
|
||||||
@ -15,19 +15,40 @@
|
|||||||
## along with this program. If not, see <http://www.gnu.org/licenses/>.
|
## along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
|
|
||||||
EXTRA_DIST = emailrelay.conf.template
|
if PAM
|
||||||
|
e_pam_DATA = emailrelay
|
||||||
|
else
|
||||||
|
e_pam_DATA =
|
||||||
|
endif
|
||||||
|
|
||||||
e_sysconf_DATA = emailrelay.conf.template
|
EXTRA_DIST = emailrelay.conf.template emailrelay.auth.template emailrelay.pam
|
||||||
|
e_sysconf_DATA = emailrelay.conf.template emailrelay.auth.template
|
||||||
|
|
||||||
|
emailrelay: emailrelay.pam
|
||||||
|
cp $(top_srcdir)/etc/emailrelay.pam $@
|
||||||
|
|
||||||
|
clean-local:
|
||||||
|
-rm -f emailrelay 2>/dev/null
|
||||||
|
|
||||||
if INSTALL_HOOK
|
if INSTALL_HOOK
|
||||||
|
|
||||||
|
# create the .conf file from .conf.template with directory edits - dont
|
||||||
|
# use this when running configure for building a .deb or .rpm package
|
||||||
install-data-hook:
|
install-data-hook:
|
||||||
if test -f "$(DESTDIR)$(e_sysconfdir)/emailrelay.conf" ; then : ; else cat "$(DESTDIR)$(e_sysconfdir)/emailrelay.conf.template" | sed "s:^#spool-dir /var/spool/emailrelay:spool-dir $(DESTDIR)$(e_spooldir):g" | sed 's:"/var/spool/emailrelay":"'"$(e_spooldir)"'":g' | sed "s:/etc:$(e_sysconfdir):g" | sed "s:/usr/local/bin:$(e_libexecdir):g" > "$(DESTDIR)$(e_sysconfdir)/emailrelay.conf" ; fi
|
if test -f "$(DESTDIR)$(e_sysconfdir)/emailrelay.conf" ; then : ; else cat "$(DESTDIR)$(e_sysconfdir)/emailrelay.conf.template" | sed "s:^#spool-dir .*:spool-dir $(e_spooldir):g" | sed 's:"/var/spool/emailrelay":"'"$(e_spooldir)"'":g' | sed "s:/etc:$(e_sysconfdir):g" | sed "s:/usr/local/bin:$(e_libexecdir):g" > "$(DESTDIR)$(e_sysconfdir)/emailrelay.conf" ; sum < "$(DESTDIR)$(e_sysconfdir)/emailrelay.conf" | sed 's/^/# Checksum: /' >> "$(DESTDIR)$(e_sysconfdir)/emailrelay.conf" ; fi
|
||||||
|
|
||||||
|
# remove the .conf file if it has not been editied
|
||||||
|
uninstall-hook:
|
||||||
|
-if grep -q "Checksum: `grep -v Checksum: $(DESTDIR)$(e_sysconfdir)/emailrelay.conf | sum`" "$(DESTDIR)$(e_sysconfdir)/emailrelay.conf" ; then rm "$(DESTDIR)$(e_sysconfdir)/emailrelay.conf" ; fi
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
|
# if there is no .conf file then copy it from .conf.template
|
||||||
install-data-hook:
|
install-data-hook:
|
||||||
if test -f "$(DESTDIR)$(e_sysconfdir)/emailrelay.conf" ; then : ; else cp "$(DESTDIR)$(e_sysconfdir)/emailrelay.conf.template" "$(DESTDIR)$(e_sysconfdir)/emailrelay.conf" ; fi
|
test -f "$(DESTDIR)$(e_sysconfdir)/emailrelay.conf" || cp "$(DESTDIR)$(e_sysconfdir)/emailrelay.conf.template" "$(DESTDIR)$(e_sysconfdir)/emailrelay.conf"
|
||||||
|
|
||||||
|
# remove the .conf file - the .conf.template has been deleted when this runs
|
||||||
|
uninstall-hook:
|
||||||
|
-rm "$(DESTDIR)$(e_sysconfdir)/emailrelay.conf"
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
189
etc/Makefile.in
@ -1,8 +1,9 @@
|
|||||||
# Makefile.in generated by automake 1.10.1 from Makefile.am.
|
# Makefile.in generated by automake 1.11.3 from Makefile.am.
|
||||||
# @configure_input@
|
# @configure_input@
|
||||||
|
|
||||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||||
# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
|
# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
|
||||||
|
# Foundation, Inc.
|
||||||
# This Makefile.in is free software; the Free Software Foundation
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
@ -19,8 +20,9 @@
|
|||||||
|
|
||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
pkgdatadir = $(datadir)/@PACKAGE@
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
pkglibdir = $(libdir)/@PACKAGE@
|
|
||||||
pkgincludedir = $(includedir)/@PACKAGE@
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
|
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||||
install_sh_DATA = $(install_sh) -c -m 644
|
install_sh_DATA = $(install_sh) -c -m 644
|
||||||
install_sh_PROGRAM = $(install_sh) -c
|
install_sh_PROGRAM = $(install_sh) -c
|
||||||
@ -43,6 +45,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
|||||||
mkinstalldirs = $(install_sh) -d
|
mkinstalldirs = $(install_sh) -d
|
||||||
CONFIG_HEADER = $(top_builddir)/config.h
|
CONFIG_HEADER = $(top_builddir)/config.h
|
||||||
CONFIG_CLEAN_FILES =
|
CONFIG_CLEAN_FILES =
|
||||||
|
CONFIG_CLEAN_VPATH_FILES =
|
||||||
SOURCES =
|
SOURCES =
|
||||||
DIST_SOURCES =
|
DIST_SOURCES =
|
||||||
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
||||||
@ -50,10 +53,30 @@ am__vpath_adj = case $$p in \
|
|||||||
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
||||||
*) f=$$p;; \
|
*) f=$$p;; \
|
||||||
esac;
|
esac;
|
||||||
am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
|
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
|
||||||
am__installdirs = "$(DESTDIR)$(e_sysconfdir)"
|
am__install_max = 40
|
||||||
e_sysconfDATA_INSTALL = $(INSTALL_DATA)
|
am__nobase_strip_setup = \
|
||||||
DATA = $(e_sysconf_DATA)
|
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
|
||||||
|
am__nobase_strip = \
|
||||||
|
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
|
||||||
|
am__nobase_list = $(am__nobase_strip_setup); \
|
||||||
|
for p in $$list; do echo "$$p $$p"; done | \
|
||||||
|
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
|
||||||
|
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
|
||||||
|
if (++n[$$2] == $(am__install_max)) \
|
||||||
|
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
|
||||||
|
END { for (dir in files) print dir, files[dir] }'
|
||||||
|
am__base_list = \
|
||||||
|
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
|
||||||
|
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
|
||||||
|
am__uninstall_files_from_dir = { \
|
||||||
|
test -z "$$files" \
|
||||||
|
|| { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|
||||||
|
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
|
||||||
|
$(am__cd) "$$dir" && rm -f $$files; }; \
|
||||||
|
}
|
||||||
|
am__installdirs = "$(DESTDIR)$(e_pamdir)" "$(DESTDIR)$(e_sysconfdir)"
|
||||||
|
DATA = $(e_pam_DATA) $(e_sysconf_DATA)
|
||||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||||
ACLOCAL = @ACLOCAL@
|
ACLOCAL = @ACLOCAL@
|
||||||
AMTAR = @AMTAR@
|
AMTAR = @AMTAR@
|
||||||
@ -79,9 +102,9 @@ ECHO_N = @ECHO_N@
|
|||||||
ECHO_T = @ECHO_T@
|
ECHO_T = @ECHO_T@
|
||||||
EGREP = @EGREP@
|
EGREP = @EGREP@
|
||||||
EXEEXT = @EXEEXT@
|
EXEEXT = @EXEEXT@
|
||||||
FRAGMENTS_LIST = @FRAGMENTS_LIST@
|
|
||||||
GREP = @GREP@
|
GREP = @GREP@
|
||||||
GZIP = @GZIP@
|
GZIP = @GZIP@
|
||||||
|
G_CAPABILITIES = @G_CAPABILITIES@
|
||||||
HAVE_DOXYGEN = @HAVE_DOXYGEN@
|
HAVE_DOXYGEN = @HAVE_DOXYGEN@
|
||||||
HAVE_MAN2HTML = @HAVE_MAN2HTML@
|
HAVE_MAN2HTML = @HAVE_MAN2HTML@
|
||||||
INSTALL = @INSTALL@
|
INSTALL = @INSTALL@
|
||||||
@ -104,9 +127,14 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
|||||||
PACKAGE_NAME = @PACKAGE_NAME@
|
PACKAGE_NAME = @PACKAGE_NAME@
|
||||||
PACKAGE_STRING = @PACKAGE_STRING@
|
PACKAGE_STRING = @PACKAGE_STRING@
|
||||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||||
|
PACKAGE_URL = @PACKAGE_URL@
|
||||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
|
PAM_INCLUDE = @PAM_INCLUDE@
|
||||||
|
PAM_LIBS = @PAM_LIBS@
|
||||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
PKG_CONFIG = @PKG_CONFIG@
|
PKG_CONFIG = @PKG_CONFIG@
|
||||||
|
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
|
||||||
|
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
|
||||||
QT_CFLAGS = @QT_CFLAGS@
|
QT_CFLAGS = @QT_CFLAGS@
|
||||||
QT_LIBS = @QT_LIBS@
|
QT_LIBS = @QT_LIBS@
|
||||||
RANLIB = @RANLIB@
|
RANLIB = @RANLIB@
|
||||||
@ -117,6 +145,7 @@ STATIC_END = @STATIC_END@
|
|||||||
STATIC_START = @STATIC_START@
|
STATIC_START = @STATIC_START@
|
||||||
STRIP = @STRIP@
|
STRIP = @STRIP@
|
||||||
VERSION = @VERSION@
|
VERSION = @VERSION@
|
||||||
|
ZLIB_LIBS = @ZLIB_LIBS@
|
||||||
abs_builddir = @abs_builddir@
|
abs_builddir = @abs_builddir@
|
||||||
abs_srcdir = @abs_srcdir@
|
abs_srcdir = @abs_srcdir@
|
||||||
abs_top_builddir = @abs_top_builddir@
|
abs_top_builddir = @abs_top_builddir@
|
||||||
@ -137,8 +166,10 @@ docdir = @docdir@
|
|||||||
dvidir = @dvidir@
|
dvidir = @dvidir@
|
||||||
e_docdir = @e_docdir@
|
e_docdir = @e_docdir@
|
||||||
e_examplesdir = @e_examplesdir@
|
e_examplesdir = @e_examplesdir@
|
||||||
|
e_icondir = @e_icondir@
|
||||||
e_initdir = @e_initdir@
|
e_initdir = @e_initdir@
|
||||||
e_libexecdir = @e_libexecdir@
|
e_libexecdir = @e_libexecdir@
|
||||||
|
e_pamdir = @e_pamdir@
|
||||||
e_qtmoc = @e_qtmoc@
|
e_qtmoc = @e_qtmoc@
|
||||||
e_spooldir = @e_spooldir@
|
e_spooldir = @e_spooldir@
|
||||||
e_sysconfdir = @e_sysconfdir@
|
e_sysconfdir = @e_sysconfdir@
|
||||||
@ -164,10 +195,13 @@ sharedstatedir = @sharedstatedir@
|
|||||||
srcdir = @srcdir@
|
srcdir = @srcdir@
|
||||||
sysconfdir = @sysconfdir@
|
sysconfdir = @sysconfdir@
|
||||||
target_alias = @target_alias@
|
target_alias = @target_alias@
|
||||||
|
top_build_prefix = @top_build_prefix@
|
||||||
top_builddir = @top_builddir@
|
top_builddir = @top_builddir@
|
||||||
top_srcdir = @top_srcdir@
|
top_srcdir = @top_srcdir@
|
||||||
EXTRA_DIST = emailrelay.conf.template
|
@PAM_FALSE@e_pam_DATA =
|
||||||
e_sysconf_DATA = emailrelay.conf.template
|
@PAM_TRUE@e_pam_DATA = emailrelay
|
||||||
|
EXTRA_DIST = emailrelay.conf.template emailrelay.auth.template emailrelay.pam
|
||||||
|
e_sysconf_DATA = emailrelay.conf.template emailrelay.auth.template
|
||||||
all: all-am
|
all: all-am
|
||||||
|
|
||||||
.SUFFIXES:
|
.SUFFIXES:
|
||||||
@ -175,14 +209,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
|
|||||||
@for dep in $?; do \
|
@for dep in $?; do \
|
||||||
case '$(am__configure_deps)' in \
|
case '$(am__configure_deps)' in \
|
||||||
*$$dep*) \
|
*$$dep*) \
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||||
&& exit 0; \
|
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||||
exit 1;; \
|
exit 1;; \
|
||||||
esac; \
|
esac; \
|
||||||
done; \
|
done; \
|
||||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu etc/Makefile'; \
|
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu etc/Makefile'; \
|
||||||
cd $(top_srcdir) && \
|
$(am__cd) $(top_srcdir) && \
|
||||||
$(AUTOMAKE) --gnu etc/Makefile
|
$(AUTOMAKE) --gnu etc/Makefile
|
||||||
.PRECIOUS: Makefile
|
.PRECIOUS: Makefile
|
||||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||||
@case '$?' in \
|
@case '$?' in \
|
||||||
@ -200,23 +234,43 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
|||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
$(am__aclocal_m4_deps):
|
||||||
|
install-e_pamDATA: $(e_pam_DATA)
|
||||||
|
@$(NORMAL_INSTALL)
|
||||||
|
test -z "$(e_pamdir)" || $(MKDIR_P) "$(DESTDIR)$(e_pamdir)"
|
||||||
|
@list='$(e_pam_DATA)'; test -n "$(e_pamdir)" || list=; \
|
||||||
|
for p in $$list; do \
|
||||||
|
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||||
|
echo "$$d$$p"; \
|
||||||
|
done | $(am__base_list) | \
|
||||||
|
while read files; do \
|
||||||
|
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(e_pamdir)'"; \
|
||||||
|
$(INSTALL_DATA) $$files "$(DESTDIR)$(e_pamdir)" || exit $$?; \
|
||||||
|
done
|
||||||
|
|
||||||
|
uninstall-e_pamDATA:
|
||||||
|
@$(NORMAL_UNINSTALL)
|
||||||
|
@list='$(e_pam_DATA)'; test -n "$(e_pamdir)" || list=; \
|
||||||
|
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
|
||||||
|
dir='$(DESTDIR)$(e_pamdir)'; $(am__uninstall_files_from_dir)
|
||||||
install-e_sysconfDATA: $(e_sysconf_DATA)
|
install-e_sysconfDATA: $(e_sysconf_DATA)
|
||||||
@$(NORMAL_INSTALL)
|
@$(NORMAL_INSTALL)
|
||||||
test -z "$(e_sysconfdir)" || $(MKDIR_P) "$(DESTDIR)$(e_sysconfdir)"
|
test -z "$(e_sysconfdir)" || $(MKDIR_P) "$(DESTDIR)$(e_sysconfdir)"
|
||||||
@list='$(e_sysconf_DATA)'; for p in $$list; do \
|
@list='$(e_sysconf_DATA)'; test -n "$(e_sysconfdir)" || list=; \
|
||||||
|
for p in $$list; do \
|
||||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||||
f=$(am__strip_dir) \
|
echo "$$d$$p"; \
|
||||||
echo " $(e_sysconfDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(e_sysconfdir)/$$f'"; \
|
done | $(am__base_list) | \
|
||||||
$(e_sysconfDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(e_sysconfdir)/$$f"; \
|
while read files; do \
|
||||||
|
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(e_sysconfdir)'"; \
|
||||||
|
$(INSTALL_DATA) $$files "$(DESTDIR)$(e_sysconfdir)" || exit $$?; \
|
||||||
done
|
done
|
||||||
|
|
||||||
uninstall-e_sysconfDATA:
|
uninstall-e_sysconfDATA:
|
||||||
@$(NORMAL_UNINSTALL)
|
@$(NORMAL_UNINSTALL)
|
||||||
@list='$(e_sysconf_DATA)'; for p in $$list; do \
|
@list='$(e_sysconf_DATA)'; test -n "$(e_sysconfdir)" || list=; \
|
||||||
f=$(am__strip_dir) \
|
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
|
||||||
echo " rm -f '$(DESTDIR)$(e_sysconfdir)/$$f'"; \
|
dir='$(DESTDIR)$(e_sysconfdir)'; $(am__uninstall_files_from_dir)
|
||||||
rm -f "$(DESTDIR)$(e_sysconfdir)/$$f"; \
|
|
||||||
done
|
|
||||||
tags: TAGS
|
tags: TAGS
|
||||||
TAGS:
|
TAGS:
|
||||||
|
|
||||||
@ -240,13 +294,17 @@ distdir: $(DISTFILES)
|
|||||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||||
if test -d $$d/$$file; then \
|
if test -d $$d/$$file; then \
|
||||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
if test -d "$(distdir)/$$file"; then \
|
||||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||||
fi; \
|
fi; \
|
||||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||||
|
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||||
|
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||||
|
fi; \
|
||||||
|
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||||
else \
|
else \
|
||||||
test -f $(distdir)/$$file \
|
test -f "$(distdir)/$$file" \
|
||||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||||
|| exit 1; \
|
|| exit 1; \
|
||||||
fi; \
|
fi; \
|
||||||
done
|
done
|
||||||
@ -254,7 +312,7 @@ check-am: all-am
|
|||||||
check: check-am
|
check: check-am
|
||||||
all-am: Makefile $(DATA)
|
all-am: Makefile $(DATA)
|
||||||
installdirs:
|
installdirs:
|
||||||
for dir in "$(DESTDIR)$(e_sysconfdir)"; do \
|
for dir in "$(DESTDIR)$(e_pamdir)" "$(DESTDIR)$(e_sysconfdir)"; do \
|
||||||
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
|
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
|
||||||
done
|
done
|
||||||
install: install-am
|
install: install-am
|
||||||
@ -267,23 +325,29 @@ install-am: all-am
|
|||||||
|
|
||||||
installcheck: installcheck-am
|
installcheck: installcheck-am
|
||||||
install-strip:
|
install-strip:
|
||||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
if test -z '$(STRIP)'; then \
|
||||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
`test -z '$(STRIP)' || \
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
install; \
|
||||||
|
else \
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
|
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||||
|
fi
|
||||||
mostlyclean-generic:
|
mostlyclean-generic:
|
||||||
|
|
||||||
clean-generic:
|
clean-generic:
|
||||||
|
|
||||||
distclean-generic:
|
distclean-generic:
|
||||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||||
|
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||||
|
|
||||||
maintainer-clean-generic:
|
maintainer-clean-generic:
|
||||||
@echo "This command is intended for maintainers to use"
|
@echo "This command is intended for maintainers to use"
|
||||||
@echo "it deletes files that may require special tools to rebuild."
|
@echo "it deletes files that may require special tools to rebuild."
|
||||||
clean: clean-am
|
clean: clean-am
|
||||||
|
|
||||||
clean-am: clean-generic mostlyclean-am
|
clean-am: clean-generic clean-local mostlyclean-am
|
||||||
|
|
||||||
distclean: distclean-am
|
distclean: distclean-am
|
||||||
-rm -f Makefile
|
-rm -f Makefile
|
||||||
@ -295,28 +359,39 @@ dvi-am:
|
|||||||
|
|
||||||
html: html-am
|
html: html-am
|
||||||
|
|
||||||
|
html-am:
|
||||||
|
|
||||||
info: info-am
|
info: info-am
|
||||||
|
|
||||||
info-am:
|
info-am:
|
||||||
|
|
||||||
install-data-am: install-e_sysconfDATA
|
install-data-am: install-e_pamDATA install-e_sysconfDATA
|
||||||
@$(NORMAL_INSTALL)
|
@$(NORMAL_INSTALL)
|
||||||
$(MAKE) $(AM_MAKEFLAGS) install-data-hook
|
$(MAKE) $(AM_MAKEFLAGS) install-data-hook
|
||||||
|
|
||||||
install-dvi: install-dvi-am
|
install-dvi: install-dvi-am
|
||||||
|
|
||||||
|
install-dvi-am:
|
||||||
|
|
||||||
install-exec-am:
|
install-exec-am:
|
||||||
|
|
||||||
install-html: install-html-am
|
install-html: install-html-am
|
||||||
|
|
||||||
|
install-html-am:
|
||||||
|
|
||||||
install-info: install-info-am
|
install-info: install-info-am
|
||||||
|
|
||||||
|
install-info-am:
|
||||||
|
|
||||||
install-man:
|
install-man:
|
||||||
|
|
||||||
install-pdf: install-pdf-am
|
install-pdf: install-pdf-am
|
||||||
|
|
||||||
|
install-pdf-am:
|
||||||
|
|
||||||
install-ps: install-ps-am
|
install-ps: install-ps-am
|
||||||
|
|
||||||
|
install-ps-am:
|
||||||
|
|
||||||
installcheck-am:
|
installcheck-am:
|
||||||
|
|
||||||
maintainer-clean: maintainer-clean-am
|
maintainer-clean: maintainer-clean-am
|
||||||
@ -335,28 +410,48 @@ ps: ps-am
|
|||||||
|
|
||||||
ps-am:
|
ps-am:
|
||||||
|
|
||||||
uninstall-am: uninstall-e_sysconfDATA
|
uninstall-am: uninstall-e_pamDATA uninstall-e_sysconfDATA
|
||||||
|
@$(NORMAL_INSTALL)
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) uninstall-hook
|
||||||
|
.MAKE: install-am install-data-am install-strip uninstall-am
|
||||||
|
|
||||||
.MAKE: install-am install-data-am install-strip
|
.PHONY: all all-am check check-am clean clean-generic clean-local \
|
||||||
|
distclean distclean-generic distdir dvi dvi-am html html-am \
|
||||||
.PHONY: all all-am check check-am clean clean-generic distclean \
|
info info-am install install-am install-data install-data-am \
|
||||||
distclean-generic distdir dvi dvi-am html html-am info info-am \
|
install-data-hook install-dvi install-dvi-am install-e_pamDATA \
|
||||||
install install-am install-data install-data-am \
|
|
||||||
install-data-hook install-dvi install-dvi-am \
|
|
||||||
install-e_sysconfDATA install-exec install-exec-am \
|
install-e_sysconfDATA install-exec install-exec-am \
|
||||||
install-html install-html-am install-info install-info-am \
|
install-html install-html-am install-info install-info-am \
|
||||||
install-man install-pdf install-pdf-am install-ps \
|
install-man install-pdf install-pdf-am install-ps \
|
||||||
install-ps-am install-strip installcheck installcheck-am \
|
install-ps-am install-strip installcheck installcheck-am \
|
||||||
installdirs maintainer-clean maintainer-clean-generic \
|
installdirs maintainer-clean maintainer-clean-generic \
|
||||||
mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
|
mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
|
||||||
uninstall-am uninstall-e_sysconfDATA
|
uninstall-am uninstall-e_pamDATA uninstall-e_sysconfDATA \
|
||||||
|
uninstall-hook
|
||||||
|
|
||||||
|
|
||||||
|
emailrelay: emailrelay.pam
|
||||||
|
cp $(top_srcdir)/etc/emailrelay.pam $@
|
||||||
|
|
||||||
|
clean-local:
|
||||||
|
-rm -f emailrelay 2>/dev/null
|
||||||
|
|
||||||
|
# create the .conf file from .conf.template with directory edits - dont
|
||||||
|
# use this when running configure for building a .deb or .rpm package
|
||||||
@INSTALL_HOOK_TRUE@install-data-hook:
|
@INSTALL_HOOK_TRUE@install-data-hook:
|
||||||
@INSTALL_HOOK_TRUE@ if test -f "$(DESTDIR)$(e_sysconfdir)/emailrelay.conf" ; then : ; else cat "$(DESTDIR)$(e_sysconfdir)/emailrelay.conf.template" | sed "s:^#spool-dir /var/spool/emailrelay:spool-dir $(DESTDIR)$(e_spooldir):g" | sed 's:"/var/spool/emailrelay":"'"$(e_spooldir)"'":g' | sed "s:/etc:$(e_sysconfdir):g" | sed "s:/usr/local/bin:$(e_libexecdir):g" > "$(DESTDIR)$(e_sysconfdir)/emailrelay.conf" ; fi
|
@INSTALL_HOOK_TRUE@ if test -f "$(DESTDIR)$(e_sysconfdir)/emailrelay.conf" ; then : ; else cat "$(DESTDIR)$(e_sysconfdir)/emailrelay.conf.template" | sed "s:^#spool-dir .*:spool-dir $(e_spooldir):g" | sed 's:"/var/spool/emailrelay":"'"$(e_spooldir)"'":g' | sed "s:/etc:$(e_sysconfdir):g" | sed "s:/usr/local/bin:$(e_libexecdir):g" > "$(DESTDIR)$(e_sysconfdir)/emailrelay.conf" ; sum < "$(DESTDIR)$(e_sysconfdir)/emailrelay.conf" | sed 's/^/# Checksum: /' >> "$(DESTDIR)$(e_sysconfdir)/emailrelay.conf" ; fi
|
||||||
|
|
||||||
|
# remove the .conf file if it has not been editied
|
||||||
|
@INSTALL_HOOK_TRUE@uninstall-hook:
|
||||||
|
@INSTALL_HOOK_TRUE@ -if grep -q "Checksum: `grep -v Checksum: $(DESTDIR)$(e_sysconfdir)/emailrelay.conf | sum`" "$(DESTDIR)$(e_sysconfdir)/emailrelay.conf" ; then rm "$(DESTDIR)$(e_sysconfdir)/emailrelay.conf" ; fi
|
||||||
|
|
||||||
|
# if there is no .conf file then copy it from .conf.template
|
||||||
@INSTALL_HOOK_FALSE@install-data-hook:
|
@INSTALL_HOOK_FALSE@install-data-hook:
|
||||||
@INSTALL_HOOK_FALSE@ if test -f "$(DESTDIR)$(e_sysconfdir)/emailrelay.conf" ; then : ; else cp "$(DESTDIR)$(e_sysconfdir)/emailrelay.conf.template" "$(DESTDIR)$(e_sysconfdir)/emailrelay.conf" ; fi
|
@INSTALL_HOOK_FALSE@ test -f "$(DESTDIR)$(e_sysconfdir)/emailrelay.conf" || cp "$(DESTDIR)$(e_sysconfdir)/emailrelay.conf.template" "$(DESTDIR)$(e_sysconfdir)/emailrelay.conf"
|
||||||
|
|
||||||
|
# remove the .conf file - the .conf.template has been deleted when this runs
|
||||||
|
@INSTALL_HOOK_FALSE@uninstall-hook:
|
||||||
|
@INSTALL_HOOK_FALSE@ -rm "$(DESTDIR)$(e_sysconfdir)/emailrelay.conf"
|
||||||
|
|
||||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
.NOEXPORT:
|
.NOEXPORT:
|
||||||
|
45
etc/emailrelay.auth.template
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
#
|
||||||
|
# emailrelay.auth
|
||||||
|
#
|
||||||
|
# E-MailRelay secrets file.
|
||||||
|
#
|
||||||
|
# Point to this file on the emailrelay commandline, like this:
|
||||||
|
#
|
||||||
|
# $ emailrelay --as-client=example.com:25 --client-auth=/etc/emailrelay.auth
|
||||||
|
# $ emailrelay --as-server --server-auth=/etc/emailrelay.auth
|
||||||
|
#
|
||||||
|
# Each line in this file has four space-separated fields:
|
||||||
|
# {server|client} <mechanism> <name> <secret>
|
||||||
|
# mechanism := { CRAM-MD5 | LOGIN | APOP | NONE }
|
||||||
|
#
|
||||||
|
# For example,
|
||||||
|
# client LOGIN me password
|
||||||
|
# server CRAM-MD5 user1 3331427893.2002577218.3241710438.2089385739.2077014046.1094160264.2027813133.1565911587
|
||||||
|
# server APOP user2 secret
|
||||||
|
#
|
||||||
|
# Normally there should be one "client" line used to connect to a remote SMTP
|
||||||
|
# server and multiple "server" lines representing accounts used by clients to
|
||||||
|
# connect to this server.
|
||||||
|
#
|
||||||
|
# Secrets for the "CRAM-MD5" mechanism should be generated by running the
|
||||||
|
# "emailrelay-passwd" program.
|
||||||
|
#
|
||||||
|
# For backwards compatibility the first two fields can be reversed.
|
||||||
|
#
|
||||||
|
# Any unusual characters (including space, "=" and "+") in the "name" and
|
||||||
|
# "secret" fields should encoded using the RFC 1891 "xtext" encoding scheme
|
||||||
|
# so that they are representing as hexadecimal ascii as "+XX".
|
||||||
|
#
|
||||||
|
# For example,
|
||||||
|
# client LOGIN me my+20password
|
||||||
|
# server LOGIN einstein e+3Dmc2
|
||||||
|
#
|
||||||
|
# The "NONE" mechanism is used to allow trusted IP addresses to bypass
|
||||||
|
# authentication. For these lines the "name" field should be the wildcarded
|
||||||
|
# IP address range and the "secret" should be a one-word comment.
|
||||||
|
#
|
||||||
|
# For example,
|
||||||
|
# server NONE 192.168.1.* localnet
|
||||||
|
# server NONE 10.0.0.0/16 vpn
|
||||||
|
#
|
||||||
|
|
@ -2,19 +2,19 @@
|
|||||||
# emailrelay.conf
|
# emailrelay.conf
|
||||||
#
|
#
|
||||||
# This is a configuration file for E-MailRelay (http://emailrelay.sf.net).
|
# This is a configuration file for E-MailRelay (http://emailrelay.sf.net).
|
||||||
# It is used by the emailrelay "init.d" script when it starts up an emailrelay
|
# It is used by the emailrelay "init.d" script when it starts up an emailrelay
|
||||||
# server.
|
# server.
|
||||||
#
|
#
|
||||||
# The "init.d" script constructs an emailrelay command-line by starting
|
# The "init.d" script constructs an emailrelay command-line by starting
|
||||||
# with "--as-server --pid-file ..." and then contatenating uncommented lines
|
# with "--as-server --pid-file ..." and then contatenating uncommented lines
|
||||||
# from this file, prefixing each with "--".
|
# from this file, prefixing each with "--".
|
||||||
#
|
#
|
||||||
# To enable one of the configuration switches below remove the '#' character
|
# To enable one of the configuration options below remove the '#' character
|
||||||
# on the last line in the block.
|
# on the last line in the block.
|
||||||
#
|
#
|
||||||
|
|
||||||
# Name: remote-clients
|
# Name: remote-clients
|
||||||
# Format: remote-clients
|
# Format: remote-clients
|
||||||
# Description: Allows remote clients to connect. By default only local
|
# Description: Allows remote clients to connect. By default only local
|
||||||
# clients can connect to the server and connections from remote clients
|
# clients can connect to the server and connections from remote clients
|
||||||
# are rejected.
|
# are rejected.
|
||||||
@ -22,14 +22,14 @@
|
|||||||
#remote-clients
|
#remote-clients
|
||||||
|
|
||||||
# Name: spool-dir
|
# Name: spool-dir
|
||||||
# Format: spool-dir <dir>
|
# Format: spool-dir <dir>
|
||||||
# Description: Specifies the spool directory. The default is compiled into the
|
# Description: Specifies the spool directory. The default is compiled into the
|
||||||
# program, but it is typically "/var/spool/emailrelay".
|
# program, but it is typically "/var/spool/emailrelay".
|
||||||
#
|
#
|
||||||
#spool-dir /var/spool/emailrelay
|
#spool-dir /var/spool/emailrelay
|
||||||
|
|
||||||
# Name: interface
|
# Name: interface
|
||||||
# Format: interface <ip-address>
|
# Format: interface <ip-address>
|
||||||
# Description: Specifies an interface to listen on. The default is to listen
|
# Description: Specifies an interface to listen on. The default is to listen
|
||||||
# on all interfaces (INADDR_ANY). Using a specific interface can make it harder
|
# on all interfaces (INADDR_ANY). Using a specific interface can make it harder
|
||||||
# for clients on other sub-networks to connect, so improving security. Multiple
|
# for clients on other sub-networks to connect, so improving security. Multiple
|
||||||
@ -38,7 +38,7 @@
|
|||||||
#interface 192.168.0.10
|
#interface 192.168.0.10
|
||||||
|
|
||||||
# Name: filter
|
# Name: filter
|
||||||
# Format: filter <program>
|
# Format: filter <program>
|
||||||
# Description: Defines a mail processor program which is run as each message is stored.
|
# Description: Defines a mail processor program which is run as each message is stored.
|
||||||
# The program or script is given the name of each message file on the command-line,
|
# The program or script is given the name of each message file on the command-line,
|
||||||
# giving it the opportunity to edit, copy or delete it.
|
# giving it the opportunity to edit, copy or delete it.
|
||||||
@ -46,7 +46,7 @@
|
|||||||
#filter /usr/local/bin/emailrelay-filter
|
#filter /usr/local/bin/emailrelay-filter
|
||||||
|
|
||||||
# Name: server-auth
|
# Name: server-auth
|
||||||
# Format: server-auth <file>
|
# Format: server-auth <file>
|
||||||
# Description: Enables authentication of remote SMTP clients, using the given secrets file.
|
# Description: Enables authentication of remote SMTP clients, using the given secrets file.
|
||||||
# The secrets file contains usernames and passwords, either in plain-text or as MD5
|
# The secrets file contains usernames and passwords, either in plain-text or as MD5
|
||||||
# digests.
|
# digests.
|
||||||
@ -54,13 +54,13 @@
|
|||||||
#server-auth /etc/emailrelay.auth
|
#server-auth /etc/emailrelay.auth
|
||||||
|
|
||||||
# Name: admin
|
# Name: admin
|
||||||
# Format: admin <admin-port>
|
# Format: admin <admin-port>
|
||||||
# Description: Enables the administration interface and specifies its listening port number.
|
# Description: Enables the administration interface and specifies its listening port number.
|
||||||
#
|
#
|
||||||
#admin 10026
|
#admin 10026
|
||||||
|
|
||||||
# Name: client-auth
|
# Name: client-auth
|
||||||
# Format: client-auth <file>
|
# Format: client-auth <file>
|
||||||
# Description: Enables authentication with the remote server, using the given secrets file.
|
# Description: Enables authentication with the remote server, using the given secrets file.
|
||||||
# The secrets file contains the username and password that E-MailRelay uses to connect
|
# The secrets file contains the username and password that E-MailRelay uses to connect
|
||||||
# to the remove SMTP server.
|
# to the remove SMTP server.
|
||||||
@ -69,13 +69,26 @@
|
|||||||
|
|
||||||
# Name: client-tls
|
# Name: client-tls
|
||||||
# Format: client-tls
|
# Format: client-tls
|
||||||
# Description: Enables the tls/ssl layer when acting as an smtp client.
|
# Description: Enables negotiated TLS encryption (STARTTLS) when acting as an smtp client.
|
||||||
#
|
#
|
||||||
#client-tls
|
#client-tls
|
||||||
|
|
||||||
|
# Name: client-tls-connection
|
||||||
|
# Format: client-tls-connection
|
||||||
|
# Description: Enables SMTP-over-TLS when acting as an smtp client.
|
||||||
|
#
|
||||||
|
#client-tls-connection
|
||||||
|
|
||||||
|
# Name: tls-config
|
||||||
|
# Format: tls-config <flags>
|
||||||
|
# Description: Modifies the TLS layer configuration. For OpenSSL a value of 3 enables SSLv3
|
||||||
|
# and 2 enables SSLv2/3.
|
||||||
|
#
|
||||||
|
#tls-config=2
|
||||||
|
|
||||||
# Name: server-tls
|
# Name: server-tls
|
||||||
# Format: server-tls <open-ssl-pem-file>
|
# Format: server-tls <open-ssl-pem-file>
|
||||||
# Description: Enables the tls/ssl layer when acting as an smtp server.
|
# Description: Enables negotiated TLS encryption (STARTTLS) when acting as an smtp server.
|
||||||
# Use the "openssl" utility to create and test a ".pem" certificate file.
|
# Use the "openssl" utility to create and test a ".pem" certificate file.
|
||||||
# Note that OpenSSL requires certificates to be installed in a trusted
|
# Note that OpenSSL requires certificates to be installed in a trusted
|
||||||
# directory, such as "/etc/ssl/certs". Use a full path to the certificate file.
|
# directory, such as "/etc/ssl/certs". Use a full path to the certificate file.
|
||||||
@ -83,86 +96,86 @@
|
|||||||
#server-tls /etc/ssl/certs/emailrelay.pem
|
#server-tls /etc/ssl/certs/emailrelay.pem
|
||||||
|
|
||||||
# Name: connection-timeout
|
# Name: connection-timeout
|
||||||
# Format: connection-timeout <time>
|
# Format: connection-timeout <time>
|
||||||
# Description: Sets the timeout (in seconds) when connecting to a remote server. The default is 40.
|
# Description: Sets the timeout (in seconds) when connecting to a remote server. The default is 40.
|
||||||
#
|
#
|
||||||
#connection-timeout 10
|
#connection-timeout 10
|
||||||
|
|
||||||
# Name: domain
|
# Name: domain
|
||||||
# Format: domain <fqdn>
|
# Format: domain <fqdn>
|
||||||
# Description: Sets an override for this host's fully qualified domain name.
|
# Description: Sets an override for this host's fully qualified domain name.
|
||||||
# This is used as an identifier in the SMTP protocol and is therefore visible
|
# This is used as an identifier in the SMTP protocol and is therefore visible
|
||||||
# to remote SMTP servers and clients.
|
# to remote SMTP servers and clients.
|
||||||
#
|
#
|
||||||
#domain myhost.mydomain.net
|
#domain myhost.mydomain.net
|
||||||
|
|
||||||
# Name: forward
|
# Name: forward
|
||||||
# Format: forward
|
# Format: forward
|
||||||
# Description: Forwards stored mail on startup. Requires --forward-to.
|
# Description: Forwards stored mail on startup. Requires --forward-to.
|
||||||
# This is implicit in the --as-proxy switch.
|
# This is implicit in the --as-proxy option.
|
||||||
#
|
#
|
||||||
#forward
|
#forward
|
||||||
|
|
||||||
# Name: forward-to
|
# Name: forward-to
|
||||||
# Format: forward-to <host:port>
|
# Format: forward-to <host:port>
|
||||||
# Description: Specifies the remote SMTP server when using --forward, --as-proxy
|
# Description: Specifies the remote SMTP server when using --forward, --as-proxy
|
||||||
# or --admin.
|
# or --admin.
|
||||||
#
|
#
|
||||||
#forward-to smarthost.mydomain.net
|
#forward-to smarthost.mydomain.net
|
||||||
|
|
||||||
# Name: immediate
|
# Name: immediate
|
||||||
# Format: immediate
|
# Format: immediate
|
||||||
# Description: Forwards each message as soon as it is received. Requires --forward-to.
|
# Description: Forwards each message as soon as it is received. Requires --forward-to.
|
||||||
# This is implicit in the --as-proxy switch.
|
# This is implicit in the --as-proxy option.
|
||||||
#
|
#
|
||||||
#immediate
|
#immediate
|
||||||
|
|
||||||
# Name: log-time
|
# Name: log-time
|
||||||
# Format: log-time
|
# Format: log-time
|
||||||
# Description: Adds a timestamp to the logging output.
|
# Description: Adds a timestamp to the logging output.
|
||||||
#
|
#
|
||||||
#log-time
|
#log-time
|
||||||
|
|
||||||
# Name: no-syslog
|
# Name: no-syslog
|
||||||
# Format: no-syslog
|
# Format: no-syslog
|
||||||
# Description: Disables syslog output.
|
# Description: Disables syslog output.
|
||||||
#
|
#
|
||||||
#no-syslog
|
#no-syslog
|
||||||
|
|
||||||
# Name: poll
|
# Name: poll
|
||||||
# Format: poll <period>
|
# Format: poll <period>
|
||||||
# Description: Enables polling of the spool directory for new messages with the
|
# Description: Enables polling of the spool directory for new messages with the
|
||||||
# specified period (in seconds). A value of zero means that forwarding is done
|
# specified period (in seconds). A value of zero means that forwarding is done
|
||||||
# once the submitting client disconnects. Requires --forward-to.
|
# once the submitting client disconnects. Requires --forward-to.
|
||||||
#
|
#
|
||||||
#poll 120
|
#poll 120
|
||||||
|
|
||||||
# Name: port
|
# Name: port
|
||||||
# Format: port <port>
|
# Format: port <port>
|
||||||
# Description: Specifies the SMTP listening port number.
|
# Description: Specifies the SMTP listening port number.
|
||||||
#
|
#
|
||||||
#port 587
|
#port 587
|
||||||
|
|
||||||
# Name: response-timeout
|
# Name: response-timeout
|
||||||
# Format: response-timeout <time>
|
# Format: response-timeout <time>
|
||||||
# Description: Sets the response timeout (in seconds) when talking to a remote server. The default is 1800.
|
# Description: Sets the response timeout (in seconds) when talking to a remote server. The default is 1800.
|
||||||
#
|
#
|
||||||
#response-timeout 60
|
#response-timeout 60
|
||||||
|
|
||||||
# Name: user
|
# Name: user
|
||||||
# Format: user <username>
|
# Format: user <username>
|
||||||
# Description: Names the effective user to switch to when started as root (default is "daemon").
|
# Description: Names the effective user to switch to when started as root (default is "daemon").
|
||||||
#
|
#
|
||||||
#user nobody
|
#user nobody
|
||||||
|
|
||||||
# Name: verbose
|
# Name: verbose
|
||||||
# Format: verbose
|
# Format: verbose
|
||||||
# Description: Generates more verbose logging output.
|
# Description: Generates more verbose logging output.
|
||||||
#
|
#
|
||||||
#verbose
|
#verbose
|
||||||
|
|
||||||
# Name: verifier
|
# Name: verifier
|
||||||
# Format: verifier <program>
|
# Format: verifier <program>
|
||||||
# Description: Defines an external address verifier program.
|
# Description: Defines an external address verifier program.
|
||||||
#
|
#
|
||||||
#verifier /usr/local/bin/emailrelay-verifier
|
#verifier /usr/local/bin/emailrelay-verifier
|
||||||
@ -199,3 +212,5 @@
|
|||||||
#
|
#
|
||||||
#pop-by-name
|
#pop-by-name
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
5
etc/emailrelay.pam
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# emailrelay pam configuration
|
||||||
|
auth requisite pam_unix.so nullok_secure
|
||||||
|
session required pam_permit.so
|
||||||
|
account required pam_permit.so
|
||||||
|
password required pam_deny.so
|
@ -1,9 +1,9 @@
|
|||||||
#
|
#
|
||||||
## Copyright (C) 2001-2008 Graeme Walker <graeme_walker@users.sourceforge.net>
|
## Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>
|
||||||
##
|
##
|
||||||
## This program is free software: you can redistribute it and/or modify
|
## This program is free software: you can redistribute it and/or modify
|
||||||
## it under the terms of the GNU General Public License as published by
|
## it under the terms of the GNU General Public License as published by
|
||||||
## the Free Software Foundation, either version 3 of the License, or
|
## the Free Software Foundation, either version 3 of the License, or
|
||||||
## (at your option) any later version.
|
## (at your option) any later version.
|
||||||
##
|
##
|
||||||
## This program is distributed in the hope that it will be useful,
|
## This program is distributed in the hope that it will be useful,
|
||||||
@ -15,4 +15,4 @@
|
|||||||
## along with this program. If not, see <http://www.gnu.org/licenses/>.
|
## along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
EXTRA_DIST =
|
EXTRA_DIST =
|
||||||
SUBDIRS = mips
|
SUBDIRS =
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
# Makefile.in generated by automake 1.10.1 from Makefile.am.
|
# Makefile.in generated by automake 1.11.3 from Makefile.am.
|
||||||
# @configure_input@
|
# @configure_input@
|
||||||
|
|
||||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||||
# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
|
# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
|
||||||
|
# Foundation, Inc.
|
||||||
# This Makefile.in is free software; the Free Software Foundation
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
@ -15,8 +16,9 @@
|
|||||||
@SET_MAKE@
|
@SET_MAKE@
|
||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
pkgdatadir = $(datadir)/@PACKAGE@
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
pkglibdir = $(libdir)/@PACKAGE@
|
|
||||||
pkgincludedir = $(includedir)/@PACKAGE@
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
|
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||||
install_sh_DATA = $(install_sh) -c -m 644
|
install_sh_DATA = $(install_sh) -c -m 644
|
||||||
install_sh_PROGRAM = $(install_sh) -c
|
install_sh_PROGRAM = $(install_sh) -c
|
||||||
@ -39,6 +41,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
|||||||
mkinstalldirs = $(install_sh) -d
|
mkinstalldirs = $(install_sh) -d
|
||||||
CONFIG_HEADER = $(top_builddir)/config.h
|
CONFIG_HEADER = $(top_builddir)/config.h
|
||||||
CONFIG_CLEAN_FILES =
|
CONFIG_CLEAN_FILES =
|
||||||
|
CONFIG_CLEAN_VPATH_FILES =
|
||||||
SOURCES =
|
SOURCES =
|
||||||
DIST_SOURCES =
|
DIST_SOURCES =
|
||||||
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
|
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
|
||||||
@ -50,10 +53,38 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
|
|||||||
ps-recursive uninstall-recursive
|
ps-recursive uninstall-recursive
|
||||||
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
|
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
|
||||||
distclean-recursive maintainer-clean-recursive
|
distclean-recursive maintainer-clean-recursive
|
||||||
|
AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
|
||||||
|
$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
|
||||||
|
distdir
|
||||||
ETAGS = etags
|
ETAGS = etags
|
||||||
CTAGS = ctags
|
CTAGS = ctags
|
||||||
DIST_SUBDIRS = $(SUBDIRS)
|
DIST_SUBDIRS = $(SUBDIRS)
|
||||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||||
|
am__relativize = \
|
||||||
|
dir0=`pwd`; \
|
||||||
|
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
|
||||||
|
sed_rest='s,^[^/]*/*,,'; \
|
||||||
|
sed_last='s,^.*/\([^/]*\)$$,\1,'; \
|
||||||
|
sed_butlast='s,/*[^/]*$$,,'; \
|
||||||
|
while test -n "$$dir1"; do \
|
||||||
|
first=`echo "$$dir1" | sed -e "$$sed_first"`; \
|
||||||
|
if test "$$first" != "."; then \
|
||||||
|
if test "$$first" = ".."; then \
|
||||||
|
dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
|
||||||
|
dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
|
||||||
|
else \
|
||||||
|
first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
|
||||||
|
if test "$$first2" = "$$first"; then \
|
||||||
|
dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
|
||||||
|
else \
|
||||||
|
dir2="../$$dir2"; \
|
||||||
|
fi; \
|
||||||
|
dir0="$$dir0"/"$$first"; \
|
||||||
|
fi; \
|
||||||
|
fi; \
|
||||||
|
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
|
||||||
|
done; \
|
||||||
|
reldir="$$dir2"
|
||||||
ACLOCAL = @ACLOCAL@
|
ACLOCAL = @ACLOCAL@
|
||||||
AMTAR = @AMTAR@
|
AMTAR = @AMTAR@
|
||||||
AR = @AR@
|
AR = @AR@
|
||||||
@ -78,9 +109,9 @@ ECHO_N = @ECHO_N@
|
|||||||
ECHO_T = @ECHO_T@
|
ECHO_T = @ECHO_T@
|
||||||
EGREP = @EGREP@
|
EGREP = @EGREP@
|
||||||
EXEEXT = @EXEEXT@
|
EXEEXT = @EXEEXT@
|
||||||
FRAGMENTS_LIST = @FRAGMENTS_LIST@
|
|
||||||
GREP = @GREP@
|
GREP = @GREP@
|
||||||
GZIP = @GZIP@
|
GZIP = @GZIP@
|
||||||
|
G_CAPABILITIES = @G_CAPABILITIES@
|
||||||
HAVE_DOXYGEN = @HAVE_DOXYGEN@
|
HAVE_DOXYGEN = @HAVE_DOXYGEN@
|
||||||
HAVE_MAN2HTML = @HAVE_MAN2HTML@
|
HAVE_MAN2HTML = @HAVE_MAN2HTML@
|
||||||
INSTALL = @INSTALL@
|
INSTALL = @INSTALL@
|
||||||
@ -103,9 +134,14 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
|||||||
PACKAGE_NAME = @PACKAGE_NAME@
|
PACKAGE_NAME = @PACKAGE_NAME@
|
||||||
PACKAGE_STRING = @PACKAGE_STRING@
|
PACKAGE_STRING = @PACKAGE_STRING@
|
||||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||||
|
PACKAGE_URL = @PACKAGE_URL@
|
||||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
|
PAM_INCLUDE = @PAM_INCLUDE@
|
||||||
|
PAM_LIBS = @PAM_LIBS@
|
||||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
PKG_CONFIG = @PKG_CONFIG@
|
PKG_CONFIG = @PKG_CONFIG@
|
||||||
|
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
|
||||||
|
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
|
||||||
QT_CFLAGS = @QT_CFLAGS@
|
QT_CFLAGS = @QT_CFLAGS@
|
||||||
QT_LIBS = @QT_LIBS@
|
QT_LIBS = @QT_LIBS@
|
||||||
RANLIB = @RANLIB@
|
RANLIB = @RANLIB@
|
||||||
@ -116,6 +152,7 @@ STATIC_END = @STATIC_END@
|
|||||||
STATIC_START = @STATIC_START@
|
STATIC_START = @STATIC_START@
|
||||||
STRIP = @STRIP@
|
STRIP = @STRIP@
|
||||||
VERSION = @VERSION@
|
VERSION = @VERSION@
|
||||||
|
ZLIB_LIBS = @ZLIB_LIBS@
|
||||||
abs_builddir = @abs_builddir@
|
abs_builddir = @abs_builddir@
|
||||||
abs_srcdir = @abs_srcdir@
|
abs_srcdir = @abs_srcdir@
|
||||||
abs_top_builddir = @abs_top_builddir@
|
abs_top_builddir = @abs_top_builddir@
|
||||||
@ -136,8 +173,10 @@ docdir = @docdir@
|
|||||||
dvidir = @dvidir@
|
dvidir = @dvidir@
|
||||||
e_docdir = @e_docdir@
|
e_docdir = @e_docdir@
|
||||||
e_examplesdir = @e_examplesdir@
|
e_examplesdir = @e_examplesdir@
|
||||||
|
e_icondir = @e_icondir@
|
||||||
e_initdir = @e_initdir@
|
e_initdir = @e_initdir@
|
||||||
e_libexecdir = @e_libexecdir@
|
e_libexecdir = @e_libexecdir@
|
||||||
|
e_pamdir = @e_pamdir@
|
||||||
e_qtmoc = @e_qtmoc@
|
e_qtmoc = @e_qtmoc@
|
||||||
e_spooldir = @e_spooldir@
|
e_spooldir = @e_spooldir@
|
||||||
e_sysconfdir = @e_sysconfdir@
|
e_sysconfdir = @e_sysconfdir@
|
||||||
@ -163,13 +202,14 @@ sharedstatedir = @sharedstatedir@
|
|||||||
srcdir = @srcdir@
|
srcdir = @srcdir@
|
||||||
sysconfdir = @sysconfdir@
|
sysconfdir = @sysconfdir@
|
||||||
target_alias = @target_alias@
|
target_alias = @target_alias@
|
||||||
|
top_build_prefix = @top_build_prefix@
|
||||||
top_builddir = @top_builddir@
|
top_builddir = @top_builddir@
|
||||||
top_srcdir = @top_srcdir@
|
top_srcdir = @top_srcdir@
|
||||||
|
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
EXTRA_DIST =
|
EXTRA_DIST =
|
||||||
SUBDIRS = mips
|
SUBDIRS =
|
||||||
all: all-recursive
|
all: all-recursive
|
||||||
|
|
||||||
.SUFFIXES:
|
.SUFFIXES:
|
||||||
@ -177,14 +217,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
|
|||||||
@for dep in $?; do \
|
@for dep in $?; do \
|
||||||
case '$(am__configure_deps)' in \
|
case '$(am__configure_deps)' in \
|
||||||
*$$dep*) \
|
*$$dep*) \
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||||
&& exit 0; \
|
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||||
exit 1;; \
|
exit 1;; \
|
||||||
esac; \
|
esac; \
|
||||||
done; \
|
done; \
|
||||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu extra/Makefile'; \
|
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu extra/Makefile'; \
|
||||||
cd $(top_srcdir) && \
|
$(am__cd) $(top_srcdir) && \
|
||||||
$(AUTOMAKE) --gnu extra/Makefile
|
$(AUTOMAKE) --gnu extra/Makefile
|
||||||
.PRECIOUS: Makefile
|
.PRECIOUS: Makefile
|
||||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||||
@case '$?' in \
|
@case '$?' in \
|
||||||
@ -202,6 +242,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
|||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
$(am__aclocal_m4_deps):
|
||||||
|
|
||||||
# This directory's subdirectories are mostly independent; you can cd
|
# This directory's subdirectories are mostly independent; you can cd
|
||||||
# into them and run `make' without going through this Makefile.
|
# into them and run `make' without going through this Makefile.
|
||||||
@ -210,7 +251,7 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
|||||||
# (which will cause the Makefiles to be regenerated when you run `make');
|
# (which will cause the Makefiles to be regenerated when you run `make');
|
||||||
# (2) otherwise, pass the desired values on the `make' command line.
|
# (2) otherwise, pass the desired values on the `make' command line.
|
||||||
$(RECURSIVE_TARGETS):
|
$(RECURSIVE_TARGETS):
|
||||||
@failcom='exit 1'; \
|
@fail= failcom='exit 1'; \
|
||||||
for f in x $$MAKEFLAGS; do \
|
for f in x $$MAKEFLAGS; do \
|
||||||
case $$f in \
|
case $$f in \
|
||||||
*=* | --[!k]*);; \
|
*=* | --[!k]*);; \
|
||||||
@ -227,7 +268,7 @@ $(RECURSIVE_TARGETS):
|
|||||||
else \
|
else \
|
||||||
local_target="$$target"; \
|
local_target="$$target"; \
|
||||||
fi; \
|
fi; \
|
||||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||||
|| eval $$failcom; \
|
|| eval $$failcom; \
|
||||||
done; \
|
done; \
|
||||||
if test "$$dot_seen" = "no"; then \
|
if test "$$dot_seen" = "no"; then \
|
||||||
@ -235,7 +276,7 @@ $(RECURSIVE_TARGETS):
|
|||||||
fi; test -z "$$fail"
|
fi; test -z "$$fail"
|
||||||
|
|
||||||
$(RECURSIVE_CLEAN_TARGETS):
|
$(RECURSIVE_CLEAN_TARGETS):
|
||||||
@failcom='exit 1'; \
|
@fail= failcom='exit 1'; \
|
||||||
for f in x $$MAKEFLAGS; do \
|
for f in x $$MAKEFLAGS; do \
|
||||||
case $$f in \
|
case $$f in \
|
||||||
*=* | --[!k]*);; \
|
*=* | --[!k]*);; \
|
||||||
@ -261,16 +302,16 @@ $(RECURSIVE_CLEAN_TARGETS):
|
|||||||
else \
|
else \
|
||||||
local_target="$$target"; \
|
local_target="$$target"; \
|
||||||
fi; \
|
fi; \
|
||||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||||
|| eval $$failcom; \
|
|| eval $$failcom; \
|
||||||
done && test -z "$$fail"
|
done && test -z "$$fail"
|
||||||
tags-recursive:
|
tags-recursive:
|
||||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||||
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
|
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
|
||||||
done
|
done
|
||||||
ctags-recursive:
|
ctags-recursive:
|
||||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||||
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
|
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
|
||||||
done
|
done
|
||||||
|
|
||||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||||
@ -278,14 +319,14 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
|||||||
unique=`for i in $$list; do \
|
unique=`for i in $$list; do \
|
||||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
done | \
|
done | \
|
||||||
$(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
|
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||||
mkid -fID $$unique
|
mkid -fID $$unique
|
||||||
tags: TAGS
|
tags: TAGS
|
||||||
|
|
||||||
TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||||
$(TAGS_FILES) $(LISP)
|
$(TAGS_FILES) $(LISP)
|
||||||
tags=; \
|
set x; \
|
||||||
here=`pwd`; \
|
here=`pwd`; \
|
||||||
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
|
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
|
||||||
include_option=--etags-include; \
|
include_option=--etags-include; \
|
||||||
@ -297,7 +338,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
|||||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||||
if test "$$subdir" = .; then :; else \
|
if test "$$subdir" = .; then :; else \
|
||||||
test ! -f $$subdir/TAGS || \
|
test ! -f $$subdir/TAGS || \
|
||||||
tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
|
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
|
||||||
fi; \
|
fi; \
|
||||||
done; \
|
done; \
|
||||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
@ -306,29 +347,34 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
|||||||
done | \
|
done | \
|
||||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||||
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
|
shift; \
|
||||||
|
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||||
test -n "$$unique" || unique=$$empty_fix; \
|
test -n "$$unique" || unique=$$empty_fix; \
|
||||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
if test $$# -gt 0; then \
|
||||||
$$tags $$unique; \
|
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||||
|
"$$@" $$unique; \
|
||||||
|
else \
|
||||||
|
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||||
|
$$unique; \
|
||||||
|
fi; \
|
||||||
fi
|
fi
|
||||||
ctags: CTAGS
|
ctags: CTAGS
|
||||||
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||||
$(TAGS_FILES) $(LISP)
|
$(TAGS_FILES) $(LISP)
|
||||||
tags=; \
|
|
||||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
unique=`for i in $$list; do \
|
unique=`for i in $$list; do \
|
||||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
done | \
|
done | \
|
||||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||||
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
test -z "$(CTAGS_ARGS)$$unique" \
|
||||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||||
$$tags $$unique
|
$$unique
|
||||||
|
|
||||||
GTAGS:
|
GTAGS:
|
||||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||||
&& cd $(top_srcdir) \
|
&& $(am__cd) $(top_srcdir) \
|
||||||
&& gtags -i $(GTAGS_ARGS) $$here
|
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||||
|
|
||||||
distclean-tags:
|
distclean-tags:
|
||||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||||
@ -349,29 +395,44 @@ distdir: $(DISTFILES)
|
|||||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||||
if test -d $$d/$$file; then \
|
if test -d $$d/$$file; then \
|
||||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
if test -d "$(distdir)/$$file"; then \
|
||||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||||
fi; \
|
fi; \
|
||||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||||
|
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||||
|
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||||
|
fi; \
|
||||||
|
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||||
else \
|
else \
|
||||||
test -f $(distdir)/$$file \
|
test -f "$(distdir)/$$file" \
|
||||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||||
|| exit 1; \
|
|| exit 1; \
|
||||||
fi; \
|
fi; \
|
||||||
done
|
done
|
||||||
list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||||
if test "$$subdir" = .; then :; else \
|
if test "$$subdir" = .; then :; else \
|
||||||
test -d "$(distdir)/$$subdir" \
|
test -d "$(distdir)/$$subdir" \
|
||||||
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|
||||||
|| exit 1; \
|
|| exit 1; \
|
||||||
distdir=`$(am__cd) $(distdir) && pwd`; \
|
fi; \
|
||||||
top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
|
done
|
||||||
(cd $$subdir && \
|
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||||
|
if test "$$subdir" = .; then :; else \
|
||||||
|
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
|
||||||
|
$(am__relativize); \
|
||||||
|
new_distdir=$$reldir; \
|
||||||
|
dir1=$$subdir; dir2="$(top_distdir)"; \
|
||||||
|
$(am__relativize); \
|
||||||
|
new_top_distdir=$$reldir; \
|
||||||
|
echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
|
||||||
|
echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
|
||||||
|
($(am__cd) $$subdir && \
|
||||||
$(MAKE) $(AM_MAKEFLAGS) \
|
$(MAKE) $(AM_MAKEFLAGS) \
|
||||||
top_distdir="$$top_distdir" \
|
top_distdir="$$new_top_distdir" \
|
||||||
distdir="$$distdir/$$subdir" \
|
distdir="$$new_distdir" \
|
||||||
am__remove_distdir=: \
|
am__remove_distdir=: \
|
||||||
am__skip_length_check=: \
|
am__skip_length_check=: \
|
||||||
|
am__skip_mode_fix=: \
|
||||||
distdir) \
|
distdir) \
|
||||||
|| exit 1; \
|
|| exit 1; \
|
||||||
fi; \
|
fi; \
|
||||||
@ -391,16 +452,22 @@ install-am: all-am
|
|||||||
|
|
||||||
installcheck: installcheck-recursive
|
installcheck: installcheck-recursive
|
||||||
install-strip:
|
install-strip:
|
||||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
if test -z '$(STRIP)'; then \
|
||||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
`test -z '$(STRIP)' || \
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
install; \
|
||||||
|
else \
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
|
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||||
|
fi
|
||||||
mostlyclean-generic:
|
mostlyclean-generic:
|
||||||
|
|
||||||
clean-generic:
|
clean-generic:
|
||||||
|
|
||||||
distclean-generic:
|
distclean-generic:
|
||||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||||
|
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||||
|
|
||||||
maintainer-clean-generic:
|
maintainer-clean-generic:
|
||||||
@echo "This command is intended for maintainers to use"
|
@echo "This command is intended for maintainers to use"
|
||||||
@ -419,6 +486,8 @@ dvi-am:
|
|||||||
|
|
||||||
html: html-recursive
|
html: html-recursive
|
||||||
|
|
||||||
|
html-am:
|
||||||
|
|
||||||
info: info-recursive
|
info: info-recursive
|
||||||
|
|
||||||
info-am:
|
info-am:
|
||||||
@ -427,18 +496,28 @@ install-data-am:
|
|||||||
|
|
||||||
install-dvi: install-dvi-recursive
|
install-dvi: install-dvi-recursive
|
||||||
|
|
||||||
|
install-dvi-am:
|
||||||
|
|
||||||
install-exec-am:
|
install-exec-am:
|
||||||
|
|
||||||
install-html: install-html-recursive
|
install-html: install-html-recursive
|
||||||
|
|
||||||
|
install-html-am:
|
||||||
|
|
||||||
install-info: install-info-recursive
|
install-info: install-info-recursive
|
||||||
|
|
||||||
|
install-info-am:
|
||||||
|
|
||||||
install-man:
|
install-man:
|
||||||
|
|
||||||
install-pdf: install-pdf-recursive
|
install-pdf: install-pdf-recursive
|
||||||
|
|
||||||
|
install-pdf-am:
|
||||||
|
|
||||||
install-ps: install-ps-recursive
|
install-ps: install-ps-recursive
|
||||||
|
|
||||||
|
install-ps-am:
|
||||||
|
|
||||||
installcheck-am:
|
installcheck-am:
|
||||||
|
|
||||||
maintainer-clean: maintainer-clean-recursive
|
maintainer-clean: maintainer-clean-recursive
|
||||||
@ -459,8 +538,8 @@ ps-am:
|
|||||||
|
|
||||||
uninstall-am:
|
uninstall-am:
|
||||||
|
|
||||||
.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
|
.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
|
||||||
install-strip
|
install-am install-strip tags-recursive
|
||||||
|
|
||||||
.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
|
.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
|
||||||
all all-am check check-am clean clean-generic ctags \
|
all all-am check check-am clean clean-generic ctags \
|
||||||
@ -475,6 +554,7 @@ uninstall-am:
|
|||||||
mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \
|
mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \
|
||||||
tags-recursive uninstall uninstall-am
|
tags-recursive uninstall uninstall-am
|
||||||
|
|
||||||
|
|
||||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
.NOEXPORT:
|
.NOEXPORT:
|
||||||
|
@ -1,321 +0,0 @@
|
|||||||
# Makefile.in generated by automake 1.10.1 from Makefile.am.
|
|
||||||
# @configure_input@
|
|
||||||
|
|
||||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
|
||||||
# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
|
|
||||||
# This Makefile.in is free software; the Free Software Foundation
|
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
|
||||||
# with or without modifications, as long as this notice is preserved.
|
|
||||||
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
|
||||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
|
||||||
# PARTICULAR PURPOSE.
|
|
||||||
|
|
||||||
@SET_MAKE@
|
|
||||||
VPATH = @srcdir@
|
|
||||||
pkgdatadir = $(datadir)/@PACKAGE@
|
|
||||||
pkglibdir = $(libdir)/@PACKAGE@
|
|
||||||
pkgincludedir = $(includedir)/@PACKAGE@
|
|
||||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
|
||||||
install_sh_DATA = $(install_sh) -c -m 644
|
|
||||||
install_sh_PROGRAM = $(install_sh) -c
|
|
||||||
install_sh_SCRIPT = $(install_sh) -c
|
|
||||||
INSTALL_HEADER = $(INSTALL_DATA)
|
|
||||||
transform = $(program_transform_name)
|
|
||||||
NORMAL_INSTALL = :
|
|
||||||
PRE_INSTALL = :
|
|
||||||
POST_INSTALL = :
|
|
||||||
NORMAL_UNINSTALL = :
|
|
||||||
PRE_UNINSTALL = :
|
|
||||||
POST_UNINSTALL = :
|
|
||||||
subdir = extra/mips
|
|
||||||
DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
|
||||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
|
||||||
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
|
|
||||||
$(top_srcdir)/configure.ac
|
|
||||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
|
||||||
$(ACLOCAL_M4)
|
|
||||||
mkinstalldirs = $(install_sh) -d
|
|
||||||
CONFIG_HEADER = $(top_builddir)/config.h
|
|
||||||
CONFIG_CLEAN_FILES =
|
|
||||||
SOURCES =
|
|
||||||
DIST_SOURCES =
|
|
||||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
|
||||||
ACLOCAL = @ACLOCAL@
|
|
||||||
AMTAR = @AMTAR@
|
|
||||||
AR = @AR@
|
|
||||||
AUTOCONF = @AUTOCONF@
|
|
||||||
AUTOHEADER = @AUTOHEADER@
|
|
||||||
AUTOMAKE = @AUTOMAKE@
|
|
||||||
AWK = @AWK@
|
|
||||||
CC = @CC@
|
|
||||||
CCDEPMODE = @CCDEPMODE@
|
|
||||||
CFLAGS = @CFLAGS@
|
|
||||||
COMPILER_VERSION = @COMPILER_VERSION@
|
|
||||||
CPP = @CPP@
|
|
||||||
CPPFLAGS = @CPPFLAGS@
|
|
||||||
CXX = @CXX@
|
|
||||||
CXXDEPMODE = @CXXDEPMODE@
|
|
||||||
CXXFLAGS = @CXXFLAGS@
|
|
||||||
CYGPATH_W = @CYGPATH_W@
|
|
||||||
DEFS = @DEFS@
|
|
||||||
DEPDIR = @DEPDIR@
|
|
||||||
ECHO_C = @ECHO_C@
|
|
||||||
ECHO_N = @ECHO_N@
|
|
||||||
ECHO_T = @ECHO_T@
|
|
||||||
EGREP = @EGREP@
|
|
||||||
EXEEXT = @EXEEXT@
|
|
||||||
FRAGMENTS_LIST = @FRAGMENTS_LIST@
|
|
||||||
GREP = @GREP@
|
|
||||||
GZIP = @GZIP@
|
|
||||||
HAVE_DOXYGEN = @HAVE_DOXYGEN@
|
|
||||||
HAVE_MAN2HTML = @HAVE_MAN2HTML@
|
|
||||||
INSTALL = @INSTALL@
|
|
||||||
INSTALL_DATA = @INSTALL_DATA@
|
|
||||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
|
||||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
|
||||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
|
||||||
LDFLAGS = @LDFLAGS@
|
|
||||||
LIBOBJS = @LIBOBJS@
|
|
||||||
LIBS = @LIBS@
|
|
||||||
LTLIBOBJS = @LTLIBOBJS@
|
|
||||||
MAINT = @MAINT@
|
|
||||||
MAKE = @MAKE@
|
|
||||||
MAKEINFO = @MAKEINFO@
|
|
||||||
MKDIR_P = @MKDIR_P@
|
|
||||||
MOC = @MOC@
|
|
||||||
OBJEXT = @OBJEXT@
|
|
||||||
PACKAGE = @PACKAGE@
|
|
||||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
|
||||||
PACKAGE_NAME = @PACKAGE_NAME@
|
|
||||||
PACKAGE_STRING = @PACKAGE_STRING@
|
|
||||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
|
||||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
|
||||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
|
||||||
PKG_CONFIG = @PKG_CONFIG@
|
|
||||||
QT_CFLAGS = @QT_CFLAGS@
|
|
||||||
QT_LIBS = @QT_LIBS@
|
|
||||||
RANLIB = @RANLIB@
|
|
||||||
SET_MAKE = @SET_MAKE@
|
|
||||||
SHELL = @SHELL@
|
|
||||||
SSL_LIBS = @SSL_LIBS@
|
|
||||||
STATIC_END = @STATIC_END@
|
|
||||||
STATIC_START = @STATIC_START@
|
|
||||||
STRIP = @STRIP@
|
|
||||||
VERSION = @VERSION@
|
|
||||||
abs_builddir = @abs_builddir@
|
|
||||||
abs_srcdir = @abs_srcdir@
|
|
||||||
abs_top_builddir = @abs_top_builddir@
|
|
||||||
abs_top_srcdir = @abs_top_srcdir@
|
|
||||||
ac_ct_CC = @ac_ct_CC@
|
|
||||||
ac_ct_CXX = @ac_ct_CXX@
|
|
||||||
am__include = @am__include@
|
|
||||||
am__leading_dot = @am__leading_dot@
|
|
||||||
am__quote = @am__quote@
|
|
||||||
am__tar = @am__tar@
|
|
||||||
am__untar = @am__untar@
|
|
||||||
bindir = @bindir@
|
|
||||||
build_alias = @build_alias@
|
|
||||||
builddir = @builddir@
|
|
||||||
datadir = @datadir@
|
|
||||||
datarootdir = @datarootdir@
|
|
||||||
docdir = @docdir@
|
|
||||||
dvidir = @dvidir@
|
|
||||||
e_docdir = @e_docdir@
|
|
||||||
e_examplesdir = @e_examplesdir@
|
|
||||||
e_initdir = @e_initdir@
|
|
||||||
e_libexecdir = @e_libexecdir@
|
|
||||||
e_qtmoc = @e_qtmoc@
|
|
||||||
e_spooldir = @e_spooldir@
|
|
||||||
e_sysconfdir = @e_sysconfdir@
|
|
||||||
exec_prefix = @exec_prefix@
|
|
||||||
host_alias = @host_alias@
|
|
||||||
htmldir = @htmldir@
|
|
||||||
includedir = @includedir@
|
|
||||||
infodir = @infodir@
|
|
||||||
install_sh = @install_sh@
|
|
||||||
libdir = @libdir@
|
|
||||||
libexecdir = @libexecdir@
|
|
||||||
localedir = @localedir@
|
|
||||||
localstatedir = @localstatedir@
|
|
||||||
mandir = @mandir@
|
|
||||||
mkdir_p = @mkdir_p@
|
|
||||||
oldincludedir = @oldincludedir@
|
|
||||||
pdfdir = @pdfdir@
|
|
||||||
prefix = @prefix@
|
|
||||||
program_transform_name = @program_transform_name@
|
|
||||||
psdir = @psdir@
|
|
||||||
sbindir = @sbindir@
|
|
||||||
sharedstatedir = @sharedstatedir@
|
|
||||||
srcdir = @srcdir@
|
|
||||||
sysconfdir = @sysconfdir@
|
|
||||||
target_alias = @target_alias@
|
|
||||||
top_builddir = @top_builddir@
|
|
||||||
top_srcdir = @top_srcdir@
|
|
||||||
|
|
||||||
#
|
|
||||||
#
|
|
||||||
EXTRA_DIST = toolchain.mak configure-mips.sh_
|
|
||||||
all: all-am
|
|
||||||
|
|
||||||
.SUFFIXES:
|
|
||||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
|
|
||||||
@for dep in $?; do \
|
|
||||||
case '$(am__configure_deps)' in \
|
|
||||||
*$$dep*) \
|
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
|
||||||
&& exit 0; \
|
|
||||||
exit 1;; \
|
|
||||||
esac; \
|
|
||||||
done; \
|
|
||||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu extra/mips/Makefile'; \
|
|
||||||
cd $(top_srcdir) && \
|
|
||||||
$(AUTOMAKE) --gnu extra/mips/Makefile
|
|
||||||
.PRECIOUS: Makefile
|
|
||||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
|
||||||
@case '$?' in \
|
|
||||||
*config.status*) \
|
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
|
||||||
*) \
|
|
||||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
|
||||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
|
||||||
esac;
|
|
||||||
|
|
||||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
|
||||||
|
|
||||||
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
|
||||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
|
||||||
tags: TAGS
|
|
||||||
TAGS:
|
|
||||||
|
|
||||||
ctags: CTAGS
|
|
||||||
CTAGS:
|
|
||||||
|
|
||||||
|
|
||||||
distdir: $(DISTFILES)
|
|
||||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
|
||||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
|
||||||
list='$(DISTFILES)'; \
|
|
||||||
dist_files=`for file in $$list; do echo $$file; done | \
|
|
||||||
sed -e "s|^$$srcdirstrip/||;t" \
|
|
||||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
|
||||||
case $$dist_files in \
|
|
||||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
|
||||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
|
||||||
sort -u` ;; \
|
|
||||||
esac; \
|
|
||||||
for file in $$dist_files; do \
|
|
||||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
|
||||||
if test -d $$d/$$file; then \
|
|
||||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
|
||||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
|
||||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
|
||||||
fi; \
|
|
||||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
|
||||||
else \
|
|
||||||
test -f $(distdir)/$$file \
|
|
||||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
|
||||||
|| exit 1; \
|
|
||||||
fi; \
|
|
||||||
done
|
|
||||||
check-am: all-am
|
|
||||||
check: check-am
|
|
||||||
all-am: Makefile
|
|
||||||
installdirs:
|
|
||||||
install: install-am
|
|
||||||
install-exec: install-exec-am
|
|
||||||
install-data: install-data-am
|
|
||||||
uninstall: uninstall-am
|
|
||||||
|
|
||||||
install-am: all-am
|
|
||||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
|
||||||
|
|
||||||
installcheck: installcheck-am
|
|
||||||
install-strip:
|
|
||||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
|
||||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
|
||||||
`test -z '$(STRIP)' || \
|
|
||||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
|
||||||
mostlyclean-generic:
|
|
||||||
|
|
||||||
clean-generic:
|
|
||||||
|
|
||||||
distclean-generic:
|
|
||||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
|
||||||
|
|
||||||
maintainer-clean-generic:
|
|
||||||
@echo "This command is intended for maintainers to use"
|
|
||||||
@echo "it deletes files that may require special tools to rebuild."
|
|
||||||
clean: clean-am
|
|
||||||
|
|
||||||
clean-am: clean-generic mostlyclean-am
|
|
||||||
|
|
||||||
distclean: distclean-am
|
|
||||||
-rm -f Makefile
|
|
||||||
distclean-am: clean-am distclean-generic
|
|
||||||
|
|
||||||
dvi: dvi-am
|
|
||||||
|
|
||||||
dvi-am:
|
|
||||||
|
|
||||||
html: html-am
|
|
||||||
|
|
||||||
info: info-am
|
|
||||||
|
|
||||||
info-am:
|
|
||||||
|
|
||||||
install-data-am:
|
|
||||||
|
|
||||||
install-dvi: install-dvi-am
|
|
||||||
|
|
||||||
install-exec-am:
|
|
||||||
|
|
||||||
install-html: install-html-am
|
|
||||||
|
|
||||||
install-info: install-info-am
|
|
||||||
|
|
||||||
install-man:
|
|
||||||
|
|
||||||
install-pdf: install-pdf-am
|
|
||||||
|
|
||||||
install-ps: install-ps-am
|
|
||||||
|
|
||||||
installcheck-am:
|
|
||||||
|
|
||||||
maintainer-clean: maintainer-clean-am
|
|
||||||
-rm -f Makefile
|
|
||||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
|
||||||
|
|
||||||
mostlyclean: mostlyclean-am
|
|
||||||
|
|
||||||
mostlyclean-am: mostlyclean-generic
|
|
||||||
|
|
||||||
pdf: pdf-am
|
|
||||||
|
|
||||||
pdf-am:
|
|
||||||
|
|
||||||
ps: ps-am
|
|
||||||
|
|
||||||
ps-am:
|
|
||||||
|
|
||||||
uninstall-am:
|
|
||||||
|
|
||||||
.MAKE: install-am install-strip
|
|
||||||
|
|
||||||
.PHONY: all all-am check check-am clean clean-generic distclean \
|
|
||||||
distclean-generic distdir dvi dvi-am html html-am info info-am \
|
|
||||||
install install-am install-data install-data-am install-dvi \
|
|
||||||
install-dvi-am install-exec install-exec-am install-html \
|
|
||||||
install-html-am install-info install-info-am install-man \
|
|
||||||
install-pdf install-pdf-am install-ps install-ps-am \
|
|
||||||
install-strip installcheck installcheck-am installdirs \
|
|
||||||
maintainer-clean maintainer-clean-generic mostlyclean \
|
|
||||||
mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am
|
|
||||||
|
|
||||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
|
||||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
|
||||||
.NOEXPORT:
|
|
@ -1,24 +0,0 @@
|
|||||||
E-MailRelay MIPS
|
|
||||||
================
|
|
||||||
To help with running E-MailRelay on MIPS-based routers, such as the Buffalo
|
|
||||||
WHR-G54S, a makefile for building a cross-compiler toolchain is provided as
|
|
||||||
"extra/mips/toolchain.mak".
|
|
||||||
|
|
||||||
The shell script "extra/mips/configure-mips.sh" can be used to run the main
|
|
||||||
E-MailRelay "configure" script with all the size optimisations suitable for an
|
|
||||||
embedded target system.
|
|
||||||
|
|
||||||
These build-time size optimisations yield the following approximate savings for
|
|
||||||
the main executable:
|
|
||||||
|
|
||||||
* "--disable-exec" 184k
|
|
||||||
* "--enable-small-config" 121k
|
|
||||||
* "--disable-pop" 121k
|
|
||||||
* "--disable-auth" 109k
|
|
||||||
* "--disable-debug" 67k
|
|
||||||
* "--disable-admin" 63k
|
|
||||||
* "--enable-small-exceptions" 46k
|
|
||||||
* "--enable-small-fragments" 32k
|
|
||||||
* "--disable-proxy" 30k
|
|
||||||
* "--disable-dns" 26k
|
|
||||||
* "--disable-verbose" 15k
|
|
@ -1,185 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# Copyright (C) 2001-2008 Graeme Walker <graeme_walker@users.sourceforge.net>
|
|
||||||
#
|
|
||||||
# This program is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program 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.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
# ===
|
|
||||||
#
|
|
||||||
# configure-mips.sh
|
|
||||||
#
|
|
||||||
# Runs the emailrelay "configure" script for a size-optimised mips build
|
|
||||||
# using uclibc.
|
|
||||||
#
|
|
||||||
# The toolchain is expected to have been built by "extra/mips/toolchain.mak".
|
|
||||||
#
|
|
||||||
# Note that in order to minimise the size of the executable a lot of
|
|
||||||
# functionality is disabled using "--disable-whatever" switches,
|
|
||||||
# and the emailrelay command-line usage is altered.
|
|
||||||
#
|
|
||||||
# usage:
|
|
||||||
# configure-mips.sh [-n] [-d <toolchain-root>] [{enable|disable} ...]
|
|
||||||
# configure-mips.sh [-a|-x]
|
|
||||||
#
|
|
||||||
# eg:
|
|
||||||
#
|
|
||||||
# build the toolchain...
|
|
||||||
# $ cd ~/emailrelay-1.8/extra/mips
|
|
||||||
# $ vi toolchain.mak
|
|
||||||
# $ make -f toolchain.mak
|
|
||||||
#
|
|
||||||
# build emailrelay...
|
|
||||||
# $ mkdir -p ~/emailrelay-1.8/mips
|
|
||||||
# $ cd ~/emailrelay-1.8/mips
|
|
||||||
# $ ../extra/mips/configure-mips.sh
|
|
||||||
# $ make
|
|
||||||
#
|
|
||||||
# install...
|
|
||||||
# $ ../extra/mips/binutils/bin/mipsel-elf-linux-gnu-strip src/main/emailrelay
|
|
||||||
# $ cp src/main/emailrelay ...
|
|
||||||
# $ cp ../extra/mips/uclibc/lib/libuClibc-0.9.27.so ...
|
|
||||||
# $ cp ../extra/mips/uclibc/usr/uClibc++/lib/libuClibc++-0.2.2.so ...
|
|
||||||
#
|
|
||||||
# Consider static linking if no other c++ programs are used
|
|
||||||
# ("configure --enable-static-linking" may work), but note that
|
|
||||||
# some parts of the c runtime library seem to require dynamic
|
|
||||||
# linking; "configure --disable-dns --disable-identity" may
|
|
||||||
# help with this.
|
|
||||||
#
|
|
||||||
# For a smaller c++ runtime library take a look at the script
|
|
||||||
# "uClibc*/extra/libstrip/libstrip".
|
|
||||||
#
|
|
||||||
# Edit the dynamic-linker switch below to match the target environment.
|
|
||||||
#
|
|
||||||
|
|
||||||
# configure the ld.so path on the target system
|
|
||||||
UCLIBC="/lib/ld-uClibc.so.0"
|
|
||||||
|
|
||||||
# parse the command line switches
|
|
||||||
if test "$1" = "-a" -o "$1" = "-x" -o "$1" = "-n" -o "$1" = "-z" ; then sw="$1" ; shift ; fi
|
|
||||||
|
|
||||||
# get the absolute path of the toolchain directory
|
|
||||||
TOOLCHAIN="`dirname $0`"
|
|
||||||
if test "$1" = "-d" ; then shift ; TOOLCHAIN="$1" ; shift ; fi
|
|
||||||
if test ! -d "${TOOLCHAIN}/gcc" -a -d "${HOME}/cross/gcc" ; then TOOLCHAIN="${HOME}/cross" ; fi
|
|
||||||
TOOLCHAIN="`cd $TOOLCHAIN && pwd`"
|
|
||||||
echo `basename $0`: toolchain root: $TOOLCHAIN
|
|
||||||
|
|
||||||
if test "$sw" = "" -o "$sw" = "-n"
|
|
||||||
then
|
|
||||||
|
|
||||||
# prepare enable/disable switches
|
|
||||||
debug=${1-disable}
|
|
||||||
exec=${2-disable}
|
|
||||||
auth=${3-disable}
|
|
||||||
admin=${4-disable}
|
|
||||||
identity=${5-disable}
|
|
||||||
pop=${6-disable}
|
|
||||||
dns=${7-disable}
|
|
||||||
if test "$8" = "enable" ; then a8="disable" ; else a8="enable" ; fi
|
|
||||||
if test "$9" = "enable" ; then a9="disable" ; else a9="enable" ; fi
|
|
||||||
if test "$10" = "enable" ; then a10="disable" ; else a10="enable" ; fi
|
|
||||||
verbose=${11-disable}
|
|
||||||
proxy=${12-disable}
|
|
||||||
small_config=${a8}
|
|
||||||
small_exceptions=${a9}
|
|
||||||
small_fragments=${a10}
|
|
||||||
args="--$debug-debug --$exec-exec --$auth-auth --$admin-admin --$identity-identity --$pop-pop --$dns-dns"
|
|
||||||
args="$args --$a8-small-config --$a9-small-exceptions --$a10-small-fragments --$verbose-verbose --$proxy-proxy"
|
|
||||||
|
|
||||||
# prepare the configure command-line parts
|
|
||||||
cxx="$TOOLCHAIN/uclibc/usr/uClibc++/bin/g++-uc"
|
|
||||||
cc="$TOOLCHAIN/gcc/2/bin/gcc-mips"
|
|
||||||
cppflags="-I$TOOLCHAIN/uclibc/usr/uClibc++/include"
|
|
||||||
cxxflags="-Os"
|
|
||||||
ldflags="-L$TOOLCHAIN/uclibc/usr/uClibc++/lib -Xlinker --dynamic-linker=$UCLIBC -Xlinker -Map -Xlinker /tmp/map"
|
|
||||||
cfg="../configure"
|
|
||||||
args_="--host=mipsel-elf-linux-gnu --enable-fhs --disable-gui --without-glob --without-openssl"
|
|
||||||
args_="$args_ --without-doxygen --without-man2html"
|
|
||||||
|
|
||||||
# run "configure"
|
|
||||||
if test "$sw" = ""
|
|
||||||
then
|
|
||||||
CXX="$cxx" CC="$cc" CPPFLAGS="$cppflags" CXXFLAGS="$cxxflags" LDFLAGS="$ldflags" $cfg $args_ $args
|
|
||||||
else
|
|
||||||
echo -n CXX=\"$cxx\" CC=\"$cc\" CPPFLAGS=\"$cppflags\" CXXFLAGS=\"$cxxflags\" LDFLAGS=\"$ldflags\" " "
|
|
||||||
echo $cfg $args_ $args
|
|
||||||
fi
|
|
||||||
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
# extra stuff for testing ...
|
|
||||||
|
|
||||||
Args()
|
|
||||||
{
|
|
||||||
for i_ in 1 2 3 4 5 6 7 8 9 10 11 12
|
|
||||||
do
|
|
||||||
if test $1 -ge $i_ ; then echo -n "enable " ; else echo -n "disable " ; fi
|
|
||||||
done
|
|
||||||
echo ''
|
|
||||||
}
|
|
||||||
|
|
||||||
if test "$sw" = "-a"
|
|
||||||
then
|
|
||||||
for i in 00 01 02 03 04 05 06 07 08 09 10 11 12
|
|
||||||
do
|
|
||||||
echo `dirname $0`/configure-mips.sh '"$@"' `Args $i` > configure-$i.sh
|
|
||||||
chmod +x configure-$i.sh
|
|
||||||
done
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
Make()
|
|
||||||
{
|
|
||||||
make distclean
|
|
||||||
rm -f src/main/emailrelay
|
|
||||||
./configure-$1.sh
|
|
||||||
grep '#' config.h | sed 's/^/:: /'
|
|
||||||
grep 'echo.*running.*configure' config.status | sed 's/^/++ /'
|
|
||||||
make -j 4
|
|
||||||
$TOOLCHAIN/binutils/bin/mipsel-elf-linux-gnu-strip src/main/emailrelay
|
|
||||||
ls -l src/main/emailrelay | sed 's/^/** /'
|
|
||||||
mv src/main/emailrelay emailrelay-$1
|
|
||||||
( cd src/main && make emailrelay && cp /tmp/map ../../map-$1 )
|
|
||||||
}
|
|
||||||
|
|
||||||
if test "$sw" = "-x"
|
|
||||||
then
|
|
||||||
for i in 00 01 02 03 04 05 06 07 08 09 10 11 12
|
|
||||||
do
|
|
||||||
Make $i > make-$i.out 2>&1
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$sw" = "-z"
|
|
||||||
then
|
|
||||||
perl -e '
|
|
||||||
my %size = () ;
|
|
||||||
for $i ( qw/00 01 02 03 04 05 06 07 08 09 10 11 12/ )
|
|
||||||
{
|
|
||||||
my @part = split( /\s+/ , `ls -l emailrelay-$i` ) ;
|
|
||||||
$size{$i} = $part[4] ;
|
|
||||||
}
|
|
||||||
my @vv = qw/disable-debug disable-exec disable-auth disable-admin disable-identity disable-pop disable-dns enable-small-config enable-small-exceptions enable-small-fragments disable-verbose disable-proxy/ ;
|
|
||||||
my $previous ;
|
|
||||||
for $i ( sort keys %size )
|
|
||||||
{
|
|
||||||
my $n = $size{$i} ;
|
|
||||||
my $k = ( $n - $previous + 500 ) / 1000 ;
|
|
||||||
my $v = $vv[$i-1] ;
|
|
||||||
print "* \"--$v\" " , int($k) ,"k\n" if defined($previous) ;
|
|
||||||
$previous = $n ;
|
|
||||||
}'
|
|
||||||
fi
|
|
||||||
|
|
@ -1,687 +0,0 @@
|
|||||||
#
|
|
||||||
## Copyright (C) 2001-2008 Graeme Walker <graeme_walker@users.sourceforge.net>
|
|
||||||
##
|
|
||||||
## This program is free software: you can redistribute it and/or modify
|
|
||||||
## it under the terms of the GNU General Public License as published by
|
|
||||||
## the Free Software Foundation, either version 3 of the License, or
|
|
||||||
## (at your option) any later version.
|
|
||||||
##
|
|
||||||
## This program 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.
|
|
||||||
##
|
|
||||||
## You should have received a copy of the GNU General Public License
|
|
||||||
## along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# Makefile / toolchain.mak
|
|
||||||
#
|
|
||||||
# A makefile for building a cross-compiling toolchain for little-endian
|
|
||||||
# mips ("mipsel") using:
|
|
||||||
#
|
|
||||||
# * gcc 3.4.6
|
|
||||||
# * linux 2.4.20
|
|
||||||
# * uclibc 0.9.27
|
|
||||||
# * uclibc++ 0.2.2
|
|
||||||
# * binutils 2.18-ubuntu
|
|
||||||
#
|
|
||||||
# These versions of linux and uclibc correspond to those pre-installed
|
|
||||||
# on the Buffalo WHR-G54S router as of late 2007. The version of gcc
|
|
||||||
# is 3.4.6 rather than 3.3.3 because of compiler bugs in the c++
|
|
||||||
# code generation.
|
|
||||||
#
|
|
||||||
# Usage: make -f toolchain.mak
|
|
||||||
#
|
|
||||||
# Note that, unlike other toolchain build scripts, the required source
|
|
||||||
# packages (linux, uclibc, etc) are not downloaded automatically, so
|
|
||||||
# the following package tarballs must be made available under the
|
|
||||||
# 'tar-dir' directory (see below):
|
|
||||||
#
|
|
||||||
# * uClibc-0.9.27.tar.bz2
|
|
||||||
# * uClibc++-0.2.2.tar.bz2
|
|
||||||
# * linux-2.4.20.tar.gz
|
|
||||||
# * binutils_2.18.orig.tar.gz
|
|
||||||
# * gcc-3.4.6.tar.bz2
|
|
||||||
# * gcc-core-3.4.6.tar.bz2
|
|
||||||
# * gcc-g++-3.4.6.tar.bz2
|
|
||||||
#
|
|
||||||
# Uses perl with the MIME::Base64 package to prepare patch files.
|
|
||||||
#
|
|
||||||
# The final cross-compiler ends up in "gcc/2/bin", with a gcc wrapper
|
|
||||||
# script for using uclibc++ in "uclibc/usr/uClibc++/bin".
|
|
||||||
#
|
|
||||||
# In addition to the cross-compiler there are various bits and bobs
|
|
||||||
# which are built to run on the target machine:
|
|
||||||
# * uclibc utilities in "uclibc/*/utils"
|
|
||||||
# * binutils under "binutils/build-for-target"
|
|
||||||
# * simple hello-world test programs in the cwd
|
|
||||||
#
|
|
||||||
# This makefile works by defining the following top-level build tasks:
|
|
||||||
# 1. binutils
|
|
||||||
# 2. linux headers -- simple untar and make config
|
|
||||||
# 3. gcc, pass 1 -- C only, no run-time library
|
|
||||||
# 4. uclibc -- built using gcc-1
|
|
||||||
# 5. gcc, pass 2 -- includes C++ language, refers to uclibc, builds stdlibc++-v3
|
|
||||||
# 6. uclibc++ -- built using gcc-2
|
|
||||||
# 7. test programs
|
|
||||||
#
|
|
||||||
# Top-level directories roughly correspond to the top-level build tasks:
|
|
||||||
# * gcc
|
|
||||||
# + gcc/gcc-x.x.x -- gcc source tree
|
|
||||||
# + gcc/build-1 -- gcc-1 build tree
|
|
||||||
# + gcc/1 -- gcc-1 install root
|
|
||||||
# + gcc/build-2 -- gcc-2 build tree
|
|
||||||
# + gcc/2 -- gcc-2 install root
|
|
||||||
# * uclibc -- uclibc/uclibc++ install root
|
|
||||||
# + uclibc/uClibc-x.x.x -- uclibc source and build tree
|
|
||||||
# + uclibc/uClibc++-x.x.x -- uclibc++ source and build tree
|
|
||||||
# * linux
|
|
||||||
# + linux/linux-x.x.x -- linux source tree
|
|
||||||
# * binutils -- binutils install root
|
|
||||||
# + binutils/binutils-x.x -- binutils source tree
|
|
||||||
# + binutils/build -- binutils build tree
|
|
||||||
#
|
|
||||||
# When a top-level build task completes a "done" file is created in an
|
|
||||||
# appropriate sub-directory. This "done" file is used for makefile
|
|
||||||
# dependencies between the top-level tasks, so "touch"-ing a "done"
|
|
||||||
# file can be used to trigger rebuilding of selected top-level
|
|
||||||
# build tasks.
|
|
||||||
#
|
|
||||||
# A key feature for this build system is that whole directory trees
|
|
||||||
# can be deleted in order to get them and their dependents to rebuild:
|
|
||||||
# if source trees are deleted they will get restored from the tar file,
|
|
||||||
# if build trees are deleted they will get rebuilt from source, if
|
|
||||||
# install trees are deleted they will get reinstalled, etc.
|
|
||||||
#
|
|
||||||
# Deleting directory trees is the preferred way to trigger rebuilds,
|
|
||||||
# but there are also a set of pseudo-targets defined to help with
|
|
||||||
# debugging this makefile.
|
|
||||||
#
|
|
||||||
# Note that "make clean" does not clean the binutils build. This
|
|
||||||
# is because the binutils build is only dependent on native tools
|
|
||||||
# so it tends to be very stable in comparison to the rest of the
|
|
||||||
# toolchain. A "make vclean" can be used to clean up everything,
|
|
||||||
# leaving (roughly speaking) only this makefile.
|
|
||||||
#
|
|
||||||
# Bzipped source tar files for the various packages must be made
|
|
||||||
# available in the directories configured below...
|
|
||||||
#
|
|
||||||
#####
|
|
||||||
# configure these...
|
|
||||||
tar_dir = /usr/share/data/packages
|
|
||||||
binutils_tar_dir = $(tar_dir)/development/binutils
|
|
||||||
gcc_tar_dir = $(tar_dir)/development/gcc
|
|
||||||
uclibc_tar_dir = $(tar_dir)/development/uclibc
|
|
||||||
linux_tar_dir = $(tar_dir)/linux
|
|
||||||
#####
|
|
||||||
|
|
||||||
# define TEE=|tee for more verbosity, but note that the pipe messes up the exit codes
|
|
||||||
TEE:=>
|
|
||||||
TEEE:=2>&1
|
|
||||||
|
|
||||||
# gnu sed, or a wrapper that supports --in-place
|
|
||||||
SED=sed
|
|
||||||
|
|
||||||
mk_root = $(shell pwd)
|
|
||||||
gcc_configure_1 = --program-suffix=-mips --with-gnu-as --with-gnu-ld --with-abi=32
|
|
||||||
gcc_configure_2 = --target=mipsel-elf-linux-gnu
|
|
||||||
gcc_configure_3 = --with-as=$(mk_root)/binutils/mipsel-elf-linux-gnu/bin/as
|
|
||||||
gcc_configure_4 = --with-ld=$(mk_root)/binutils/mipsel-elf-linux-gnu/bin/ld
|
|
||||||
gcc_configure = $(gcc_configure_1) $(gcc_configure_2) $(gcc_configure_3) $(gcc_configure_4)
|
|
||||||
gcc_1_configure = $(gcc_configure) --disable-threads --enable-languages=c --without-headers --with-newlib
|
|
||||||
gcc_2_configure = $(gcc_configure) --enable-languages=c,c++ --enable-sjlj-exceptions --enable-threads=posix --with-sysroot=$(mk_root)/uclibc
|
|
||||||
|
|
||||||
gcc_files = gcc/gcc-3.4.6/README
|
|
||||||
gcc_diff = gcc-3.4.6.diff
|
|
||||||
gcc_patch = gcc/gcc-3.4.6/.gcc_patch.done
|
|
||||||
gcc_1_config = gcc/build-1/Makefile
|
|
||||||
gcc_1_make = gcc/build-1/.gcc_1_make.done
|
|
||||||
gcc_1_install = gcc/1/.gcc_1_install.done
|
|
||||||
gcc_2_config = gcc/build-2/Makefile
|
|
||||||
gcc_2_make = gcc/build-2/.gcc_2_make.done
|
|
||||||
gcc_2_install = gcc/2/.gcc_2_install.done
|
|
||||||
|
|
||||||
binutils_files = binutils/binutils-2.18/README
|
|
||||||
binutils_config = binutils/build/Makefile
|
|
||||||
binutils_make = binutils/build/.binutils_make.done
|
|
||||||
binutils_install = binutils/.binutils_install.done
|
|
||||||
binutils_for_target_config = binutils/build-for-target/Makefile
|
|
||||||
binutils_for_target_make = binutils/build-for-target/.binutils_for_target_make.done
|
|
||||||
|
|
||||||
linux_files = linux/linux-2.4.20/README
|
|
||||||
linux_config = linux/linux-2.4.20/.config
|
|
||||||
|
|
||||||
uclibc_files = uclibc/uClibc-0.9.27/README
|
|
||||||
uclibc_config = uclibc/uClibc-0.9.27/.config
|
|
||||||
uclibc_patch = uclibc/uClibc-0.9.27/.uclibc_patch.done
|
|
||||||
uclibc_make = uclibc/uClibc-0.9.27/.uclibc_make.done
|
|
||||||
uclibc_install = uclibc/.uclibc_install.done
|
|
||||||
uclibc_for_target = uclibc/uClibc-0.9.27/utils/.uclibc_for_target.done
|
|
||||||
|
|
||||||
uclibcpp_files = uclibc/uClibc++-0.2.2/README
|
|
||||||
uclibcpp_patch = uclibc/uClibc++-0.2.2/.uclibcpp_patch.done
|
|
||||||
uclibcpp_config = uclibc/uClibc++-0.2.2/.config
|
|
||||||
uclibcpp_make = uclibc/uClibc++-0.2.2/.uclibcpp_make.done
|
|
||||||
uclibcpp_install = uclibc/.uclibcpp_install.done
|
|
||||||
|
|
||||||
test_c_for_target = test-c
|
|
||||||
test_cpp_for_target = test-c++
|
|
||||||
test_cpp_for_target_static = test-c++-s
|
|
||||||
test_cpp_for_target_uclibcpp = test-c++-u
|
|
||||||
tests = $(test_c_for_target) $(test_cpp_for_target) $(test_cpp_for_target_static) $(test_cpp_for_target_uclibcpp)
|
|
||||||
|
|
||||||
.PHONY: all
|
|
||||||
|
|
||||||
all: $(uclibc_for_target) $(binutils_for_target_make) $(tests) $(uclibcpp_install) configure-mips.sh
|
|
||||||
|
|
||||||
# ==
|
|
||||||
|
|
||||||
$(linux_files):
|
|
||||||
@echo
|
|
||||||
@echo ++ untaring linux
|
|
||||||
@mkdir linux 2>/dev/null || true
|
|
||||||
tar -C linux -xzf $(linux_tar_dir)/linux-2.4.20.tar.gz
|
|
||||||
@rm -f $(linux_config) 2>/dev/null || true
|
|
||||||
@touch $(linux_files)
|
|
||||||
|
|
||||||
$(linux_config): $(linux_files)
|
|
||||||
@echo
|
|
||||||
@echo ++ configuring linux
|
|
||||||
@cd linux/linux-2.4.20 && make oldconfig ARCH=mips $(TEE) ../../linux_config.out $(TEEE)
|
|
||||||
|
|
||||||
# ==
|
|
||||||
|
|
||||||
$(binutils_files):
|
|
||||||
@echo
|
|
||||||
@echo ++ untaring binutils
|
|
||||||
@mkdir binutils 2>/dev/null || true
|
|
||||||
tar -C binutils -xzf $(binutils_tar_dir)/binutils_2.18.orig.tar.gz
|
|
||||||
-zcat $(binutils_tar_dir)/binutils_2.18-0ubuntu3.diff.gz | ( cd binutils/binutils-2.18 && patch -p1 -s )
|
|
||||||
@rm -f $(binutils_config) 2>/dev/null || true
|
|
||||||
@touch $(binutils_files)
|
|
||||||
|
|
||||||
$(binutils_config): $(binutils_files)
|
|
||||||
@echo
|
|
||||||
@echo ++ configuring binutils
|
|
||||||
@if test -d binutils/build ; then : ; else mkdir binutils/build ; fi
|
|
||||||
@cd binutils/build && ../binutils-2.18/configure --prefix=`dirname \`pwd\`` --target=mipsel-elf-linux-gnu $(TEE) ../../binutils_config.out $(TEEE)
|
|
||||||
|
|
||||||
$(binutils_make): $(binutils_config)
|
|
||||||
@echo
|
|
||||||
@echo ++ building binutils
|
|
||||||
@cd binutils/build && make $(TEE) ../../binutils_make.out $(TEEE)
|
|
||||||
@touch $(binutils_make)
|
|
||||||
|
|
||||||
$(binutils_install): $(binutils_make)
|
|
||||||
@echo
|
|
||||||
@echo ++ installing binutils
|
|
||||||
@cd binutils/build && make install $(TEE) ../../binutils_install.out $(TEEE)
|
|
||||||
@touch $(binutils_install)
|
|
||||||
|
|
||||||
$(binutils_for_target_make): $(binutils_make) $(gcc_2_install) $(binutils_for_target_config)
|
|
||||||
@echo
|
|
||||||
@echo ++ building binutils for target
|
|
||||||
@cd binutils/build-for-target && PATH="`dirname \`pwd\``/bin:$$PATH" CC=`dirname \`pwd\``/../gcc/2/bin/gcc-mips make LDFLAGS="-Xlinker --dynamic-linker=/lib/ld-uClibc.so.0" $(TEE) ../../binutils_for_target_make.out $(TEEE)
|
|
||||||
@touch $(binutils_for_target_make)
|
|
||||||
|
|
||||||
$(binutils_for_target_config):
|
|
||||||
@echo
|
|
||||||
@echo ++ configuring binutils for target
|
|
||||||
@if test -d binutils/build-for-target ; then : ; else mkdir binutils/build-for-target ; fi
|
|
||||||
@cd binutils/build-for-target && PATH="`dirname \`pwd\``/bin:$$PATH" CC=`dirname \`pwd\``/../gcc/2/bin/gcc-mips ../binutils-2.18/configure --with-build-time-tools=`dirname \`pwd\``/bin --with-build-sysroot=`dirname \`pwd\``/../uclibc --target=mipsel-elf-linux-gnu --host=mipsel-elf-linux-gnu $(TEE) ../../binutils_for_target_config.out $(TEEE)
|
|
||||||
@$(SED) -e 's/^CFLAGS_FOR_BUILD *=.*/CFLAGS_FOR_BUILD = /' --in-place binutils/build-for-target/Makefile
|
|
||||||
|
|
||||||
# ==
|
|
||||||
|
|
||||||
$(uclibc_files):
|
|
||||||
@echo
|
|
||||||
@echo ++ untaring uclibc
|
|
||||||
@mkdir uclibc 2>/dev/null || true
|
|
||||||
tar -C uclibc -xjf $(uclibc_tar_dir)/uClibc-0.9.27.tar.bz2
|
|
||||||
@touch $(uclibc_files)
|
|
||||||
|
|
||||||
$(uclibc_config): $(uclibc_files) $(linux_config) $(gcc_1_install)
|
|
||||||
@echo
|
|
||||||
@echo ++ configuring uclibc
|
|
||||||
@$(SED) -e 's/\( *\)default TARGET_i386/\1default TARGET_mips/' --in-place=.orig uclibc/uClibc-0.9.27/extra/Configs/Config.in
|
|
||||||
@cd uclibc/uClibc-0.9.27 && make defconfig $(TEE) ../../uclibc_config.out $(TEEE)
|
|
||||||
@$(SED) -e 's:^KERNEL_SOURCE=.*:KERNEL_SOURCE="'"`pwd`/linux/linux-2.4.20"'":' --in-place uclibc/uClibc-0.9.27/.config
|
|
||||||
@$(SED) -e 's:^SHARED_LIB_LOADER_PREFIX=.*:SHARED_LIB_LOADER_PREFIX="'"/lib"'":' --in-place uclibc/uClibc-0.9.27/.config
|
|
||||||
@$(SED) -e 's:^RUNTIME_PREFIX=.*:RUNTIME_PREFIX="'"`pwd`/uclibc"'":' --in-place uclibc/uClibc-0.9.27/.config
|
|
||||||
@$(SED) -e 's:^DEVEL_PREFIX=.*:DEVEL_PREFIX="'"`pwd`/uclibc/usr"'":' --in-place uclibc/uClibc-0.9.27/.config
|
|
||||||
@$(SED) -e 's:^LDSO_BASE_FILENAME=.*:LDSO_BASE_FILENAME="'"ld-uClibc.so"'":' --in-place uclibc/uClibc-0.9.27/.config
|
|
||||||
@$(SED) -e 's:.*CONFIG_MIPS_ISA_MIPS32.*:CONFIG_MIPS_ISA_MIPS32=y:' --in-place uclibc/uClibc-0.9.27/.config
|
|
||||||
@$(SED) -e 's:^CONFIG_MIPS_ISA_1.*:# CONFIG_MIPS_ISA_1 is not set:' --in-place uclibc/uClibc-0.9.27/.config
|
|
||||||
@$(SED) -e 's:.*UCLIBC_HAS_WCHAR.*:UCLIBC_HAS_WCHAR=y:' --in-place uclibc/uClibc-0.9.27/.config
|
|
||||||
@$(SED) -e 's:.*UCLIBC_HAS_LOCALE.*:# UCLIBC_HAS_LOCALE is not set:' --in-place uclibc/uClibc-0.9.27/.config
|
|
||||||
@$(SED) -e 's:.*UCLIBC_HAS_TM_EXTENSIONS.*:# UCLIBC_HAS_TM_EXTENSIONS is not set:' --in-place uclibc/uClibc-0.9.27/.config
|
|
||||||
@$(SED) -e 's:.*UCLIBC_HAS_RPC.*:UCLIBC_HAS_RPC=y\nUCLIBC_HAS_FULL_RPC=y:' --in-place uclibc/uClibc-0.9.27/.config
|
|
||||||
@$(SED) -e 's:.*UCLIBC_HAS_FULL_RPC.*:UCLIBC_HAS_FULL_RPC=y:' --in-place uclibc/uClibc-0.9.27/.config
|
|
||||||
@$(SED) -e 's:.*UCLIBC_HAS_CTYPE_TABLES.*:UCLIBC_HAS_CTYPE_TABLES=y:' --in-place uclibc/uClibc-0.9.27/.config
|
|
||||||
@$(SED) -e 's:.*UCLIBC_HAS_CTYPE_SIGNED.*:# UCLIBC_HAS_CTYPE_SIGNED is not set:' --in-place uclibc/uClibc-0.9.27/.config
|
|
||||||
@$(SED) -e 's:.*UCLIBC_HAS_CTYPE_UNSAFE.*:# UCLIBC_HAS_CTYPE_UNSAFE is not set:' --in-place uclibc/uClibc-0.9.27/.config
|
|
||||||
@$(SED) -e 's:.*UCLIBC_HAS_GLIBC_CUSTOM_PRINTF.*:UCLIBC_HAS_GLIBC_CUSTOM_PRINTF=y:' --in-place uclibc/uClibc-0.9.27/.config
|
|
||||||
@$(SED) -e 's:.*UCLIBC_HAS_HEXADECIMAL_FLOATS.*:# UCLIBC_HAS_HEXADECIMAL_FLOATS is not set:' --in-place uclibc/uClibc-0.9.27/.config
|
|
||||||
@$(SED) -e 's:.*UCLIBC_HAS_GLIBC_CUSTOM_STREAMS.*:UCLIBC_HAS_GLIBC_CUSTOM_STREAMS=y:' --in-place uclibc/uClibc-0.9.27/.config
|
|
||||||
@$(SED) -e 's:.*UNIX98PTY_ONLY.*:# UNIX98PTY_ONLY is not set:' --in-place uclibc/uClibc-0.9.27/.config
|
|
||||||
@$(SED) -e 's:.*UCLIBC_HAS_FTW.*:UCLIBC_HAS_FTW=y:' --in-place uclibc/uClibc-0.9.27/.config
|
|
||||||
@rm uclibc/uClibc-0.9.27/include/bits/uClibc_config.h 2>/dev/null || true
|
|
||||||
|
|
||||||
$(uclibc_patch): $(uclibc_files)
|
|
||||||
@echo
|
|
||||||
@echo ++ patching uclibc
|
|
||||||
@: # no patching required -- it used to add -EL to Rules.mak
|
|
||||||
@touch $(uclibc_patch)
|
|
||||||
|
|
||||||
$(uclibc_make): $(uclibc_config) $(uclibc_patch)
|
|
||||||
@echo
|
|
||||||
@echo ++ building uclibc
|
|
||||||
@cd uclibc/uClibc-0.9.27 && echo PATH=\"`pwd`/../../binutils/bin:$$PATH\" make CROSS=mipsel-elf-linux-gnu- CC=`pwd`/../../gcc/1/bin/gcc-mips \"$$\@\" > make.sh # for convenience
|
|
||||||
@cd uclibc/uClibc-0.9.27 && PATH="`pwd`/../../binutils/bin:$$PATH" make CROSS=mipsel-elf-linux-gnu- CC=`pwd`/../../gcc/1/bin/gcc-mips $(TEE) ../../uclibc_make.out $(TEEE)
|
|
||||||
@touch $(uclibc_make)
|
|
||||||
|
|
||||||
$(uclibc_install): $(uclibc_make)
|
|
||||||
@echo
|
|
||||||
@echo ++ installing uclibc
|
|
||||||
@cd uclibc/uClibc-0.9.27 && PATH="`pwd`/../../binutils/bin:$$PATH" make CROSS=mipsel-elf-linux-gnu- CC=`pwd`/../../gcc/1/bin/gcc-mips install $(TEE) ../../uclibc_install.out $(TEEE)
|
|
||||||
@touch $(uclibc_install)
|
|
||||||
|
|
||||||
$(uclibc_for_target): $(gcc_2_install) $(uclibc_make)
|
|
||||||
@echo
|
|
||||||
@echo ++ building uclibc utils
|
|
||||||
@cd uclibc/uClibc-0.9.27/utils && PATH="`pwd`/../../../binutils/bin:$$PATH" make CROSS=mipsel-elf-linux-gnu- CC=`pwd`/../../../gcc/2/bin/gcc-mips clean > /dev/null
|
|
||||||
@cd uclibc/uClibc-0.9.27/utils && PATH="`pwd`/../../../binutils/bin:$$PATH" make CROSS=mipsel-elf-linux-gnu- CC=`pwd`/../../../gcc/2/bin/gcc-mips CFLAGS="-static" RUNTIME_PREFIX=/ $(TEE) ../../../uclibc_for_target_make.out $(TEEE)
|
|
||||||
@touch $(uclibc_for_target)
|
|
||||||
|
|
||||||
# ==
|
|
||||||
|
|
||||||
$(uclibcpp_files):
|
|
||||||
@echo
|
|
||||||
@echo ++ untaring uclibc++
|
|
||||||
@mkdir uclibc 2>/dev/null || true
|
|
||||||
tar -C uclibc -xjf $(uclibc_tar_dir)/uClibc++-0.2.2.tar.bz2
|
|
||||||
@touch $(uclibcpp_files)
|
|
||||||
|
|
||||||
$(uclibcpp_patch): $(uclibcpp_files)
|
|
||||||
@echo
|
|
||||||
@echo ++ patching uclibc++
|
|
||||||
@: no-op
|
|
||||||
@touch $(uclibcpp_patch)
|
|
||||||
|
|
||||||
$(uclibcpp_config): $(uclibcpp_patch) $(uclibc_config)
|
|
||||||
@echo
|
|
||||||
@echo ++ configuring uclibc++
|
|
||||||
@cd uclibc/uClibc++-0.2.2 && make defconfig $(TEE) ../../uclibcpp_config.out $(TEEE)
|
|
||||||
@$(SED) 's:.*UCLIBCXX_HAS_LONG_DOUBLE.*:# UCLIBCXX_HAS_LONG_DOUBLE is not set:' --in-place uclibc/uClibc++-0.2.2/.config
|
|
||||||
@$(SED) 's:.*UCLIBCXX_HAS_TLS.*:# UCLIBCXX_HAS_TLS is not set:' --in-place uclibc/uClibc++-0.2.2/.config
|
|
||||||
@$(SED) 's:.*UCLIBCXX_HAS_LFS.*:# UCLIBCXX_HAS_LFS is not set:' --in-place uclibc/uClibc++-0.2.2/.config
|
|
||||||
@rm -f uclibc/uClibc++-0.2.2/include/system_configuration.h
|
|
||||||
|
|
||||||
$(uclibcpp_make): $(uclibcpp_config) $(gcc_2_install)
|
|
||||||
@echo
|
|
||||||
@echo ++ building uclibc++
|
|
||||||
@cd uclibc/uClibc++-0.2.2 && echo PATH="$(mk_root)/binutils/bin:$$PATH" make CROSS=mipsel-elf-linux-gnu- CXX=$(mk_root)/gcc/2/bin/g++-mips CC=$(mk_root)/gcc/2/bin/gcc-mips LIBS=\"-lc -Bstatic -ldl_pic\" \"$$\@\" > make.sh
|
|
||||||
@cd uclibc/uClibc++-0.2.2 && PATH="$(mk_root)/binutils/bin:$$PATH" make CROSS=mipsel-elf-linux-gnu- CXX=$(mk_root)/gcc/2/bin/g++-mips CC=$(mk_root)/gcc/2/bin/gcc-mips LIBS="-lc -Bstatic -ldl_pic" $(TEE) ../../uclibcpp_make.out $(TEEE)
|
|
||||||
@touch $(uclibcpp_make)
|
|
||||||
|
|
||||||
$(uclibcpp_install): $(uclibcpp_make) $(uclibc_config)
|
|
||||||
@echo
|
|
||||||
@echo ++ installing uclibc++
|
|
||||||
@cd uclibc/uClibc++-0.2.2 && PATH="`pwd`/../../binutils/bin:$$PATH" make CROSS=mipsel-elf-linux-gnu- CC=`pwd`/../../gcc/2/bin/gcc-mips DESTDIR=$(mk_root)/uclibc install $(TEE) ../../uclibcpp_install.out $(TEEE)
|
|
||||||
@touch $(uclibcpp_install)
|
|
||||||
|
|
||||||
# ==
|
|
||||||
|
|
||||||
$(gcc_files):
|
|
||||||
@echo
|
|
||||||
@echo ++ untaring gcc
|
|
||||||
@mkdir gcc 2>/dev/null || true
|
|
||||||
tar -C gcc -xjf $(gcc_tar_dir)/gcc-3.4.6.tar.bz2
|
|
||||||
tar -C gcc -xjf $(gcc_tar_dir)/gcc-core-3.4.6.tar.bz2
|
|
||||||
tar -C gcc -xjf $(gcc_tar_dir)/gcc-g++-3.4.6.tar.bz2
|
|
||||||
@touch $(gcc_files)
|
|
||||||
|
|
||||||
$(gcc_patch): $(gcc_files) $(gcc_diff)
|
|
||||||
@echo
|
|
||||||
@echo ++ patching gcc
|
|
||||||
@f=`echo gcc-3.4.6|tr -d .`.diff ; if test -f $$f ; then cat $$f | ( cd gcc/gcc-3.4.6 && patch -p1 -N -s ) ; fi
|
|
||||||
@touch $(gcc_patch)
|
|
||||||
|
|
||||||
$(gcc_1_config): $(gcc_patch) $(binutils_install)
|
|
||||||
@echo
|
|
||||||
@echo ++ configuring gcc 1
|
|
||||||
@if test -d gcc/build-1 ; then : ; else mkdir gcc/build-1 ; fi
|
|
||||||
@echo configure --prefix=$(mk_root)/gcc/1 $(gcc_1_configure)
|
|
||||||
@cd gcc/build-1 && ../gcc-3.4.6/configure --prefix=$(mk_root)/gcc/1 $(gcc_1_configure) $(TEE) ../../gcc_1_config.out $(TEEE)
|
|
||||||
|
|
||||||
$(gcc_1_make): $(gcc_1_config)
|
|
||||||
@echo
|
|
||||||
@echo ++ building gcc 1
|
|
||||||
@for f in binutils/mips*/bin/* ; do ( cd gcc/build-1 && ln -fs ../../$$f `basename $$f`-mips ) ; done
|
|
||||||
@mkdir -p gcc/build-1/gcc
|
|
||||||
@touch gcc/build-1/gcc/crti.o
|
|
||||||
@touch gcc/build-1/gcc/crtn.o
|
|
||||||
@touch gcc/build-1/gcc/libc.a
|
|
||||||
@cd gcc/build-1 && PATH="`pwd`:$$PATH" make $(TEE) ../../gcc_1_make.out $(TEEE)
|
|
||||||
@touch $(gcc_1_make)
|
|
||||||
|
|
||||||
$(gcc_1_install): $(gcc_1_make)
|
|
||||||
@echo
|
|
||||||
@echo ++ installing gcc 1
|
|
||||||
@cd gcc/build-1 && PATH="`pwd`:$$PATH" make install $(TEE) ../../gcc_1_install.out $(TEEE)
|
|
||||||
@if test -f gcc/1/bin/mipsel-elf-linux-gnu-gcc -a ! -h gcc/1/bin/gcc-mips ; then ( cd gcc/1/bin && ln -s mipsel-elf-linux-gnu-gcc gcc-mips ) ; fi # for gcc-3.3.x
|
|
||||||
@touch $(gcc_1_install)
|
|
||||||
|
|
||||||
$(gcc_2_config): $(gcc_1_install) $(uclibc_install)
|
|
||||||
@echo
|
|
||||||
@echo ++ configuring gcc 2
|
|
||||||
@if test -d gcc/build-2 ; then : ; else mkdir gcc/build-2 ; fi
|
|
||||||
@echo configure --prefix=$(mk_root)/gcc/2 $(gcc_2_configure)
|
|
||||||
@cd gcc/build-2 && CXXFLAGS=-g ../gcc-3.4.6/configure --prefix=$(mk_root)/gcc/2 $(gcc_2_configure) $(TEE) ../../gcc_2_config.out $(TEEE)
|
|
||||||
|
|
||||||
$(gcc_2_make): $(gcc_2_config)
|
|
||||||
@echo
|
|
||||||
@echo ++ building gcc 2
|
|
||||||
@for f in binutils/mips*/bin/* ; do ( cd gcc/build-2 && ln -fs ../../$$f `basename $$f`-mips ) ; done
|
|
||||||
@cd gcc/build-2 && PATH="`pwd`:$$PATH" make $(TEE) ../../gcc_2_make.out $(TEEE)
|
|
||||||
@touch $(gcc_2_make)
|
|
||||||
|
|
||||||
$(gcc_2_install): $(gcc_2_make)
|
|
||||||
@echo
|
|
||||||
@echo ++ installing gcc 2
|
|
||||||
@cd gcc/build-2 && PATH="`pwd`:$$PATH" make install $(TEE) ../../gcc_2_install.out $(TEEE)
|
|
||||||
@if test -f gcc/2/bin/mipsel-elf-linux-gnu-gcc -a ! -h gcc/2/bin/gcc-mips ; then ( cd gcc/2/bin && ln -s mipsel-elf-linux-gnu-gcc gcc-mips ) ; fi # for gcc-3.3.x
|
|
||||||
@if test -f gcc/2/bin/mipsel-elf-linux-gnu-g++ -a ! -h gcc/2/bin/g++-mips ; then ( cd gcc/2/bin && ln -s mipsel-elf-linux-gnu-g++ g++-mips ) ; fi # for gcc-3.3.x
|
|
||||||
@touch $(gcc_2_install)
|
|
||||||
|
|
||||||
$(gcc_diff): gcc-334.diff gcc-343.diff gcc-336.diff gcc-346.diff
|
|
||||||
@cp `echo gcc-3.4.6 | tr -d .`.diff $(gcc_diff)
|
|
||||||
|
|
||||||
gcc-334.diff.tmp:
|
|
||||||
@:
|
|
||||||
@: # magic patch to mips/linux.h
|
|
||||||
@:
|
|
||||||
@echo ZGlmZiAtTmF1ciBvbGQvZ2NjL2NvbmZpZy9taXBzL2xpbnV4LmggbmV3L2djYy9jb25maWcvbWlw > $@
|
|
||||||
@echo cy9saW51eC5oCg== >> $@
|
|
||||||
@echo LS0tIG9sZC9nY2MvY29uZmlnL21pcHMvbGludXguaAkyMDA3LTExLTI5IDE0OjUyOjI1LjAwMDAw >> $@
|
|
||||||
@echo MDAwMCArMDAwMAo= >> $@
|
|
||||||
@echo KysrIG5ldy9nY2MvY29uZmlnL21pcHMvbGludXguaAkyMDA3LTExLTI5IDE0OjU0OjI5LjAwMDAw >> $@
|
|
||||||
@echo MDAwMCArMDAwMAo= >> $@
|
|
||||||
@echo QEAgLTIzOCwxMCArMjM4LDggQEAK >> $@
|
|
||||||
@echo ICAgIHBzZXVkby1vcHMuICAqLwo= >> $@
|
|
||||||
@echo ICNkZWZpbmUgRlVOQ1RJT05fTkFNRV9BTFJFQURZX0RFQ0xBUkVECg== >> $@
|
|
||||||
@echo IAo= >> $@
|
|
||||||
@echo LSNkZWZpbmUgQVNNX1BSRUZFUlJFRF9FSF9EQVRBX0ZPUk1BVChDT0RFLCBHTE9CQUwpICAgICAg >> $@
|
|
||||||
@echo IAkJXAo= >> $@
|
|
||||||
@echo LSAgKGZsYWdfcGljCQkJCQkJCQlcCg== >> $@
|
|
||||||
@echo LSAgICA/ICgoR0xPQkFMKSA/IERXX0VIX1BFX2luZGlyZWN0IDogMCkgfCBEV19FSF9QRV9wY3Jl >> $@
|
|
||||||
@echo bCB8IERXX0VIX1BFX3NkYXRhNFwK >> $@
|
|
||||||
@echo LSAgIDogRFdfRUhfUEVfYWJzcHRyKQo= >> $@
|
|
||||||
@echo Ky8qIGdodyBHSFcgaHR0cDovL2djYy5nbnUub3JnL21sL2djYy1wYXRjaGVzLzIwMDQtMDYvbXNn >> $@
|
|
||||||
@echo MDA5NzAuaHRtbCAqLwo= >> $@
|
|
||||||
@echo KyNkZWZpbmUgQVNNX1BSRUZFUlJFRF9FSF9EQVRBX0ZPUk1BVChDT0RFLCBHTE9CQUwpIERXX0VI >> $@
|
|
||||||
@echo X1BFX2Fic3B0cgo= >> $@
|
|
||||||
@echo IAo= >> $@
|
|
||||||
@echo IC8qIFRoZSBnbGliYyBfbWNvdW50IHN0dWIgd2lsbCBzYXZlICR2MCBmb3IgdXMuICBEb24ndCBt >> $@
|
|
||||||
@echo ZXNzIHdpdGggc2F2aW5nCg== >> $@
|
|
||||||
@echo ICAgIGl0LCBzaW5jZSBBU01fT1VUUFVUX1JFR19QVVNIL0FTTV9PVVRQVVRfUkVHX1BPUCBkbyBu >> $@
|
|
||||||
@echo b3Qgd29yayBpbiB0aGUK >> $@
|
|
||||||
@:
|
|
||||||
@: # ctype map data-type patch for c++
|
|
||||||
@:
|
|
||||||
@echo ZGlmZiAtTmF1ciBvbGQvbGlic3RkYysrLXYzL2NvbmZpZy9vcy9nbnUtbGludXgvY3R5cGVfYmFz >> $@
|
|
||||||
@echo ZS5oIG5ldy9saWJzdGRjKystdjMvY29uZmlnL29zL2dudS1saW51eC9jdHlwZV9iYXNlLmgK >> $@
|
|
||||||
@echo LS0tIG9sZC9saWJzdGRjKystdjMvY29uZmlnL29zL2dudS1saW51eC9jdHlwZV9iYXNlLmgJMjAw >> $@
|
|
||||||
@echo Ny0xMi0wNyAxMzo1OTo1Mi4wMDAwMDAwMDAgKzAwMDAK >> $@
|
|
||||||
@echo KysrIG5ldy9saWJzdGRjKystdjMvY29uZmlnL29zL2dudS1saW51eC9jdHlwZV9iYXNlLmgJMjAw >> $@
|
|
||||||
@echo Ny0xMi0wNyAxNDowMDoyNC4wMDAwMDAwMDAgKzAwMDAK >> $@
|
|
||||||
@echo QEAgLTM2LDcgKzM2LDcgQEAK >> $@
|
|
||||||
@echo ICAgc3RydWN0IGN0eXBlX2Jhc2UK >> $@
|
|
||||||
@echo ICAgewo= >> $@
|
|
||||||
@echo ICAgICAvLyBOb24tc3RhbmRhcmQgdHlwZWRlZnMuCg== >> $@
|
|
||||||
@echo LSAgICB0eXBlZGVmIGNvbnN0IGludCogCQlfX3RvX3R5cGU7Cg== >> $@
|
|
||||||
@echo KyAgICB0eXBlZGVmIGNvbnN0IF9fY3R5cGVfdG91cGxvd190KiAJCV9fdG9fdHlwZTsK >> $@
|
|
||||||
@echo IAo= >> $@
|
|
||||||
@echo ICAgICAvLyBOQjogT2Zmc2V0cyBpbnRvIGN0eXBlPGNoYXI+OjpfTV90YWJsZSBmb3JjZSBhIHBh >> $@
|
|
||||||
@echo cnRpY3VsYXIgc2l6ZQo= >> $@
|
|
||||||
@echo ICAgICAvLyBvbiB0aGUgbWFzayB0eXBlLiBCZWNhdXNlIG9mIHRoaXMsIHdlIGRvbid0IHVzZSBh >> $@
|
|
||||||
@echo biBlbnVtLgo= >> $@
|
|
||||||
|
|
||||||
gcc-334.diff: gcc-334.diff.tmp
|
|
||||||
@perl -e 'use MIME::Base64;while(<>){print MIME::Base64::decode_base64($$_)}'< $< >.tmp && mv .tmp $@
|
|
||||||
|
|
||||||
gcc-343.diff: gcc-343.diff.tmp
|
|
||||||
@perl -e 'use MIME::Base64;while(<>){print MIME::Base64::decode_base64($$_)}'< $< >.tmp && mv .tmp $@
|
|
||||||
|
|
||||||
gcc-343.diff.tmp:
|
|
||||||
@:
|
|
||||||
@: # ctype map data-type patch for c++
|
|
||||||
@:
|
|
||||||
@echo ZGlmZiAtTmF1ciBvbGQvbGlic3RkYysrLXYzL2NvbmZpZy9vcy9nbnUtbGludXgvY3R5cGVfYmFz > $@
|
|
||||||
@echo ZS5oIG5ldy9saWJzdGRjKystdjMvY29uZmlnL29zL2dudS1saW51eC9jdHlwZV9iYXNlLmgK >> $@
|
|
||||||
@echo LS0tIG9sZC9saWJzdGRjKystdjMvY29uZmlnL29zL2dudS1saW51eC9jdHlwZV9iYXNlLmgJMjAw >> $@
|
|
||||||
@echo Ny0xMi0wMyAxNjoyNzowMy4wMDAwMDAwMDAgKzAwMDAK >> $@
|
|
||||||
@echo KysrIG5ldy9saWJzdGRjKystdjMvY29uZmlnL29zL2dudS1saW51eC9jdHlwZV9iYXNlLmgJMjAw >> $@
|
|
||||||
@echo Ny0xMi0wMyAxNjoyODowMS4wMDAwMDAwMDAgKzAwMDAK >> $@
|
|
||||||
@echo QEAgLTM3LDcgKzM3LDcgQEAK >> $@
|
|
||||||
@echo ICAgc3RydWN0IGN0eXBlX2Jhc2UK >> $@
|
|
||||||
@echo ICAgewo= >> $@
|
|
||||||
@echo ICAgICAvLyBOb24tc3RhbmRhcmQgdHlwZWRlZnMuCg== >> $@
|
|
||||||
@echo LSAgICB0eXBlZGVmIGNvbnN0IGludCogCQlfX3RvX3R5cGU7Cg== >> $@
|
|
||||||
@echo KyAgICB0eXBlZGVmIGNvbnN0IF9fY3R5cGVfdG91cGxvd190KiAJCV9fdG9fdHlwZTsK >> $@
|
|
||||||
@echo IAo= >> $@
|
|
||||||
@echo ICAgICAvLyBOQjogT2Zmc2V0cyBpbnRvIGN0eXBlPGNoYXI+OjpfTV90YWJsZSBmb3JjZSBhIHBh >> $@
|
|
||||||
@echo cnRpY3VsYXIgc2l6ZQo= >> $@
|
|
||||||
@echo ICAgICAvLyBvbiB0aGUgbWFzayB0eXBlLiBCZWNhdXNlIG9mIHRoaXMsIHdlIGRvbid0IHVzZSBh >> $@
|
|
||||||
@echo biBlbnVtLgo= >> $@
|
|
||||||
|
|
||||||
gcc-336.diff: gcc-334.diff
|
|
||||||
@cp $< $@
|
|
||||||
|
|
||||||
gcc-346.diff: gcc-346.diff.tmp
|
|
||||||
@perl -e 'use MIME::Base64;while(<>){print MIME::Base64::decode_base64($$_)}'< $< >.tmp && mv .tmp $@
|
|
||||||
|
|
||||||
gcc-346.diff.tmp:
|
|
||||||
@:
|
|
||||||
@: # ctype map data-type patch for c++
|
|
||||||
@:
|
|
||||||
@echo ZGlmZiAtTmF1ciBvbGQvbGlic3RkYysrLXYzL2NvbmZpZy9vcy9nbnUtbGludXgvY3R5cGVfYmFz > $@
|
|
||||||
@echo ZS5oIG5ldy9saWJzdGRjKystdjMvY29uZmlnL29zL2dudS1saW51eC9jdHlwZV9iYXNlLmgK >> $@
|
|
||||||
@echo LS0tIG9sZC9saWJzdGRjKystdjMvY29uZmlnL29zL2dudS1saW51eC9jdHlwZV9iYXNlLmgJMjAw >> $@
|
|
||||||
@echo Ny0xMi0wMyAxNjoyNzowMy4wMDAwMDAwMDAgKzAwMDAK >> $@
|
|
||||||
@echo KysrIG5ldy9saWJzdGRjKystdjMvY29uZmlnL29zL2dudS1saW51eC9jdHlwZV9iYXNlLmgJMjAw >> $@
|
|
||||||
@echo Ny0xMi0wMyAxNjoyODowMS4wMDAwMDAwMDAgKzAwMDAK >> $@
|
|
||||||
@echo QEAgLTM3LDcgKzM3LDcgQEAK >> $@
|
|
||||||
@echo ICAgc3RydWN0IGN0eXBlX2Jhc2UK >> $@
|
|
||||||
@echo ICAgewo= >> $@
|
|
||||||
@echo ICAgICAvLyBOb24tc3RhbmRhcmQgdHlwZWRlZnMuCg== >> $@
|
|
||||||
@echo LSAgICB0eXBlZGVmIGNvbnN0IGludCogCQlfX3RvX3R5cGU7Cg== >> $@
|
|
||||||
@echo KyAgICB0eXBlZGVmIGNvbnN0IF9fY3R5cGVfdG91cGxvd190KiAJCV9fdG9fdHlwZTsK >> $@
|
|
||||||
@echo IAo= >> $@
|
|
||||||
@echo ICAgICAvLyBOQjogT2Zmc2V0cyBpbnRvIGN0eXBlPGNoYXI+OjpfTV90YWJsZSBmb3JjZSBhIHBh >> $@
|
|
||||||
@echo cnRpY3VsYXIgc2l6ZQo= >> $@
|
|
||||||
@echo ICAgICAvLyBvbiB0aGUgbWFzayB0eXBlLiBCZWNhdXNlIG9mIHRoaXMsIHdlIGRvbid0IHVzZSBh >> $@
|
|
||||||
@echo biBlbnVtLgo= >> $@
|
|
||||||
@:
|
|
||||||
@: # hack in an implementation of finitef
|
|
||||||
@:
|
|
||||||
@echo ZGlmZiAtTmF1ciBvbGQvbGlic3RkYysrLXYzL3NyYy9jdHlwZS5jYyBuZXcvbGlic3RkYysrLXYz >> $@
|
|
||||||
@echo L3NyYy9jdHlwZS5jYwo= >> $@
|
|
||||||
@echo LS0tIG9sZC9saWJzdGRjKystdjMvc3JjL2N0eXBlLmNjCTIwMDctMTItMTAgMTM6NTA6NDAuMDAw >> $@
|
|
||||||
@echo MDAwMDAwICswMDAwCg== >> $@
|
|
||||||
@echo KysrIG5ldy9saWJzdGRjKystdjMvc3JjL2N0eXBlLmNjCTIwMDctMTItMTAgMTM6NDg6MjUuMDAw >> $@
|
|
||||||
@echo MDAwMDAwICswMDAwCg== >> $@
|
|
||||||
@echo QEAgLTExMiwzICsxMTIsNCBAQAo= >> $@
|
|
||||||
@echo ICNlbmRpZgo= >> $@
|
|
||||||
@echo IH0gLy8gbmFtZXNwYWNlIHN0ZAo= >> $@
|
|
||||||
@echo IAo= >> $@
|
|
||||||
@echo K2V4dGVybiAiQyIgaW50IGZpbml0ZWYoZmxvYXQgeCkgeyB1bmlvbiB7dV9pbnQzMl90IGx2YWw7 >> $@
|
|
||||||
@echo ZmxvYXQgZnZhbDt9IHo7ei5mdmFsPXg7cmV0dXJuICgoei5sdmFsJjB4N2Y4MDAwMDApIT0weDdm >> $@
|
|
||||||
@echo ODAwMDAwKTt9IC8qIGdodyBHSFcgKi8K >> $@
|
|
||||||
|
|
||||||
# ==
|
|
||||||
|
|
||||||
test.c:
|
|
||||||
@echo '#include <stdio.h>' > $@
|
|
||||||
@echo 'int main() { printf("Hello, world!\\n") ; return 0 ; }' >> $@
|
|
||||||
|
|
||||||
test.cpp:
|
|
||||||
@echo '#include <iostream>' > $@
|
|
||||||
@echo 'int main() { std::cout << "Hello, world!" << std::endl ; return 0 ; }' >> $@
|
|
||||||
|
|
||||||
$(test_c_for_target): test.c $(gcc_2_install)
|
|
||||||
@echo
|
|
||||||
@echo ++ testing c
|
|
||||||
gcc/2/bin/gcc-mips -Xlinker --dynamic-linker=/lib/ld-uClibc.so.0 -o $@ test.c -lm
|
|
||||||
|
|
||||||
$(test_cpp_for_target): test.cpp $(gcc_2_install)
|
|
||||||
@echo
|
|
||||||
@echo ++ testing c++
|
|
||||||
gcc/2/bin/g++-mips -Xlinker --dynamic-linker=/lib/ld-uClibc.so.0 -o $@ test.cpp -lgcc_s -ldl_pic
|
|
||||||
|
|
||||||
$(test_cpp_for_target_static): test.cpp $(gcc_2_install)
|
|
||||||
@echo
|
|
||||||
@echo ++ testing c++ all-static
|
|
||||||
gcc/build-2/mipsel-elf-linux-gnu/libstdc++-v3/libtool --quiet --tag=CXX --mode=link gcc/2/bin/g++-mips -all-static -Xlinker --dynamic-linker=/lib/ld-uClibc.so.0 -o $@ test.cpp -lgcc_eh -ldl
|
|
||||||
|
|
||||||
$(test_cpp_for_target_uclibcpp): test.cpp $(uclibcpp_install)
|
|
||||||
@echo
|
|
||||||
@echo ++ testing uclibc++
|
|
||||||
uclibc/usr/uClibc++/bin/g++-uc -Xlinker --dynamic-linker=/lib/ld-uClibc.so.0 -Iuclibc/usr/uClibc++/include -Luclibc/usr/uClibc++/lib -o $@ test.cpp
|
|
||||||
|
|
||||||
configure-mips.sh:
|
|
||||||
@test -f configure-mips.sh_ && cp configure-mips.sh_ $@ && chmod +x $@ || true
|
|
||||||
|
|
||||||
# ==
|
|
||||||
|
|
||||||
.PHONY: vclean
|
|
||||||
|
|
||||||
vclean: clean clean_binutils
|
|
||||||
@rm -f *.out
|
|
||||||
@rm -f *.tmp
|
|
||||||
|
|
||||||
.PHONY: clean_binutils
|
|
||||||
|
|
||||||
clean_binutils:
|
|
||||||
@rm $(binutils_make) 2>/dev/null || true
|
|
||||||
@rm $(binutils_install) 2>/dev/null || true
|
|
||||||
@rm $(binutils_for_target_make) 2>/dev/null || true
|
|
||||||
@rm -rf binutils/binutils-2.18
|
|
||||||
@rm -rf binutils/build
|
|
||||||
@rm -rf binutils/bin binutils/info binutils/lib binutils/man binutils/mips*-elf-linux-gnu binutils/share
|
|
||||||
@rm -rf binutils/build-for-target
|
|
||||||
@if test -d binutils ; then rmdir binutils ; fi
|
|
||||||
|
|
||||||
.PHONY: clean
|
|
||||||
|
|
||||||
clean:
|
|
||||||
@rm $(gcc_1_make) 2>/dev/null || true
|
|
||||||
@rm $(gcc_1_install) 2>/dev/null || true
|
|
||||||
@rm $(gcc_2_make) 2>/dev/null || true
|
|
||||||
@rm $(gcc_2_install) 2>/dev/null || true
|
|
||||||
@rm $(uclibc_patch) 2>/dev/null || true
|
|
||||||
@rm $(uclibc_make) 2>/dev/null || true
|
|
||||||
@rm $(uclibc_install) 2>/dev/null || true
|
|
||||||
@rm $(uclibcpp_install) 2>/dev/null || true
|
|
||||||
@rm $(uclibc_for_target) 2>/dev/null || true
|
|
||||||
@rm -rf linux/linux-2.4.20
|
|
||||||
@rm -rf uclibc/uClibc-0.9.27
|
|
||||||
@rm -rf uclibc/uClibc++-0.2.2
|
|
||||||
@rm -rf uclibc/lib uclibc/usr uclibc/sbin
|
|
||||||
@rm -rf gcc/gcc-3.*
|
|
||||||
@rm -rf gcc/build-1
|
|
||||||
@rm -rf gcc/build-2
|
|
||||||
@rm -rf gcc/1
|
|
||||||
@rm -rf gcc/2
|
|
||||||
@rm -f gcc*.diff
|
|
||||||
@rm -f *diff.tmp
|
|
||||||
@if test -d linux ; then rmdir linux ; fi
|
|
||||||
@if test -d uclibc ; then rmdir uclibc ; fi
|
|
||||||
@if test -d gcc ; then rmdir gcc ; fi
|
|
||||||
|
|
||||||
.PHONY: done
|
|
||||||
|
|
||||||
done:
|
|
||||||
touch $(linux_files) || true
|
|
||||||
touch $(linux_config) || true
|
|
||||||
touch $(gcc_files) || true
|
|
||||||
touch $(gcc_diff) || true
|
|
||||||
touch $(gcc_patch) || true
|
|
||||||
touch $(gcc_1_config) || true
|
|
||||||
touch $(gcc_1_make) || true
|
|
||||||
touch $(gcc_1_install) || true
|
|
||||||
touch $(binutils_files) || true
|
|
||||||
touch $(binutils_config) || true
|
|
||||||
touch $(binutils_make) || true
|
|
||||||
touch $(binutils_install) || true
|
|
||||||
touch $(uclibc_files) || true
|
|
||||||
touch $(uclibc_config) || true
|
|
||||||
touch $(uclibc_patch) || true
|
|
||||||
touch $(uclibc_make) || true
|
|
||||||
touch $(uclibc_install) || true
|
|
||||||
touch $(gcc_2_config) || true
|
|
||||||
touch $(gcc_2_make) || true
|
|
||||||
touch $(gcc_2_install) || true
|
|
||||||
touch $(binutils_for_target_config) || true
|
|
||||||
touch $(binutils_for_target_make) || true
|
|
||||||
touch $(uclibc_for_target) || true
|
|
||||||
|
|
||||||
.PHONY: gcc_files
|
|
||||||
.PHONY: gcc_diff
|
|
||||||
.PHONY: gcc_patch
|
|
||||||
.PHONY: gcc_1_config
|
|
||||||
.PHONY: gcc_1_make
|
|
||||||
.PHONY: gcc_1_install
|
|
||||||
.PHONY: gcc_2_config
|
|
||||||
.PHONY: gcc_2_make
|
|
||||||
.PHONY: gcc_2_install
|
|
||||||
.PHONY: binutils_files
|
|
||||||
.PHONY: binutils_config
|
|
||||||
.PHONY: binutils_make
|
|
||||||
.PHONY: binutils_install
|
|
||||||
.PHONY: binutils_for_target_config
|
|
||||||
.PHONY: binutils_for_target_make
|
|
||||||
.PHONY: linux_files
|
|
||||||
.PHONY: linux_config
|
|
||||||
.PHONY: uclibc_files
|
|
||||||
.PHONY: uclibc_config
|
|
||||||
.PHONY: uclibc_patch
|
|
||||||
.PHONY: uclibc_make
|
|
||||||
.PHONY: uclibc_install
|
|
||||||
.PHONY: uclibc_for_target
|
|
||||||
.PHONY: uclibcpp_files
|
|
||||||
.PHONY: uclibcpp_patch
|
|
||||||
.PHONY: uclibcpp_config
|
|
||||||
.PHONY: uclibcpp_make
|
|
||||||
.PHONY: uclibcpp_install
|
|
||||||
|
|
||||||
gcc_files: $(gcc_files)
|
|
||||||
gcc_diff: $(gcc_diff)
|
|
||||||
gcc_patch: $(gcc_patch)
|
|
||||||
gcc_1_config: $(gcc_1_config)
|
|
||||||
gcc_1_make: $(gcc_1_make)
|
|
||||||
gcc_1_install: $(gcc_1_install)
|
|
||||||
gcc_2_config: $(gcc_2_config)
|
|
||||||
gcc_2_make: $(gcc_2_make)
|
|
||||||
gcc_2_install: $(gcc_2_install)
|
|
||||||
binutils_files: $(binutils_files)
|
|
||||||
binutils_config: $(binutils_config)
|
|
||||||
binutils_make: $(binutils_make)
|
|
||||||
binutils_install: $(binutils_install)
|
|
||||||
binutils_for_target_config: $(binutils_for_target_config)
|
|
||||||
binutils_for_target_make: $(binutils_for_target_make)
|
|
||||||
linux_files: $(linux_files)
|
|
||||||
linux_config: $(linux_config)
|
|
||||||
uclibc_files: $(uclibc_files)
|
|
||||||
uclibc_config: $(uclibc_config)
|
|
||||||
uclibc_patch: $(uclibc_patch)
|
|
||||||
uclibc_make: $(uclibc_make)
|
|
||||||
uclibc_install: $(uclibc_install)
|
|
||||||
uclibc_for_target: $(uclibc_for_target)
|
|
||||||
uclibcpp_files: $(uclibcpp_files)
|
|
||||||
uclibcpp_patch: $(uclibcpp_patch)
|
|
||||||
uclibcpp_config: $(uclibcpp_config)
|
|
||||||
uclibcpp_make: $(uclibcpp_make)
|
|
||||||
uclibcpp_install: $(uclibcpp_install)
|
|
||||||
|
|
32
install-sh
@ -1,7 +1,7 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# install - install a program, script, or datafile
|
# install - install a program, script, or datafile
|
||||||
|
|
||||||
scriptversion=2006-12-25.00
|
scriptversion=2011-01-19.21; # UTC
|
||||||
|
|
||||||
# This originates from X11R5 (mit/util/scripts/install.sh), which was
|
# This originates from X11R5 (mit/util/scripts/install.sh), which was
|
||||||
# later released in X11R6 (xc/config/util/install.sh) with the
|
# later released in X11R6 (xc/config/util/install.sh) with the
|
||||||
@ -156,6 +156,10 @@ while test $# -ne 0; do
|
|||||||
-s) stripcmd=$stripprog;;
|
-s) stripcmd=$stripprog;;
|
||||||
|
|
||||||
-t) dst_arg=$2
|
-t) dst_arg=$2
|
||||||
|
# Protect names problematic for `test' and other utilities.
|
||||||
|
case $dst_arg in
|
||||||
|
-* | [=\(\)!]) dst_arg=./$dst_arg;;
|
||||||
|
esac
|
||||||
shift;;
|
shift;;
|
||||||
|
|
||||||
-T) no_target_directory=true;;
|
-T) no_target_directory=true;;
|
||||||
@ -186,6 +190,10 @@ if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
|
|||||||
fi
|
fi
|
||||||
shift # arg
|
shift # arg
|
||||||
dst_arg=$arg
|
dst_arg=$arg
|
||||||
|
# Protect names problematic for `test' and other utilities.
|
||||||
|
case $dst_arg in
|
||||||
|
-* | [=\(\)!]) dst_arg=./$dst_arg;;
|
||||||
|
esac
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -200,7 +208,11 @@ if test $# -eq 0; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if test -z "$dir_arg"; then
|
if test -z "$dir_arg"; then
|
||||||
trap '(exit $?); exit' 1 2 13 15
|
do_exit='(exit $ret); exit $ret'
|
||||||
|
trap "ret=129; $do_exit" 1
|
||||||
|
trap "ret=130; $do_exit" 2
|
||||||
|
trap "ret=141; $do_exit" 13
|
||||||
|
trap "ret=143; $do_exit" 15
|
||||||
|
|
||||||
# Set umask so as not to create temps with too-generous modes.
|
# Set umask so as not to create temps with too-generous modes.
|
||||||
# However, 'strip' requires both read and write access to temps.
|
# However, 'strip' requires both read and write access to temps.
|
||||||
@ -228,9 +240,9 @@ fi
|
|||||||
|
|
||||||
for src
|
for src
|
||||||
do
|
do
|
||||||
# Protect names starting with `-'.
|
# Protect names problematic for `test' and other utilities.
|
||||||
case $src in
|
case $src in
|
||||||
-*) src=./$src;;
|
-* | [=\(\)!]) src=./$src;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
if test -n "$dir_arg"; then
|
if test -n "$dir_arg"; then
|
||||||
@ -252,12 +264,7 @@ do
|
|||||||
echo "$0: no destination specified." >&2
|
echo "$0: no destination specified." >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
dst=$dst_arg
|
dst=$dst_arg
|
||||||
# Protect names starting with `-'.
|
|
||||||
case $dst in
|
|
||||||
-*) dst=./$dst;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# If destination is a directory, append the input filename; won't work
|
# If destination is a directory, append the input filename; won't work
|
||||||
# if double slashes aren't ignored.
|
# if double slashes aren't ignored.
|
||||||
@ -385,7 +392,7 @@ do
|
|||||||
|
|
||||||
case $dstdir in
|
case $dstdir in
|
||||||
/*) prefix='/';;
|
/*) prefix='/';;
|
||||||
-*) prefix='./';;
|
[-=\(\)!]*) prefix='./';;
|
||||||
*) prefix='';;
|
*) prefix='';;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
@ -403,7 +410,7 @@ do
|
|||||||
|
|
||||||
for d
|
for d
|
||||||
do
|
do
|
||||||
test -z "$d" && continue
|
test X"$d" = X && continue
|
||||||
|
|
||||||
prefix=$prefix$d
|
prefix=$prefix$d
|
||||||
if test -d "$prefix"; then
|
if test -d "$prefix"; then
|
||||||
@ -515,5 +522,6 @@ done
|
|||||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||||
# time-stamp-start: "scriptversion="
|
# time-stamp-start: "scriptversion="
|
||||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||||
# time-stamp-end: "$"
|
# time-stamp-time-zone: "UTC"
|
||||||
|
# time-stamp-end: "; # UTC"
|
||||||
# End:
|
# End:
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
#
|
#
|
||||||
## Copyright (C) 2001-2008 Graeme Walker <graeme_walker@users.sourceforge.net>
|
## Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>
|
||||||
##
|
##
|
||||||
## This program is free software: you can redistribute it and/or modify
|
## This program is free software: you can redistribute it and/or modify
|
||||||
## it under the terms of the GNU General Public License as published by
|
## it under the terms of the GNU General Public License as published by
|
||||||
## the Free Software Foundation, either version 3 of the License, or
|
## the Free Software Foundation, either version 3 of the License, or
|
||||||
## (at your option) any later version.
|
## (at your option) any later version.
|
||||||
##
|
##
|
||||||
## This program is distributed in the hope that it will be useful,
|
## This program is distributed in the hope that it will be useful,
|
||||||
|
166
lib/Makefile.in
@ -1,8 +1,9 @@
|
|||||||
# Makefile.in generated by automake 1.10.1 from Makefile.am.
|
# Makefile.in generated by automake 1.11.3 from Makefile.am.
|
||||||
# @configure_input@
|
# @configure_input@
|
||||||
|
|
||||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||||
# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
|
# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
|
||||||
|
# Foundation, Inc.
|
||||||
# This Makefile.in is free software; the Free Software Foundation
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
@ -18,8 +19,9 @@
|
|||||||
#
|
#
|
||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
pkgdatadir = $(datadir)/@PACKAGE@
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
pkglibdir = $(libdir)/@PACKAGE@
|
|
||||||
pkgincludedir = $(includedir)/@PACKAGE@
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
|
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||||
install_sh_DATA = $(install_sh) -c -m 644
|
install_sh_DATA = $(install_sh) -c -m 644
|
||||||
install_sh_PROGRAM = $(install_sh) -c
|
install_sh_PROGRAM = $(install_sh) -c
|
||||||
@ -42,6 +44,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
|||||||
mkinstalldirs = $(install_sh) -d
|
mkinstalldirs = $(install_sh) -d
|
||||||
CONFIG_HEADER = $(top_builddir)/config.h
|
CONFIG_HEADER = $(top_builddir)/config.h
|
||||||
CONFIG_CLEAN_FILES =
|
CONFIG_CLEAN_FILES =
|
||||||
|
CONFIG_CLEAN_VPATH_FILES =
|
||||||
SOURCES =
|
SOURCES =
|
||||||
DIST_SOURCES =
|
DIST_SOURCES =
|
||||||
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
|
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
|
||||||
@ -53,10 +56,38 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
|
|||||||
ps-recursive uninstall-recursive
|
ps-recursive uninstall-recursive
|
||||||
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
|
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
|
||||||
distclean-recursive maintainer-clean-recursive
|
distclean-recursive maintainer-clean-recursive
|
||||||
|
AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
|
||||||
|
$(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
|
||||||
|
distdir
|
||||||
ETAGS = etags
|
ETAGS = etags
|
||||||
CTAGS = ctags
|
CTAGS = ctags
|
||||||
DIST_SUBDIRS = $(SUBDIRS)
|
DIST_SUBDIRS = $(SUBDIRS)
|
||||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||||
|
am__relativize = \
|
||||||
|
dir0=`pwd`; \
|
||||||
|
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
|
||||||
|
sed_rest='s,^[^/]*/*,,'; \
|
||||||
|
sed_last='s,^.*/\([^/]*\)$$,\1,'; \
|
||||||
|
sed_butlast='s,/*[^/]*$$,,'; \
|
||||||
|
while test -n "$$dir1"; do \
|
||||||
|
first=`echo "$$dir1" | sed -e "$$sed_first"`; \
|
||||||
|
if test "$$first" != "."; then \
|
||||||
|
if test "$$first" = ".."; then \
|
||||||
|
dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
|
||||||
|
dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
|
||||||
|
else \
|
||||||
|
first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
|
||||||
|
if test "$$first2" = "$$first"; then \
|
||||||
|
dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
|
||||||
|
else \
|
||||||
|
dir2="../$$dir2"; \
|
||||||
|
fi; \
|
||||||
|
dir0="$$dir0"/"$$first"; \
|
||||||
|
fi; \
|
||||||
|
fi; \
|
||||||
|
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
|
||||||
|
done; \
|
||||||
|
reldir="$$dir2"
|
||||||
ACLOCAL = @ACLOCAL@
|
ACLOCAL = @ACLOCAL@
|
||||||
AMTAR = @AMTAR@
|
AMTAR = @AMTAR@
|
||||||
AR = @AR@
|
AR = @AR@
|
||||||
@ -81,9 +112,9 @@ ECHO_N = @ECHO_N@
|
|||||||
ECHO_T = @ECHO_T@
|
ECHO_T = @ECHO_T@
|
||||||
EGREP = @EGREP@
|
EGREP = @EGREP@
|
||||||
EXEEXT = @EXEEXT@
|
EXEEXT = @EXEEXT@
|
||||||
FRAGMENTS_LIST = @FRAGMENTS_LIST@
|
|
||||||
GREP = @GREP@
|
GREP = @GREP@
|
||||||
GZIP = @GZIP@
|
GZIP = @GZIP@
|
||||||
|
G_CAPABILITIES = @G_CAPABILITIES@
|
||||||
HAVE_DOXYGEN = @HAVE_DOXYGEN@
|
HAVE_DOXYGEN = @HAVE_DOXYGEN@
|
||||||
HAVE_MAN2HTML = @HAVE_MAN2HTML@
|
HAVE_MAN2HTML = @HAVE_MAN2HTML@
|
||||||
INSTALL = @INSTALL@
|
INSTALL = @INSTALL@
|
||||||
@ -106,9 +137,14 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
|||||||
PACKAGE_NAME = @PACKAGE_NAME@
|
PACKAGE_NAME = @PACKAGE_NAME@
|
||||||
PACKAGE_STRING = @PACKAGE_STRING@
|
PACKAGE_STRING = @PACKAGE_STRING@
|
||||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||||
|
PACKAGE_URL = @PACKAGE_URL@
|
||||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
|
PAM_INCLUDE = @PAM_INCLUDE@
|
||||||
|
PAM_LIBS = @PAM_LIBS@
|
||||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
PKG_CONFIG = @PKG_CONFIG@
|
PKG_CONFIG = @PKG_CONFIG@
|
||||||
|
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
|
||||||
|
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
|
||||||
QT_CFLAGS = @QT_CFLAGS@
|
QT_CFLAGS = @QT_CFLAGS@
|
||||||
QT_LIBS = @QT_LIBS@
|
QT_LIBS = @QT_LIBS@
|
||||||
RANLIB = @RANLIB@
|
RANLIB = @RANLIB@
|
||||||
@ -119,6 +155,7 @@ STATIC_END = @STATIC_END@
|
|||||||
STATIC_START = @STATIC_START@
|
STATIC_START = @STATIC_START@
|
||||||
STRIP = @STRIP@
|
STRIP = @STRIP@
|
||||||
VERSION = @VERSION@
|
VERSION = @VERSION@
|
||||||
|
ZLIB_LIBS = @ZLIB_LIBS@
|
||||||
abs_builddir = @abs_builddir@
|
abs_builddir = @abs_builddir@
|
||||||
abs_srcdir = @abs_srcdir@
|
abs_srcdir = @abs_srcdir@
|
||||||
abs_top_builddir = @abs_top_builddir@
|
abs_top_builddir = @abs_top_builddir@
|
||||||
@ -139,8 +176,10 @@ docdir = @docdir@
|
|||||||
dvidir = @dvidir@
|
dvidir = @dvidir@
|
||||||
e_docdir = @e_docdir@
|
e_docdir = @e_docdir@
|
||||||
e_examplesdir = @e_examplesdir@
|
e_examplesdir = @e_examplesdir@
|
||||||
|
e_icondir = @e_icondir@
|
||||||
e_initdir = @e_initdir@
|
e_initdir = @e_initdir@
|
||||||
e_libexecdir = @e_libexecdir@
|
e_libexecdir = @e_libexecdir@
|
||||||
|
e_pamdir = @e_pamdir@
|
||||||
e_qtmoc = @e_qtmoc@
|
e_qtmoc = @e_qtmoc@
|
||||||
e_spooldir = @e_spooldir@
|
e_spooldir = @e_spooldir@
|
||||||
e_sysconfdir = @e_sysconfdir@
|
e_sysconfdir = @e_sysconfdir@
|
||||||
@ -166,6 +205,7 @@ sharedstatedir = @sharedstatedir@
|
|||||||
srcdir = @srcdir@
|
srcdir = @srcdir@
|
||||||
sysconfdir = @sysconfdir@
|
sysconfdir = @sysconfdir@
|
||||||
target_alias = @target_alias@
|
target_alias = @target_alias@
|
||||||
|
top_build_prefix = @top_build_prefix@
|
||||||
top_builddir = @top_builddir@
|
top_builddir = @top_builddir@
|
||||||
top_srcdir = @top_srcdir@
|
top_srcdir = @top_srcdir@
|
||||||
SUBDIRS = gcc2.95 msvc6.0
|
SUBDIRS = gcc2.95 msvc6.0
|
||||||
@ -176,14 +216,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
|
|||||||
@for dep in $?; do \
|
@for dep in $?; do \
|
||||||
case '$(am__configure_deps)' in \
|
case '$(am__configure_deps)' in \
|
||||||
*$$dep*) \
|
*$$dep*) \
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||||
&& exit 0; \
|
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||||
exit 1;; \
|
exit 1;; \
|
||||||
esac; \
|
esac; \
|
||||||
done; \
|
done; \
|
||||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/Makefile'; \
|
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/Makefile'; \
|
||||||
cd $(top_srcdir) && \
|
$(am__cd) $(top_srcdir) && \
|
||||||
$(AUTOMAKE) --gnu lib/Makefile
|
$(AUTOMAKE) --gnu lib/Makefile
|
||||||
.PRECIOUS: Makefile
|
.PRECIOUS: Makefile
|
||||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||||
@case '$?' in \
|
@case '$?' in \
|
||||||
@ -201,6 +241,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
|||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
$(am__aclocal_m4_deps):
|
||||||
|
|
||||||
# This directory's subdirectories are mostly independent; you can cd
|
# This directory's subdirectories are mostly independent; you can cd
|
||||||
# into them and run `make' without going through this Makefile.
|
# into them and run `make' without going through this Makefile.
|
||||||
@ -209,7 +250,7 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
|||||||
# (which will cause the Makefiles to be regenerated when you run `make');
|
# (which will cause the Makefiles to be regenerated when you run `make');
|
||||||
# (2) otherwise, pass the desired values on the `make' command line.
|
# (2) otherwise, pass the desired values on the `make' command line.
|
||||||
$(RECURSIVE_TARGETS):
|
$(RECURSIVE_TARGETS):
|
||||||
@failcom='exit 1'; \
|
@fail= failcom='exit 1'; \
|
||||||
for f in x $$MAKEFLAGS; do \
|
for f in x $$MAKEFLAGS; do \
|
||||||
case $$f in \
|
case $$f in \
|
||||||
*=* | --[!k]*);; \
|
*=* | --[!k]*);; \
|
||||||
@ -226,7 +267,7 @@ $(RECURSIVE_TARGETS):
|
|||||||
else \
|
else \
|
||||||
local_target="$$target"; \
|
local_target="$$target"; \
|
||||||
fi; \
|
fi; \
|
||||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||||
|| eval $$failcom; \
|
|| eval $$failcom; \
|
||||||
done; \
|
done; \
|
||||||
if test "$$dot_seen" = "no"; then \
|
if test "$$dot_seen" = "no"; then \
|
||||||
@ -234,7 +275,7 @@ $(RECURSIVE_TARGETS):
|
|||||||
fi; test -z "$$fail"
|
fi; test -z "$$fail"
|
||||||
|
|
||||||
$(RECURSIVE_CLEAN_TARGETS):
|
$(RECURSIVE_CLEAN_TARGETS):
|
||||||
@failcom='exit 1'; \
|
@fail= failcom='exit 1'; \
|
||||||
for f in x $$MAKEFLAGS; do \
|
for f in x $$MAKEFLAGS; do \
|
||||||
case $$f in \
|
case $$f in \
|
||||||
*=* | --[!k]*);; \
|
*=* | --[!k]*);; \
|
||||||
@ -260,16 +301,16 @@ $(RECURSIVE_CLEAN_TARGETS):
|
|||||||
else \
|
else \
|
||||||
local_target="$$target"; \
|
local_target="$$target"; \
|
||||||
fi; \
|
fi; \
|
||||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||||
|| eval $$failcom; \
|
|| eval $$failcom; \
|
||||||
done && test -z "$$fail"
|
done && test -z "$$fail"
|
||||||
tags-recursive:
|
tags-recursive:
|
||||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||||
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
|
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
|
||||||
done
|
done
|
||||||
ctags-recursive:
|
ctags-recursive:
|
||||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||||
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
|
test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
|
||||||
done
|
done
|
||||||
|
|
||||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||||
@ -277,14 +318,14 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
|||||||
unique=`for i in $$list; do \
|
unique=`for i in $$list; do \
|
||||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
done | \
|
done | \
|
||||||
$(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
|
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||||
mkid -fID $$unique
|
mkid -fID $$unique
|
||||||
tags: TAGS
|
tags: TAGS
|
||||||
|
|
||||||
TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||||
$(TAGS_FILES) $(LISP)
|
$(TAGS_FILES) $(LISP)
|
||||||
tags=; \
|
set x; \
|
||||||
here=`pwd`; \
|
here=`pwd`; \
|
||||||
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
|
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
|
||||||
include_option=--etags-include; \
|
include_option=--etags-include; \
|
||||||
@ -296,7 +337,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
|||||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||||
if test "$$subdir" = .; then :; else \
|
if test "$$subdir" = .; then :; else \
|
||||||
test ! -f $$subdir/TAGS || \
|
test ! -f $$subdir/TAGS || \
|
||||||
tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
|
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
|
||||||
fi; \
|
fi; \
|
||||||
done; \
|
done; \
|
||||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
@ -305,29 +346,34 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
|||||||
done | \
|
done | \
|
||||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||||
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
|
shift; \
|
||||||
|
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||||
test -n "$$unique" || unique=$$empty_fix; \
|
test -n "$$unique" || unique=$$empty_fix; \
|
||||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
if test $$# -gt 0; then \
|
||||||
$$tags $$unique; \
|
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||||
|
"$$@" $$unique; \
|
||||||
|
else \
|
||||||
|
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||||
|
$$unique; \
|
||||||
|
fi; \
|
||||||
fi
|
fi
|
||||||
ctags: CTAGS
|
ctags: CTAGS
|
||||||
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||||
$(TAGS_FILES) $(LISP)
|
$(TAGS_FILES) $(LISP)
|
||||||
tags=; \
|
|
||||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||||
unique=`for i in $$list; do \
|
unique=`for i in $$list; do \
|
||||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||||
done | \
|
done | \
|
||||||
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
$(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||||
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||||
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
test -z "$(CTAGS_ARGS)$$unique" \
|
||||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||||
$$tags $$unique
|
$$unique
|
||||||
|
|
||||||
GTAGS:
|
GTAGS:
|
||||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||||
&& cd $(top_srcdir) \
|
&& $(am__cd) $(top_srcdir) \
|
||||||
&& gtags -i $(GTAGS_ARGS) $$here
|
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||||
|
|
||||||
distclean-tags:
|
distclean-tags:
|
||||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||||
@ -348,29 +394,44 @@ distdir: $(DISTFILES)
|
|||||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||||
if test -d $$d/$$file; then \
|
if test -d $$d/$$file; then \
|
||||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
if test -d "$(distdir)/$$file"; then \
|
||||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||||
fi; \
|
fi; \
|
||||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||||
|
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||||
|
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||||
|
fi; \
|
||||||
|
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||||
else \
|
else \
|
||||||
test -f $(distdir)/$$file \
|
test -f "$(distdir)/$$file" \
|
||||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||||
|| exit 1; \
|
|| exit 1; \
|
||||||
fi; \
|
fi; \
|
||||||
done
|
done
|
||||||
list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||||
if test "$$subdir" = .; then :; else \
|
if test "$$subdir" = .; then :; else \
|
||||||
test -d "$(distdir)/$$subdir" \
|
test -d "$(distdir)/$$subdir" \
|
||||||
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|
||||||
|| exit 1; \
|
|| exit 1; \
|
||||||
distdir=`$(am__cd) $(distdir) && pwd`; \
|
fi; \
|
||||||
top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
|
done
|
||||||
(cd $$subdir && \
|
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||||
|
if test "$$subdir" = .; then :; else \
|
||||||
|
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
|
||||||
|
$(am__relativize); \
|
||||||
|
new_distdir=$$reldir; \
|
||||||
|
dir1=$$subdir; dir2="$(top_distdir)"; \
|
||||||
|
$(am__relativize); \
|
||||||
|
new_top_distdir=$$reldir; \
|
||||||
|
echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
|
||||||
|
echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
|
||||||
|
($(am__cd) $$subdir && \
|
||||||
$(MAKE) $(AM_MAKEFLAGS) \
|
$(MAKE) $(AM_MAKEFLAGS) \
|
||||||
top_distdir="$$top_distdir" \
|
top_distdir="$$new_top_distdir" \
|
||||||
distdir="$$distdir/$$subdir" \
|
distdir="$$new_distdir" \
|
||||||
am__remove_distdir=: \
|
am__remove_distdir=: \
|
||||||
am__skip_length_check=: \
|
am__skip_length_check=: \
|
||||||
|
am__skip_mode_fix=: \
|
||||||
distdir) \
|
distdir) \
|
||||||
|| exit 1; \
|
|| exit 1; \
|
||||||
fi; \
|
fi; \
|
||||||
@ -390,16 +451,22 @@ install-am: all-am
|
|||||||
|
|
||||||
installcheck: installcheck-recursive
|
installcheck: installcheck-recursive
|
||||||
install-strip:
|
install-strip:
|
||||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
if test -z '$(STRIP)'; then \
|
||||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
`test -z '$(STRIP)' || \
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
install; \
|
||||||
|
else \
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
|
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||||
|
fi
|
||||||
mostlyclean-generic:
|
mostlyclean-generic:
|
||||||
|
|
||||||
clean-generic:
|
clean-generic:
|
||||||
|
|
||||||
distclean-generic:
|
distclean-generic:
|
||||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||||
|
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||||
|
|
||||||
maintainer-clean-generic:
|
maintainer-clean-generic:
|
||||||
@echo "This command is intended for maintainers to use"
|
@echo "This command is intended for maintainers to use"
|
||||||
@ -418,6 +485,8 @@ dvi-am:
|
|||||||
|
|
||||||
html: html-recursive
|
html: html-recursive
|
||||||
|
|
||||||
|
html-am:
|
||||||
|
|
||||||
info: info-recursive
|
info: info-recursive
|
||||||
|
|
||||||
info-am:
|
info-am:
|
||||||
@ -426,18 +495,28 @@ install-data-am:
|
|||||||
|
|
||||||
install-dvi: install-dvi-recursive
|
install-dvi: install-dvi-recursive
|
||||||
|
|
||||||
|
install-dvi-am:
|
||||||
|
|
||||||
install-exec-am:
|
install-exec-am:
|
||||||
|
|
||||||
install-html: install-html-recursive
|
install-html: install-html-recursive
|
||||||
|
|
||||||
|
install-html-am:
|
||||||
|
|
||||||
install-info: install-info-recursive
|
install-info: install-info-recursive
|
||||||
|
|
||||||
|
install-info-am:
|
||||||
|
|
||||||
install-man:
|
install-man:
|
||||||
|
|
||||||
install-pdf: install-pdf-recursive
|
install-pdf: install-pdf-recursive
|
||||||
|
|
||||||
|
install-pdf-am:
|
||||||
|
|
||||||
install-ps: install-ps-recursive
|
install-ps: install-ps-recursive
|
||||||
|
|
||||||
|
install-ps-am:
|
||||||
|
|
||||||
installcheck-am:
|
installcheck-am:
|
||||||
|
|
||||||
maintainer-clean: maintainer-clean-recursive
|
maintainer-clean: maintainer-clean-recursive
|
||||||
@ -458,8 +537,8 @@ ps-am:
|
|||||||
|
|
||||||
uninstall-am:
|
uninstall-am:
|
||||||
|
|
||||||
.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
|
.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \
|
||||||
install-strip
|
install-am install-strip tags-recursive
|
||||||
|
|
||||||
.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
|
.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
|
||||||
all all-am check check-am clean clean-generic ctags \
|
all all-am check check-am clean clean-generic ctags \
|
||||||
@ -474,6 +553,7 @@ uninstall-am:
|
|||||||
mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \
|
mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags \
|
||||||
tags-recursive uninstall uninstall-am
|
tags-recursive uninstall uninstall-am
|
||||||
|
|
||||||
|
|
||||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
.NOEXPORT:
|
.NOEXPORT:
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
#
|
#
|
||||||
## Copyright (C) 2001-2008 Graeme Walker <graeme_walker@users.sourceforge.net>
|
## Copyright (C) 2001-2013 Graeme Walker <graeme_walker@users.sourceforge.net>
|
||||||
##
|
##
|
||||||
## This program is free software: you can redistribute it and/or modify
|
## This program is free software: you can redistribute it and/or modify
|
||||||
## it under the terms of the GNU General Public License as published by
|
## it under the terms of the GNU General Public License as published by
|
||||||
## the Free Software Foundation, either version 3 of the License, or
|
## the Free Software Foundation, either version 3 of the License, or
|
||||||
## (at your option) any later version.
|
## (at your option) any later version.
|
||||||
##
|
##
|
||||||
## This program is distributed in the hope that it will be useful,
|
## This program is distributed in the hope that it will be useful,
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
# Makefile.in generated by automake 1.10.1 from Makefile.am.
|
# Makefile.in generated by automake 1.11.3 from Makefile.am.
|
||||||
# @configure_input@
|
# @configure_input@
|
||||||
|
|
||||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||||
# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
|
# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
|
||||||
|
# Foundation, Inc.
|
||||||
# This Makefile.in is free software; the Free Software Foundation
|
# This Makefile.in is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
@ -18,8 +19,9 @@
|
|||||||
#
|
#
|
||||||
VPATH = @srcdir@
|
VPATH = @srcdir@
|
||||||
pkgdatadir = $(datadir)/@PACKAGE@
|
pkgdatadir = $(datadir)/@PACKAGE@
|
||||||
pkglibdir = $(libdir)/@PACKAGE@
|
|
||||||
pkgincludedir = $(includedir)/@PACKAGE@
|
pkgincludedir = $(includedir)/@PACKAGE@
|
||||||
|
pkglibdir = $(libdir)/@PACKAGE@
|
||||||
|
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||||
install_sh_DATA = $(install_sh) -c -m 644
|
install_sh_DATA = $(install_sh) -c -m 644
|
||||||
install_sh_PROGRAM = $(install_sh) -c
|
install_sh_PROGRAM = $(install_sh) -c
|
||||||
@ -42,6 +44,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
|||||||
mkinstalldirs = $(install_sh) -d
|
mkinstalldirs = $(install_sh) -d
|
||||||
CONFIG_HEADER = $(top_builddir)/config.h
|
CONFIG_HEADER = $(top_builddir)/config.h
|
||||||
CONFIG_CLEAN_FILES =
|
CONFIG_CLEAN_FILES =
|
||||||
|
CONFIG_CLEAN_VPATH_FILES =
|
||||||
SOURCES =
|
SOURCES =
|
||||||
DIST_SOURCES =
|
DIST_SOURCES =
|
||||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||||
@ -69,9 +72,9 @@ ECHO_N = @ECHO_N@
|
|||||||
ECHO_T = @ECHO_T@
|
ECHO_T = @ECHO_T@
|
||||||
EGREP = @EGREP@
|
EGREP = @EGREP@
|
||||||
EXEEXT = @EXEEXT@
|
EXEEXT = @EXEEXT@
|
||||||
FRAGMENTS_LIST = @FRAGMENTS_LIST@
|
|
||||||
GREP = @GREP@
|
GREP = @GREP@
|
||||||
GZIP = @GZIP@
|
GZIP = @GZIP@
|
||||||
|
G_CAPABILITIES = @G_CAPABILITIES@
|
||||||
HAVE_DOXYGEN = @HAVE_DOXYGEN@
|
HAVE_DOXYGEN = @HAVE_DOXYGEN@
|
||||||
HAVE_MAN2HTML = @HAVE_MAN2HTML@
|
HAVE_MAN2HTML = @HAVE_MAN2HTML@
|
||||||
INSTALL = @INSTALL@
|
INSTALL = @INSTALL@
|
||||||
@ -94,9 +97,14 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
|||||||
PACKAGE_NAME = @PACKAGE_NAME@
|
PACKAGE_NAME = @PACKAGE_NAME@
|
||||||
PACKAGE_STRING = @PACKAGE_STRING@
|
PACKAGE_STRING = @PACKAGE_STRING@
|
||||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||||
|
PACKAGE_URL = @PACKAGE_URL@
|
||||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||||
|
PAM_INCLUDE = @PAM_INCLUDE@
|
||||||
|
PAM_LIBS = @PAM_LIBS@
|
||||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||||
PKG_CONFIG = @PKG_CONFIG@
|
PKG_CONFIG = @PKG_CONFIG@
|
||||||
|
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
|
||||||
|
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
|
||||||
QT_CFLAGS = @QT_CFLAGS@
|
QT_CFLAGS = @QT_CFLAGS@
|
||||||
QT_LIBS = @QT_LIBS@
|
QT_LIBS = @QT_LIBS@
|
||||||
RANLIB = @RANLIB@
|
RANLIB = @RANLIB@
|
||||||
@ -107,6 +115,7 @@ STATIC_END = @STATIC_END@
|
|||||||
STATIC_START = @STATIC_START@
|
STATIC_START = @STATIC_START@
|
||||||
STRIP = @STRIP@
|
STRIP = @STRIP@
|
||||||
VERSION = @VERSION@
|
VERSION = @VERSION@
|
||||||
|
ZLIB_LIBS = @ZLIB_LIBS@
|
||||||
abs_builddir = @abs_builddir@
|
abs_builddir = @abs_builddir@
|
||||||
abs_srcdir = @abs_srcdir@
|
abs_srcdir = @abs_srcdir@
|
||||||
abs_top_builddir = @abs_top_builddir@
|
abs_top_builddir = @abs_top_builddir@
|
||||||
@ -127,8 +136,10 @@ docdir = @docdir@
|
|||||||
dvidir = @dvidir@
|
dvidir = @dvidir@
|
||||||
e_docdir = @e_docdir@
|
e_docdir = @e_docdir@
|
||||||
e_examplesdir = @e_examplesdir@
|
e_examplesdir = @e_examplesdir@
|
||||||
|
e_icondir = @e_icondir@
|
||||||
e_initdir = @e_initdir@
|
e_initdir = @e_initdir@
|
||||||
e_libexecdir = @e_libexecdir@
|
e_libexecdir = @e_libexecdir@
|
||||||
|
e_pamdir = @e_pamdir@
|
||||||
e_qtmoc = @e_qtmoc@
|
e_qtmoc = @e_qtmoc@
|
||||||
e_spooldir = @e_spooldir@
|
e_spooldir = @e_spooldir@
|
||||||
e_sysconfdir = @e_sysconfdir@
|
e_sysconfdir = @e_sysconfdir@
|
||||||
@ -154,6 +165,7 @@ sharedstatedir = @sharedstatedir@
|
|||||||
srcdir = @srcdir@
|
srcdir = @srcdir@
|
||||||
sysconfdir = @sysconfdir@
|
sysconfdir = @sysconfdir@
|
||||||
target_alias = @target_alias@
|
target_alias = @target_alias@
|
||||||
|
top_build_prefix = @top_build_prefix@
|
||||||
top_builddir = @top_builddir@
|
top_builddir = @top_builddir@
|
||||||
top_srcdir = @top_srcdir@
|
top_srcdir = @top_srcdir@
|
||||||
EXTRA_DIST = iostream limits sstream xlocale
|
EXTRA_DIST = iostream limits sstream xlocale
|
||||||
@ -164,14 +176,14 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
|
|||||||
@for dep in $?; do \
|
@for dep in $?; do \
|
||||||
case '$(am__configure_deps)' in \
|
case '$(am__configure_deps)' in \
|
||||||
*$$dep*) \
|
*$$dep*) \
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||||
&& exit 0; \
|
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||||
exit 1;; \
|
exit 1;; \
|
||||||
esac; \
|
esac; \
|
||||||
done; \
|
done; \
|
||||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/gcc2.95/Makefile'; \
|
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/gcc2.95/Makefile'; \
|
||||||
cd $(top_srcdir) && \
|
$(am__cd) $(top_srcdir) && \
|
||||||
$(AUTOMAKE) --gnu lib/gcc2.95/Makefile
|
$(AUTOMAKE) --gnu lib/gcc2.95/Makefile
|
||||||
.PRECIOUS: Makefile
|
.PRECIOUS: Makefile
|
||||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||||
@case '$?' in \
|
@case '$?' in \
|
||||||
@ -189,6 +201,7 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
|
|||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
|
||||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||||
|
$(am__aclocal_m4_deps):
|
||||||
tags: TAGS
|
tags: TAGS
|
||||||
TAGS:
|
TAGS:
|
||||||
|
|
||||||
@ -212,13 +225,17 @@ distdir: $(DISTFILES)
|
|||||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||||
if test -d $$d/$$file; then \
|
if test -d $$d/$$file; then \
|
||||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
if test -d "$(distdir)/$$file"; then \
|
||||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||||
fi; \
|
fi; \
|
||||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||||
|
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||||
|
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||||
|
fi; \
|
||||||
|
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||||
else \
|
else \
|
||||||
test -f $(distdir)/$$file \
|
test -f "$(distdir)/$$file" \
|
||||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||||
|| exit 1; \
|
|| exit 1; \
|
||||||
fi; \
|
fi; \
|
||||||
done
|
done
|
||||||
@ -236,16 +253,22 @@ install-am: all-am
|
|||||||
|
|
||||||
installcheck: installcheck-am
|
installcheck: installcheck-am
|
||||||
install-strip:
|
install-strip:
|
||||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
if test -z '$(STRIP)'; then \
|
||||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
`test -z '$(STRIP)' || \
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
install; \
|
||||||
|
else \
|
||||||
|
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||||
|
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||||
|
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||||
|
fi
|
||||||
mostlyclean-generic:
|
mostlyclean-generic:
|
||||||
|
|
||||||
clean-generic:
|
clean-generic:
|
||||||
|
|
||||||
distclean-generic:
|
distclean-generic:
|
||||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||||
|
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||||
|
|
||||||
maintainer-clean-generic:
|
maintainer-clean-generic:
|
||||||
@echo "This command is intended for maintainers to use"
|
@echo "This command is intended for maintainers to use"
|
||||||
@ -264,6 +287,8 @@ dvi-am:
|
|||||||
|
|
||||||
html: html-am
|
html: html-am
|
||||||
|
|
||||||
|
html-am:
|
||||||
|
|
||||||
info: info-am
|
info: info-am
|
||||||
|
|
||||||
info-am:
|
info-am:
|
||||||
@ -272,18 +297,28 @@ install-data-am:
|
|||||||
|
|
||||||
install-dvi: install-dvi-am
|
install-dvi: install-dvi-am
|
||||||
|
|
||||||
|
install-dvi-am:
|
||||||
|
|
||||||
install-exec-am:
|
install-exec-am:
|
||||||
|
|
||||||
install-html: install-html-am
|
install-html: install-html-am
|
||||||
|
|
||||||
|
install-html-am:
|
||||||
|
|
||||||
install-info: install-info-am
|
install-info: install-info-am
|
||||||
|
|
||||||
|
install-info-am:
|
||||||
|
|
||||||
install-man:
|
install-man:
|
||||||
|
|
||||||
install-pdf: install-pdf-am
|
install-pdf: install-pdf-am
|
||||||
|
|
||||||
|
install-pdf-am:
|
||||||
|
|
||||||
install-ps: install-ps-am
|
install-ps: install-ps-am
|
||||||
|
|
||||||
|
install-ps-am:
|
||||||
|
|
||||||
installcheck-am:
|
installcheck-am:
|
||||||
|
|
||||||
maintainer-clean: maintainer-clean-am
|
maintainer-clean: maintainer-clean-am
|
||||||
@ -316,6 +351,7 @@ uninstall-am:
|
|||||||
maintainer-clean maintainer-clean-generic mostlyclean \
|
maintainer-clean maintainer-clean-generic mostlyclean \
|
||||||
mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am
|
mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am
|
||||||
|
|
||||||
|
|
||||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||||
.NOEXPORT:
|
.NOEXPORT:
|
||||||
|