summaryrefslogtreecommitdiff
path: root/security/amavisd-new
diff options
context:
space:
mode:
authorkefren <kefren@pkgsrc.org>2010-12-24 07:23:35 +0000
committerkefren <kefren@pkgsrc.org>2010-12-24 07:23:35 +0000
commitc2af6baed7687a4e0805315ffbd93edeb36cf333 (patch)
treed40948b8a307c6028dda0ff37358ef0f9c2166c5 /security/amavisd-new
parenta1f7aa9f422527d73c7bce52345a0c23d6fea092 (diff)
downloadpkgsrc-c2af6baed7687a4e0805315ffbd93edeb36cf333.tar.gz
Remove amavis-perl and amavisd-new from security/. They are now moved
into pkgsrc/mail. Part of PR/32554
Diffstat (limited to 'security/amavisd-new')
-rw-r--r--security/amavisd-new/DESCR11
-rw-r--r--security/amavisd-new/MESSAGE21
-rw-r--r--security/amavisd-new/MESSAGE.milter24
-rw-r--r--security/amavisd-new/Makefile138
-rw-r--r--security/amavisd-new/PLIST45
-rw-r--r--security/amavisd-new/distinfo6
-rw-r--r--security/amavisd-new/files/amavisd.sh77
-rw-r--r--security/amavisd-new/files/amavismilter.sh57
-rw-r--r--security/amavisd-new/patches/patch-aa33
9 files changed, 0 insertions, 412 deletions
diff --git a/security/amavisd-new/DESCR b/security/amavisd-new/DESCR
deleted file mode 100644
index 3180f61f143..00000000000
--- a/security/amavisd-new/DESCR
+++ /dev/null
@@ -1,11 +0,0 @@
-amavisd-new is an interface between message transfer agent (MTA) and
-one or more content checkers, e.g. virus scanners, SpamAssassin, etc.
-It is a performance-enhanced and feature-enriched version of amavisd
-(which in turn is a daemonized version of AMaViS or amavis-perl).
-
-amavisd-new is normally positioned at or near a central mailer, not
-necessarily where user's mailboxes and final delivery takes place. If
-you are looking for fully per-user configurable and/or low-message-rate
-solution to be placed at the final stage of mail delivery (e.g. called
-from procmail), there may be other solutions more appropriate for your
-needs.
diff --git a/security/amavisd-new/MESSAGE b/security/amavisd-new/MESSAGE
deleted file mode 100644
index 76d1d52591c..00000000000
--- a/security/amavisd-new/MESSAGE
+++ /dev/null
@@ -1,21 +0,0 @@
-===========================================================================
-$NetBSD: MESSAGE,v 1.1.1.1 2004/08/06 15:05:54 jlam Exp $
-
-To use amavisd-new, you should install at least one content checker.
-Examples of content checkers include the freely-available Clam Anti-Virus
-(mail/p5-Mail-ClamAV) and SpamAssassin (mail/spamassassin).
-
-amavisd-new will only scan inside archives if the appropriate unarchiving
-tools are available. You may choose to install the following tools to
-scan the respective archive types:
-
- arc archivers/arc
- freeze archivers/freeze
- lha archivers/lha
- lzop archivers/lzop
- unarj archivers/unarj
- unrar archivers/unrar
- xbin archivers/xbin
- zoo archivers/zoo
-
-===========================================================================
diff --git a/security/amavisd-new/MESSAGE.milter b/security/amavisd-new/MESSAGE.milter
deleted file mode 100644
index 183c76cb539..00000000000
--- a/security/amavisd-new/MESSAGE.milter
+++ /dev/null
@@ -1,24 +0,0 @@
-===========================================================================
-$NetBSD: MESSAGE.milter,v 1.1.1.1 2004/08/06 15:05:53 jlam Exp $
-
-Before using amavisd-new with Sendmail, you must configure Sendmail
-properly. Please refer to the following documentation:
-
- ${PREFIX}/share/doc/amavisd-new/README.milter
- ${PREFIX}/share/doc/amavisd-new/README.sendmail
- ${PREFIX}/share/doc/amavisd-new/README.sendmail-dual
-
-There are several ways to configure Sendmail to pass mail through
-amavisd-new depending on your resources and whether you wish to use
-libmilter.
-
-If you choose to use libmilter, then you will need to add the following
-line to /etc/rc.conf:
-
- amavismilter=YES
-
-Please refer to the comments at the top of the amavismilter rc.d script
-for additional rc.conf settings to modify how libmilter and amavisd-new
-communicate with each other.
-
-===========================================================================
diff --git a/security/amavisd-new/Makefile b/security/amavisd-new/Makefile
deleted file mode 100644
index 35e24c73964..00000000000
--- a/security/amavisd-new/Makefile
+++ /dev/null
@@ -1,138 +0,0 @@
-# $NetBSD: Makefile,v 1.42 2010/11/08 18:06:57 adam Exp $
-
-DISTNAME= amavisd-new-${VERSION}${PATCHLEVEL}
-PKGNAME= amavisd-new-${VERSION}${PATCHLEVEL:S/-//}
-CATEGORIES= security mail
-MASTER_SITES= http://www.ijs.si/software/amavisd/ \
- http://mirrors.catpipe.net/amavisd-new/ \
- http://mirror.mainloop.se/amavisd/ \
- http://mirror.cedratnet.com/amavisd-new/ \
- http://mirror.omroep.nl/amavisd-new/
-
-MAINTAINER= jdunn@aquezada.com
-HOMEPAGE= http://www.ijs.si/software/amavisd/
-COMMENT= Daemonized interface between MTA and content checkers
-LICENSE= gnu-gpl-v2
-
-VERSION= 2.6.4
-PATCHLEVEL= # empty
-
-PKG_DESTDIR_SUPPORT= user-destdir
-
-DEPENDS+= p5-Archive-Tar-[0-9]*:../../archivers/p5-Archive-Tar
-DEPENDS+= p5-Archive-Zip>=1.14:../../archivers/p5-Archive-Zip
-DEPENDS+= p5-BerkeleyDB-[0-9]*:../../databases/p5-BerkeleyDB
-DEPENDS+= p5-IO-Compress>=2.017:../../devel/p5-IO-Compress
-DEPENDS+= p5-Convert-TNEF-[0-9]*:../../converters/p5-Convert-TNEF
-DEPENDS+= p5-Convert-UUlib>=1.05:../../converters/p5-Convert-UUlib
-DEPENDS+= p5-Digest-MD5>=2.22:../../security/p5-Digest-MD5
-DEPENDS+= p5-Mail-DKIM>=0.31:../../mail/p5-Mail-DKIM
-DEPENDS+= p5-MIME-tools>=5.417:../../mail/p5-MIME-tools
-DEPENDS+= p5-MailTools>=1.58:../../mail/p5-MailTools
-DEPENDS+= p5-IO-stringy-[0-9]*:../../devel/p5-IO-stringy
-DEPENDS+= p5-Net-Server>=0.88:../../net/p5-Net-Server
-DEPENDS+= p5-Time-HiRes>=1.49:../../time/p5-Time-HiRes
-DEPENDS+= p5-Unix-Syslog-[0-9]*:../../sysutils/p5-Unix-Syslog
-
-WRKSRC= ${WRKDIR}/amavisd-new-${VERSION}
-
-CONFLICTS+= amavis-[0-9]*
-CONFLICTS+= amavis-perl-[0-9]*
-
-.include "../../mk/bsd.prefs.mk"
-
-USE_TOOLS+= perl:run
-REPLACE_PERL+= amavisd amavisd-nanny amavisd-release amavisd-agent
-
-AMAVIS_USER?= vscan
-AMAVIS_GROUP?= vscan
-AMAVIS_DIR?= ${VARBASE}/amavis
-AMAVIS_QUARANTINE?= ${VARBASE}/virusmails
-DOCDIR= ${PREFIX}/share/doc/amavisd-new
-EGDIR= ${PREFIX}/share/examples/amavisd-new
-MESSAGE_SRC= ${PKGDIR}/MESSAGE
-
-PKG_GROUPS_VARS+= AMAVIS_GROUP
-PKG_USERS_VARS+= AMAVIS_USER
-BUILD_DEFS+= AMAVIS_DIR AMAVIS_QUARANTINE
-FILES_SUBST+= AMAVIS_USER=${AMAVIS_USER}
-FILES_SUBST+= AMAVIS_GROUP=${AMAVIS_GROUP}
-FILES_SUBST+= AMAVIS_DIR=${AMAVIS_DIR}
-FILES_SUBST+= AMAVIS_QUARANTINE=${AMAVIS_QUARANTINE:Q}
-
-PKG_GROUPS= ${AMAVIS_GROUP}
-PKG_USERS= ${AMAVIS_USER}:${AMAVIS_GROUP}
-
-PKG_GECOS.${AMAVIS_USER}= AMaViS Virus Scanning Account
-PKG_HOME.${AMAVIS_USER}= ${AMAVIS_DIR}
-PKG_SHELL.${AMAVIS_USER}= ${SH}
-
-RCD_SCRIPTS= amavisd
-CONF_FILES= ${EGDIR}/amavisd.conf-minimal ${PKG_SYSCONFDIR}/amavisd.conf
-
-PKG_OPTIONS_VAR= PKG_OPTIONS.amavisd-new
-PKG_SUPPORTED_OPTIONS= milter
-
-.include "../../mk/bsd.options.mk"
-
-PLIST_VARS+= milter
-.if !empty(PKG_OPTIONS:Mmilter)
-GNU_CONFIGURE= yes
-CONFIGURE_ARGS+= --with-runtime-dir=${AMAVIS_DIR}
-CONFIGURE_ARGS+= --with-sockname=${AMAVIS_DIR}/amavisd.sock
-CONFIGURE_ARGS+= --with-user=${AMAVIS_USER}
-CONFIGURE_ARGS+= --with-milterinc=${BUILDLINK_PREFIX.libmilter}/include
-CONFIGURE_ARGS+= --with-milterlib=${BUILDLINK_PREFIX.libmilter}/lib
-CONFIGURE_DIRS= helper-progs
-BUILD_DIRS= helper-progs
-RCD_SCRIPTS+= amavismilter
-MESSAGE_SRC+= ${PKGDIR}/MESSAGE.milter
-PLIST.milter= yes
-
-PTHREAD_OPTS+= require native # doesn't work with pth
-. include "../../mail/libmilter/buildlink3.mk"
-. include "../../mk/pthread.buildlink3.mk"
-.else
-USE_LANGUAGES= # none, not even C
-
-do-build: replace-interpreter
-.endif
-
-SUBST_CLASSES+= amavisd
-SUBST_STAGE.amavisd= pre-build
-SUBST_FILES.amavisd= amavisd amavisd.conf
-SUBST_SED.amavisd= \
- -e "s|/etc/amavisd.conf|${PKG_SYSCONFDIR}/amavisd.conf|" \
- -e "s|@AMAVIS_DIR@|${AMAVIS_DIR}|g" \
- -e "s|@AMAVIS_USER@|${AMAVIS_USER}|g" \
- -e "s|@AMAVIS_GROUP@|${AMAVIS_GROUP}|g" \
- -e "s|@AMAVIS_QUARANTINE@|${AMAVIS_QUARANTINE}|g" \
- -e "s|@LOCALBASE@|${LOCALBASE}|g" \
- -e "s|@PREFIX@|${PREFIX}|g"
-
-INSTALLATION_DIRS= sbin ${DOCDIR} ${EGDIR}
-
-do-install:
-.if !empty(PKG_OPTIONS:Mmilter)
- ${INSTALL_PROGRAM} ${WRKSRC}/helper-progs/amavis ${DESTDIR}${PREFIX}/sbin
- ${INSTALL_PROGRAM} ${WRKSRC}/helper-progs/amavis-milter ${DESTDIR}${PREFIX}/sbin
-.endif
- ${INSTALL_SCRIPT} ${WRKSRC}/amavisd ${DESTDIR}${PREFIX}/sbin/amavisd
- ${INSTALL_SCRIPT} ${WRKSRC}/amavisd-nanny ${DESTDIR}${PREFIX}/sbin/amavisd-nanny
- ${INSTALL_SCRIPT} ${WRKSRC}/amavisd-release ${DESTDIR}${PREFIX}/sbin/amavisd-release
- ${INSTALL_SCRIPT} ${WRKSRC}/amavisd-agent ${DESTDIR}${PREFIX}/sbin/amavisd-agent
- ${INSTALL_DATA} ${WRKSRC}/AAAREADME.first ${DESTDIR}${DOCDIR}
- ${INSTALL_DATA} ${WRKSRC}/INSTALL ${DESTDIR}${DOCDIR}
- ${INSTALL_DATA} ${WRKSRC}/LDAP.schema ${DESTDIR}${DOCDIR}
- ${INSTALL_DATA} ${WRKSRC}/LICENSE ${DESTDIR}${DOCDIR}
- ${INSTALL_DATA} ${WRKSRC}/MANIFEST ${DESTDIR}${DOCDIR}
- ${INSTALL_DATA} ${WRKSRC}/RELEASE_NOTES ${DESTDIR}${DOCDIR}
- ${INSTALL_DATA} ${WRKSRC}/README_FILES/amavisd-new-docs.html ${DESTDIR}${DOCDIR}
- for file in README_FILES/README.*; do \
- ${INSTALL_DATA} ${WRKSRC}/$$file ${DESTDIR}${DOCDIR}; \
- done
- ${INSTALL_DATA} ${WRKSRC}/amavisd.conf ${DESTDIR}${EGDIR}/amavisd.conf-minimal
- ${INSTALL_DATA} ${WRKSRC}/amavisd.conf-default ${DESTDIR}${EGDIR}
- ${INSTALL_DATA} ${WRKSRC}/amavisd.conf-sample ${DESTDIR}${EGDIR}
-
-.include "../../mk/bsd.pkg.mk"
diff --git a/security/amavisd-new/PLIST b/security/amavisd-new/PLIST
deleted file mode 100644
index 93931caff6e..00000000000
--- a/security/amavisd-new/PLIST
+++ /dev/null
@@ -1,45 +0,0 @@
-@comment $NetBSD: PLIST,v 1.14 2009/06/14 18:13:26 joerg Exp $
-${PLIST.milter}sbin/amavis
-${PLIST.milter}sbin/amavis-milter
-sbin/amavisd
-sbin/amavisd-agent
-sbin/amavisd-nanny
-sbin/amavisd-release
-share/doc/amavisd-new/AAAREADME.first
-share/doc/amavisd-new/INSTALL
-share/doc/amavisd-new/LDAP.schema
-share/doc/amavisd-new/LICENSE
-share/doc/amavisd-new/MANIFEST
-share/doc/amavisd-new/README.banned
-share/doc/amavisd-new/README.chroot
-share/doc/amavisd-new/README.contributed
-share/doc/amavisd-new/README.courier
-share/doc/amavisd-new/README.courier-old
-share/doc/amavisd-new/README.customize
-share/doc/amavisd-new/README.exim_v3
-share/doc/amavisd-new/README.exim_v3_app
-share/doc/amavisd-new/README.exim_v4
-share/doc/amavisd-new/README.exim_v4_app
-share/doc/amavisd-new/README.exim_v4_app2
-share/doc/amavisd-new/README.ldap
-share/doc/amavisd-new/README.lookups
-share/doc/amavisd-new/README.milter
-share/doc/amavisd-new/README.old.scanners
-share/doc/amavisd-new/README.performance
-share/doc/amavisd-new/README.policy-on-notifications
-share/doc/amavisd-new/README.postfix
-share/doc/amavisd-new/README.postfix.html
-share/doc/amavisd-new/README.protocol
-share/doc/amavisd-new/README.sendmail
-share/doc/amavisd-new/README.sendmail-dual
-share/doc/amavisd-new/README.sendmail-dual.old
-share/doc/amavisd-new/README.sql
-share/doc/amavisd-new/README.sql-mysql
-share/doc/amavisd-new/README.sql-pg
-share/doc/amavisd-new/RELEASE_NOTES
-share/doc/amavisd-new/amavisd-new-docs.html
-share/examples/amavisd-new/amavisd.conf-default
-share/examples/amavisd-new/amavisd.conf-minimal
-share/examples/amavisd-new/amavisd.conf-sample
-share/examples/rc.d/amavisd
-${PLIST.milter}share/examples/rc.d/amavismilter
diff --git a/security/amavisd-new/distinfo b/security/amavisd-new/distinfo
deleted file mode 100644
index 2c4c3949149..00000000000
--- a/security/amavisd-new/distinfo
+++ /dev/null
@@ -1,6 +0,0 @@
-$NetBSD: distinfo,v 1.16 2010/11/08 18:06:57 adam Exp $
-
-SHA1 (amavisd-new-2.6.4.tar.gz) = 993b7ca839ce038fd13f65351950f0ef03d99ff9
-RMD160 (amavisd-new-2.6.4.tar.gz) = 010dd9bf49a3c7553996c49553fd0fa84ca7bdab
-Size (amavisd-new-2.6.4.tar.gz) = 947596 bytes
-SHA1 (patch-aa) = d8bc17da9b1d3ef883331d462ee06d534f5ff5b0
diff --git a/security/amavisd-new/files/amavisd.sh b/security/amavisd-new/files/amavisd.sh
deleted file mode 100644
index fac6afc917c..00000000000
--- a/security/amavisd-new/files/amavisd.sh
+++ /dev/null
@@ -1,77 +0,0 @@
-#!@RCD_SCRIPTS_SHELL@
-#
-# $NetBSD: amavisd.sh,v 1.1.1.1 2004/08/06 15:05:54 jlam Exp $
-#
-# PROVIDE: amavisd
-# REQUIRE: DAEMON
-# BEFORE: mail
-#
-#
-# You will need to set some variables in /etc/rc.conf to start amavisd:
-#
-# amavisd=YES
-#
-# The following variables are optional:
-#
-# amavisd_user="@AMAVIS_USER@" # user to run amavisd as
-# amavisd_group="@AMAVIS_GROUP@" # ${amavisd_user}'s group
-# amavisd_dirs="@AMAVIS_DIR@" # directories that should be created
-# # before starting amavisd
-
-if [ -f /etc/rc.subr ]; then
- . /etc/rc.subr
-fi
-
-name="amavisd"
-rcvar=$name
-command="@PREFIX@/sbin/${name}"
-command_interpreter="@PERL5@"
-pidfile="@AMAVIS_DIR@/amavisd.pid"
-required_files="@PKG_SYSCONFDIR@/${name}.conf"
-: ${amavisd_user="@AMAVIS_USER@"}
-: ${amavisd_group="@AMAVIS_GROUP@"}
-: ${amavisd_dirs="@AMAVIS_DIR@ @AMAVIS_DIR@/db @AMAVIS_DIR@/tmp @AMAVIS_QUARANTINE@"}
-
-start_precmd="amavisd_prestart"
-stop_cmd="amavisd_stop"
-
-amavisd_prestart()
-{
- @RM@ -f @AMAVIS_DIR@/amavisd.sock
- for dir in ${amavisd_dirs}; do
- @MKDIR@ $dir
- @CHOWN@ ${amavisd_user}:${amavisd_group} $dir
- @CHMOD@ 0750 $dir
- done
-}
-
-# Net::Server breaks rc.subr's techniques for detecting whether the
-# process running at a certain PID is actually the process we wish to
-# stop. Just unconditionally send SIGTERM to the PID instead.
-#
-amavisd_stop()
-{
- @ECHO@ "Stopping ${name}."
- if [ -f ${pidfile} ]; then
- pid=`@HEAD@ -1 ${pidfile}`
- doit="@SU@ -m ${amavisd_user} -c \"kill ${pid}\""
- if ! eval $doit && [ -z "$rc_force" ]; then
- return 1
- fi
- wait_for_pids $pid
- fi
- @RM@ -f ${pidfile}
- for dir in ${amavisd_dirs}; do
- @RMDIR@ -p $dir 2>/dev/null || @TRUE@
- done
-}
-
-if [ -f /etc/rc.subr -a -f /etc/rc.conf \
- -a -d /etc/rc.d -a -f /etc/rc.d/DAEMON ]; then
- load_rc_config $name
- run_rc_command "$1"
-else
- @ECHO@ -n " ${name}"
- eval ${start_precmd}
- ${command} ${amavisd_flags} ${command_args}
-fi
diff --git a/security/amavisd-new/files/amavismilter.sh b/security/amavisd-new/files/amavismilter.sh
deleted file mode 100644
index 4c0695a322d..00000000000
--- a/security/amavisd-new/files/amavismilter.sh
+++ /dev/null
@@ -1,57 +0,0 @@
-#!@RCD_SCRIPTS_SHELL@
-#
-# $NetBSD: amavismilter.sh,v 1.1.1.1 2004/08/06 15:05:54 jlam Exp $
-#
-# PROVIDE: amavismilter
-# REQUIRE: DAEMON
-# BEFORE: mail
-#
-# To communicate with libmilter through a UNIX domain socket (the
-# socket must exist in a location that's writable by the user named
-# by ${amavismilter_user}:
-#
-# amavismilter_flags="-p local:/path/to/socket"
-#
-# To communicate with libmilter through a TCP/IP socket:
-#
-# amavismilter_flags="-p inet:port@0.0.0.0"
-#
-# To communicate with libmilter through a TCP/IP socket restricted to a
-# particular interface address:
-#
-# amavismilter_flags="-p inet:port@A.B.C.D"
-#
-
-if [ -f /etc/rc.subr ]; then
- . /etc/rc.subr
-fi
-
-name="amavismilter"
-rcvar=$name
-command="@PREFIX@/sbin/amavis-milter"
-required_vars="amavisd"
-: ${amavismilter_user="@AMAVIS_USER@"}
-: ${amavismilter_flags="-p local:@AMAVIS_DIR@/amavis-milter.sock"}
-
-start_precmd="amavismilter_precmd"
-
-# Before starting amavis-milter, remove the old milter socket if it exists.
-amavismilter_precmd()
-{
- set -- ${amavismilter_flags}
- case $2 in
- local:*)
- @RM@ -f "${2#local:}"
- ;;
- esac
-}
-
-if [ -f /etc/rc.subr -a -f /etc/rc.conf \
- -a -d /etc/rc.d -a -f /etc/rc.d/DAEMON ]; then
- load_rc_config $name
- run_rc_command "$1"
-else
- @ECHO@ -n " ${name}"
- eval ${start_precmd}
- ${command} ${amavismilter_flags} ${command_args}
-fi
diff --git a/security/amavisd-new/patches/patch-aa b/security/amavisd-new/patches/patch-aa
deleted file mode 100644
index 8f45e40a7ed..00000000000
--- a/security/amavisd-new/patches/patch-aa
+++ /dev/null
@@ -1,33 +0,0 @@
-$NetBSD: patch-aa,v 1.6 2008/07/24 13:49:22 obache Exp $
-
---- amavisd.conf.orig 2008-06-24 22:23:05.000000000 -0400
-+++ amavisd.conf 2008-06-24 22:25:53.000000000 -0400
-@@ -15,15 +15,15 @@
- # $bypass_decode_parts = 1; # controls running of decoders&dearchivers
-
- $max_servers = 2; # num of pre-forked children (2..30 is common), -m
--$daemon_user = 'vscan'; # (no default; customary: vscan or amavis), -u
--$daemon_group = 'vscan'; # (no default; customary: vscan or amavis), -g
-+$daemon_user = '@AMAVIS_USER@'; # (no default; customary: vscan or amavis), -u
-+$daemon_group = '@AMAVIS_GROUP@'; # (no default; customary: vscan or amavis), -g
-
- $mydomain = 'example.com'; # a convenient default for other settings
-
--# $MYHOME = '/var/amavis'; # a convenient default for other settings, -H
-+$MYHOME = '@AMAVIS_DIR@'; # a convenient default for other settings, -H
- $TEMPBASE = "$MYHOME/tmp"; # working directory, needs to exist, -T
- $ENV{TMPDIR} = $TEMPBASE; # environment variable TMPDIR, used by SA, etc.
--$QUARANTINEDIR = '/var/virusmails'; # -Q
-+$QUARANTINEDIR = '@AMAVIS_QUARANTINE@'; # -Q
- # $quarantine_subdir_levels = 1; # add level of subdirs to disperse quarantine
- # $release_format = 'resend'; # 'attach', 'plain', 'resend'
- # $report_format = 'arf'; # 'attach', 'plain', 'resend', 'arf'
-@@ -130,7 +130,7 @@
- # $recipient_delimiter = '+'; # undef disables address extensions altogether
- # when enabling addr extensions do also Postfix/main.cf: recipient_delimiter=+
-
--$path = '/usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin:/usr/bin:/bin';
-+$path = '@PREFIX@/sbin:@PREFIX@/bin:@LOCALBASE@/sbin:@LOCALBASE@/bin:/usr/sbin:/sbin:/usr/bin:/bin';
- # $dspam = 'dspam';
-
- $MAXLEVELS = 14;