summaryrefslogtreecommitdiff
path: root/pcr
diff options
context:
space:
mode:
authorNicolás Reynolds <apoyosis@correo.inta.gob.ar>2012-12-04 10:07:01 -0300
committerNicolás Reynolds <apoyosis@correo.inta.gob.ar>2012-12-04 10:07:01 -0300
commit1930acb377d623fef168808f189ca5c0cac9bf4d (patch)
tree7402b6e426c16f585762b2cfbf563350056cad08 /pcr
parentcd1a2ffd0e3e34edec9379423e5999c156747cc3 (diff)
downloadabslibre-1930acb377d623fef168808f189ca5c0cac9bf4d.tar.gz
abslibre-1930acb377d623fef168808f189ca5c0cac9bf4d.tar.bz2
abslibre-1930acb377d623fef168808f189ca5c0cac9bf4d.zip
MAPI support for Evolution
Diffstat (limited to 'pcr')
-rw-r--r--pcr/evolution-mapi/PKGBUILD35
-rw-r--r--pcr/openchange/PKGBUILD67
-rw-r--r--pcr/openchange/bugzilla_682449.patch191
-rw-r--r--pcr/samba4/PKGBUILD93
-rw-r--r--pcr/samba4/samba4.confd5
-rw-r--r--pcr/samba4/samba4.rc50
6 files changed, 441 insertions, 0 deletions
diff --git a/pcr/evolution-mapi/PKGBUILD b/pcr/evolution-mapi/PKGBUILD
new file mode 100644
index 000000000..851bb3c4d
--- /dev/null
+++ b/pcr/evolution-mapi/PKGBUILD
@@ -0,0 +1,35 @@
+# Maintainer: Heenry78 <henry78@gmx.at>
+# Contributor: ngoonee <ngoonee.talk@gmail.com>
+# Contributor: Marco A Rojas <marquicus@gmail.com>
+pkgname=evolution-mapi
+pkgver=3.6.2
+_gnomever=3.6
+pkgrel=1
+pkgdesc="MAPI plugin for evolution."
+arch=('i686' 'x86_64')
+url="http://www.gnome.org"
+license=('GPL3')
+depends=('evolution>=3.6.2' 'openchange>=1.0-5')
+makedepends=('intltool')
+options=(!makeflags)
+source=(http://ftp.gnome.org/pub/gnome/sources/evolution-mapi/$_gnomever/${pkgname}-${pkgver}.tar.xz)
+_prefix="/opt/samba4"
+md5sums=('4b9eb953e499fca4e1bd7dbd9bf5c0c9')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ export PKG_CONFIG_PATH=${_prefix}/samba/lib/pkgconfig:${_prefix}/lib/pkgconfig
+
+ export CFLAGS="-DHAVE_MEMCTX_ON_CAST_SPROPVALUE -DHAVE_MEMCTX_ON_CAST_MAPI_SPROPVALUE ${CFLAGS}"
+ ./configure --prefix=${_prefix}
+ unset CFLAGS
+
+ make || return 1
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+
+ make DESTDIR="$pkgdir/" install
+}
diff --git a/pcr/openchange/PKGBUILD b/pcr/openchange/PKGBUILD
new file mode 100644
index 000000000..c3e2c753f
--- /dev/null
+++ b/pcr/openchange/PKGBUILD
@@ -0,0 +1,67 @@
+# Maintainer: Michael Hansen <zrax0111 gmail com>
+# Contributor: ngoonee <ngoonee.talk@gmail.com>
+# Contributor: Adam Russell <adamlr6+arch@gmail.com>
+pkgname=openchange
+_codename=BORG
+_dlid=180
+pkgver=1.0
+pkgrel=6
+pkgdesc="Library for MAPI connectivity with Microsoft Exchange. This package was SPECIFICALLY created to support evolution-mapi and may not work for any other purpose."
+arch=('i686' 'x86_64')
+url="http://www.openchange.org"
+license=('GPL3')
+depends=('samba4>=4.0.0B1' 'popt' 'libical' 'sqlite3' 'file' 'boost' 'zlib')
+makedepends=('ccache' 'python2' 'subversion' 'docbook-xsl' 'libxslt' 'flex' 'bison' 'autoconf' 'automake')
+options=(!makeflags)
+# Releases are mirrored at http://tracker.openchange.org/projects/openchange/files
+source=("http://tracker.openchange.org/attachments/download/${_dlid}/${pkgname}-${pkgver}-${_codename}.tar.gz"
+ "bugzilla_682449.patch")
+
+md5sums=('9b57a325e90e5ad3a702ddc6e8762ab6'
+ '7521f89f8ffaa733ed72532334951b90')
+_prefix="/opt/samba4"
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}-${_codename}
+
+ patch -i ../bugzilla_682449.patch
+
+ SAVEIFS=${IFS}
+ IFS=$(echo -en "\n\b")
+ PYTHON_CALLERS="$(find ${srcdir}/${pkgname}-${pkgver}-${_codename} -name '*.py')
+$(find ${srcdir}/${pkgname}-${pkgver}-${_codename}/ -type f)
+$(find ${srcdir}/${pkgname}-${pkgver}-${_codename}/ -name 'configure.ac')"
+ sed -i -e "s|/usr/bin/env python$|/usr/bin/env python2|" \
+ -e "s|python-config$|python2-config|" \
+ -e "s|bin/python$|bin/python2|" \
+ ${PYTHON_CALLERS}
+
+ # Patch for samba4-alpha19+
+ SRC_FILES="$(find ${srcdir}/${pkgname}-${pkgver}-${_codename} -name '*.c')"
+ sed -i -e "s|#include <samba/popt.h>|#include <popt.h>|" ${SRC_FILES}
+ IFS=${SAVEIFS}
+
+ export PYTHON=/usr/bin/python2
+
+ export PKG_CONFIG_PATH="${_prefix}/samba/lib/pkgconfig:${_prefix}/lib/pkgconfig"
+ export BOOST_LIB_SUFFIX="-mt"
+ ./autogen.sh
+
+ sed -i -e "s|python-config|python2-config|g" configure
+ ./configure --prefix=${_prefix} --with-samba=${_prefix}
+ make FLEX=/usr/bin/flex BISON=/usr/bin/bison || return 1
+}
+
+package() {
+ _pyver=`python2 -c 'import sys; print(sys.version[:3])'`
+
+ cd ${srcdir}/${pkgname}-${pkgver}-${_codename}
+ make DESTDIR="$pkgdir/" install
+
+ cd ${pkgdir}/${_prefix}/lib/
+ ln -s libmapi.so libmapi.so.0
+ ln -s libocpf.so libocpf.so.0
+
+ find ${pkgdir}/${_prefix}/lib/python${_pyver}/site-packages/ -name '*.py' | \
+ xargs sed -i "s|#!/usr/bin/env python$|#!/usr/bin/env python2|"
+}
diff --git a/pcr/openchange/bugzilla_682449.patch b/pcr/openchange/bugzilla_682449.patch
new file mode 100644
index 000000000..e1b3f0983
--- /dev/null
+++ b/pcr/openchange/bugzilla_682449.patch
@@ -0,0 +1,191 @@
+Index: exchange.idl
+===================================================================
+--- exchange.idl (revision 4004)
++++ exchange.idl (working copy)
+@@ -1039,7 +1039,7 @@
+ [case(ActionType_OP_COPY)] MoveCopy_Action CopyAction;
+ [case(ActionType_OP_REPLY)] ReplyOOF_Action ReplyAction;
+ [case(ActionType_OP_OOF_REPLY)] ReplyOOF_Action ReplyOOFAction;
+- [case(ActionType_OP_DEFER_ACTION)][flag(NDR_REMAINING)] DATA_BLOB DeferAction;
++ [case(ActionType_OP_DEFER_ACTION)][flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB DeferAction;
+ [case(ActionType_OP_BOUNCE)] BounceCode BounceCode;
+ [case(ActionType_OP_TAG)] mapi_SPropValue_wrap PropValue;
+ [case(ActionType_OP_FORWARD)] ForwardDelegate_Action ForwardAction;
+@@ -1057,7 +1057,7 @@
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint16 ActionLength;
+- [subcontext(0),subcontext_size(ActionLength),flag(NDR_REMAINING)] ActionBlockData ActionBlockData;
++ [subcontext(0),subcontext_size(ActionLength),flag(NDR_REMAINING|NDR_NOALIGN)] ActionBlockData ActionBlockData;
+ } ActionBlock;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+@@ -1095,7 +1095,7 @@
+
+ typedef [public,flag(NDR_NOALIGN)] struct {
+ uint16 cValues;
+- [flag(NDR_REMAINING)]mapi_SPropValue lpProps[cValues];
++ [flag(NDR_REMAINING|NDR_NOALIGN)]mapi_SPropValue lpProps[cValues];
+ } mapi_SPropValue_array;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+@@ -1281,7 +1281,7 @@
+ // TODO: figure out if "layout" can go
+ uint8 layout;
+ // TODO: convert this to a proper structure - see if we already have one.
+- [flag(NDR_REMAINING)] DATA_BLOB prop_values;
++ [flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB prop_values;
+ } RecipientRow;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+@@ -1356,7 +1356,7 @@
+
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint8 layout;
+- [flag(NDR_REMAINING)] DATA_BLOB prop_data;
++ [flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB prop_data;
+ } GetProps_repl;
+
+ /*************************/
+@@ -1455,7 +1455,7 @@
+ typedef [flag(NDR_NOALIGN)]struct {
+ uint32 idx;
+ ulRecipClass RecipClass;
+- [subcontext(2),flag(NDR_REMAINING)] RecipientRow RecipientRow;
++ [subcontext(2),flag(NDR_REMAINING|NDR_NOALIGN)] RecipientRow RecipientRow;
+ } ModifyRecipientRow;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+@@ -1532,7 +1532,7 @@
+ uint8 handle_idx;
+ MSGFLAG_READ flags;
+ /* TEMP HACK for editing notes without crashing Outlook:
+- [flag(NDR_REMAINING)] DATA_BLOB clientdata; */
++ [flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB clientdata; */
+ } SetMessageReadFlag_req;
+
+ typedef [nodiscriminant, flag(NDR_NOALIGN)] union {
+@@ -1782,7 +1782,7 @@
+ typedef [nopush,nopull,flag(NDR_NOALIGN)] struct {
+ uint8 Origin;
+ uint16 RowCount;
+- [flag(NDR_REMAINING)]DATA_BLOB RowData;
++ [flag(NDR_REMAINING|NDR_NOALIGN)]DATA_BLOB RowData;
+ } QueryRows_repl;
+
+ /**************************/
+@@ -2394,13 +2394,13 @@
+ } ReadStream_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+- [subcontext(2), flag(NDR_REMAINING)] DATA_BLOB data;
++ [subcontext(2), flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB data;
+ } ReadStream_repl;
+
+ /*************************/
+ /* EcDoRpc Function 0x2d */
+ typedef [flag(NDR_NOALIGN)] struct {
+- [subcontext(2), flag(NDR_REMAINING)] DATA_BLOB data;
++ [subcontext(2), flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB data;
+ } WriteStream_req;
+
+
+@@ -2900,7 +2900,7 @@
+ uint16 TotalStepCount;
+ uint8 Reserved;
+ uint16 TransferBufferSize;
+- [subcontext(0),subcontext_size(TransferBufferSize),flag(NDR_REMAINING)] DATA_BLOB TransferBuffer;
++ [subcontext(0),subcontext_size(TransferBufferSize),flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB TransferBuffer;
+ } FastTransferSourceGetBuffer_repl;
+
+ /**************************/
+@@ -2982,7 +2982,7 @@
+ /* EcDoRpc Function 0x54 */
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint16 TransferBufferSize;
+- [subcontext(0),subcontext_size(TransferBufferSize),flag(NDR_REMAINING)] DATA_BLOB TransferBuffer;
++ [subcontext(0),subcontext_size(TransferBufferSize),flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB TransferBuffer;
+ } FastTransferDestinationPutBuffer_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+@@ -3075,7 +3075,7 @@
+ typedef [flag(NDR_NOALIGN)] struct {
+ uint32 ExpandedRowCount;
+ uint16 RowCount;
+- [flag(NDR_REMAINING)]DATA_BLOB RowData;
++ [flag(NDR_REMAINING|NDR_NOALIGN)]DATA_BLOB RowData;
+ } ExpandRow_repl;
+
+ /*************************/
+@@ -3184,7 +3184,7 @@
+ typedef [flag(NDR_NOALIGN)] struct {
+ boolean8 HasFinished;
+ uint16 DataSize;
+- [subcontext(0), subcontext_size(DataSize), flag(NDR_REMAINING)] DATA_BLOB Data;
++ [subcontext(0), subcontext_size(DataSize), flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB Data;
+ } ReadPerUserInformation_repl;
+
+ /*************************/
+@@ -3194,7 +3194,7 @@
+ boolean8 HasFinished;
+ uint32 DataOffset;
+ uint16 DataSize;
+- [subcontext(0), subcontext_size(DataSize), flag(NDR_REMAINING)] DATA_BLOB Data;
++ [subcontext(0), subcontext_size(DataSize), flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB Data;
+ GUID ReplGuid; /* Note: ReplGuid gets only included under specific circumstances */
+ } WritePerUserInformation_req;
+
+@@ -3364,7 +3364,7 @@
+ SendOptions SendOptions;
+ SynchronizationFlag SynchronizationFlag;
+ uint16 RestrictionSize;
+- [subcontext(0),subcontext_size(RestrictionSize),flag(NDR_REMAINING)] DATA_BLOB RestrictionData;
++ [subcontext(0),subcontext_size(RestrictionSize),flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB RestrictionData;
+ SynchronizationExtraFlags SynchronizationExtraFlags;
+ mapi_SPropTagArray PropertyTags;
+ } SyncConfigure_req;
+@@ -3542,7 +3542,7 @@
+ } MessageReadState;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+- [subcontext(2),flag(NDR_REMAINING)] DATA_BLOB MessageReadStates;
++ [subcontext(2),flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB MessageReadStates;
+ } SyncImportReadStateChanges_req;
+
+ typedef [flag(NDR_NOALIGN)] struct {
+@@ -3617,7 +3617,7 @@
+ /*************************/
+ /* EcDoRpc Function 0x90 */
+ typedef [flag(NDR_NOALIGN)] struct {
+- [subcontext(2), flag(NDR_REMAINING)] DATA_BLOB data;
++ [subcontext(2), flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB data;
+ } WriteAndCommitStream_req;
+
+
+@@ -4462,7 +4462,7 @@
+ uint32 MajorVersion;
+ uint32 MinorVersion;
+ uint32 BuildNumber;
+- [subcontext(0), subcontext_size(132), flag(NDR_NOALIGN|NDR_REMAINING)] DATA_BLOB Reserved_1;
++ [subcontext(0), subcontext_size(132), flag(NDR_REMAINING|NDR_NOALIGN)] DATA_BLOB Reserved_1;
+ uint16 ServicePackMajor;
+ uint16 ServicePackMinor;
+ uint32 Reserved_2;
+@@ -4567,7 +4567,7 @@
+ [out] uint16 rgwServerVersion[3],
+ [out] uint16 rgwBestVersion[3],
+ [in,out] uint32 *pulTimeStamp,
+- [in,subcontext(4),flag(NDR_NOALIGN|NDR_REMAINING)] mapi2k7_AuxInfo *rgbAuxIn,
++ [in,subcontext(4),flag(NDR_REMAINING|NDR_NOALIGN)] mapi2k7_AuxInfo *rgbAuxIn,
+ [in] uint32 cbAuxIn,
+ [out, length_is(*pcbAuxOut), size_is(*pcbAuxOut)] mapi2k7_AuxInfo *rgbAuxOut,
+ [in,out][range(0,0x1008)] uint32 *pcbAuxOut
+@@ -4588,7 +4588,7 @@
+
+ typedef [public,nopull] struct {
+ RPC_HEADER_EXT header;
+- [subcontext(0),flag(NDR_NOALIGN|NDR_REMAINING)] mapi_response *mapi_response;
++ [subcontext(0),flag(NDR_REMAINING|NDR_NOALIGN)] mapi_response *mapi_response;
+ } mapi2k7_response;
+
+ [public,noprint] MAPISTATUS EcDoRpcExt2(
diff --git a/pcr/samba4/PKGBUILD b/pcr/samba4/PKGBUILD
new file mode 100644
index 000000000..09c55781d
--- /dev/null
+++ b/pcr/samba4/PKGBUILD
@@ -0,0 +1,93 @@
+# Maintainer: Michael Hansen <zrax0111 gmail com>
+# Contributor: Marco A Rojas <marquicus at gmail.com>
+# Contributor: Netanel Shine <netanel at archlinux.org.il >
+# Contributor: ngoonee <ngoonee.talk@gmail.com>
+# Contributor: Adam Russell <adamlr6+arch@gmail.com>
+# Contributor: Dhananjay Sathe <dhananjaysathe@gmail.com>
+pkgname=samba4
+pkgver=4.0.0rc5
+pkgrel=1
+pkgdesc="Samba 4.0 Release Candidate"
+arch=('i686' 'x86_64')
+url="http://www.samba.org"
+license=('GPL3')
+depends=('db>=4.7' 'popt' 'libcups' 'acl' 'libldap' 'libcap>=2.16' 'pam' 'gamin' 'gnutls>=2.4.1' 'talloc' 'tdb')
+makedepends=('python2' 'docbook-xsl' 'pkg-config')
+options=(!makeflags)
+source=(http://us1.samba.org/samba/ftp/rc/samba-${pkgver}.tar.gz
+ samba4.rc samba4.confd)
+md5sums=('24d4b715a46c5f111b08b87975a27b1e'
+ '01deaef9cd21dff7586a7221d1a6d300'
+ 'e1b2671dc1d1371a3628235a818debab')
+_prefix="/opt/samba4"
+
+build() {
+ cd ${srcdir}/samba-${pkgver}
+
+ # change to use python2
+ SAVEIFS=${IFS}
+ IFS=$(echo -en "\n\b")
+ PYTHON_CALLERS="$(find ${srcdir}/samba-${pkgver} -name '*.py')
+$(find ${srcdir}/samba-${pkgver} -name 'wscript*')
+$(find ${srcdir}/samba-${pkgver} -name 'configure.ac')
+$(find ${srcdir}/samba-${pkgver} -name 'upgrade_from_s3')
+$(find ${srcdir}/samba-${pkgver}/buildtools -type f)
+$(find ${srcdir}/samba-${pkgver}/source4/scripting -type f)"
+ sed -i -e "s|/usr/bin/env python$|/usr/bin/env python2|" \
+ -e "s|python-config|python2-config|" \
+ -e "s|bin/python|bin/python2|" \
+ ${PYTHON_CALLERS}
+ IFS=${SAVEIFS}
+
+ export PYTHON=/usr/bin/python2
+
+ cd ${srcdir}/samba-${pkgver}/lib/tdb
+ ./configure --prefix=${_prefix}/samba
+ make
+ make DESTDIR="$pkgdir/" install
+
+ cd ${srcdir}/samba-${pkgver}/lib/tevent
+ ./configure --prefix=${_prefix}/samba
+ make
+ make DESTDIR="$pkgdir/" install
+
+ cd ${srcdir}/samba-${pkgver}/lib/ldb
+ ./configure --prefix=${_prefix}/samba
+ make
+ make DESTDIR="$pkgdir/" install
+
+ cd ${srcdir}/samba-${pkgver}
+ ./configure --prefix=${_prefix}
+ make
+}
+
+package() {
+ _pyver=`python2 -c 'import sys; print(sys.version[:3])'`
+
+ cd ${srcdir}/samba-${pkgver}
+ make DESTDIR="$pkgdir/" install
+
+ install -d ${pkgdir}/etc/ld.so.conf.d
+ echo "${_prefix}/samba/lib" > ${pkgdir}/etc/ld.so.conf.d/samba4.conf
+
+ cd ${pkgdir}/${_prefix}/lib/
+ ln -s samba/libldb-samba4.so.0 libldb.so
+ ln -s samba/libldb-samba4.so.0 libldb.so.0
+
+ find ${pkgdir}/${_prefix}/lib/python${_pyver}/site-packages/ -name '*.py' | \
+ xargs sed -i "s|#!/usr/bin/env python$|#!/usr/bin/env python2|"
+ find ${pkgdir}/${_prefix}/bin ${pkgdir}/${_prefix}/sbin -type f -executable | \
+ xargs sed -i "s|#!/usr/bin/env python$|#!/usr/bin/env python2|"
+
+ # Make admin scripts look in the right place for the samba python module
+ for script in sbin/samba_dnsupdate sbin/samba_kcc sbin/samba_spnupdate \
+ sbin/samba_upgradeprovision sbin/samba_upgradedns bin/samba-tool
+ do
+ sed -i "/^sys\.path\.insert/ a\
+sys.path.insert(0, '${_prefix}/lib/python${_pyver}/site-packages')" \
+ ${pkgdir}/${_prefix}/${script}
+ done
+
+ install -D -m755 ${srcdir}/samba4.rc ${pkgdir}/etc/rc.d/samba4
+ install -D -m644 ${srcdir}/samba4.confd ${pkgdir}/etc/conf.d/samba4
+}
diff --git a/pcr/samba4/samba4.confd b/pcr/samba4/samba4.confd
new file mode 100644
index 000000000..3c29c49cf
--- /dev/null
+++ b/pcr/samba4/samba4.confd
@@ -0,0 +1,5 @@
+#
+# Additional parameters to be passed to Samba4
+#
+
+SAMBA4_ARGS=""
diff --git a/pcr/samba4/samba4.rc b/pcr/samba4/samba4.rc
new file mode 100644
index 000000000..73d09fe30
--- /dev/null
+++ b/pcr/samba4/samba4.rc
@@ -0,0 +1,50 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+[ -f /etc/conf.d/samba4 ] && . /etc/conf.d/samba4
+
+function call_samba4() {
+ /opt/samba4/sbin/samba -D $SAMBA4_ARGS
+}
+
+case "$1" in
+ start)
+ stat_busy "Starting Samba4 Server"
+ if [ ! -x /opt/samba4/var ] ; then
+ install -m755 -d /opt/samba4/var
+ fi
+ if [ ! -x /opt/samba4/var/run ] ; then
+ install -m755 -d /opt/samba4/var/run
+ fi
+ PID=`pidof -o %PPID /opt/samba4/sbin/samba`
+ [ -z "$PID" ] && call_samba4
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ add_daemon samba4
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping Samba4 Server"
+ PID=`pidof -o %PPID /opt/samba4/sbin/samba`
+ [ -z "$PID" ] || kill $PID &> /dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm /opt/samba4/var/run/samba.pid &> /dev/null
+ rm_daemon samba4
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ sleep 1
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0