Package-Manager: portage-2.2.0_alpha188
RepoMan-Options: --force
This commit is contained in:
Mario Fetka 2013-10-12 13:19:31 +02:00
parent aa026fbb56
commit 0ba3444be5
14 changed files with 1432 additions and 2 deletions

View File

@ -2,6 +2,22 @@
# Copyright 1999-2013 Gentoo Foundation; Distributed under the GPL v2
# $Header: $
*zarafa-7.1.7.42779 (12 Oct 2013)
12 Oct 2013; Mario Fetka <mario.fetka@gmail.com>
+files/7.1.7.42779/Datux-sendas.patch,
+files/7.1.7.42779/Datux-spamhook.patch,
+files/7.1.7.42779/zarafa-01-oss-configure.patch,
+files/7.1.7.42779/zarafa-06-sizeof-char.patch,
+files/7.1.7.42779/zarafa-22-gcc47.patch,
+files/7.1.7.42779/zarafa-23-newclucene.patch,
+files/7.1.7.42779/zarafa-24-undefined-behavior.patch,
+files/7.1.7.42779/zarafa-7.0.3-sysconfig2confd-1.patch,
+files/7.1.7.42779/zarafa-7.1.4-tcmalloc.patch,
+files/7.1.7.42779/zarafa-7.1.5-gentoo-swig1.3.patch,
+zarafa-7.1.7.42779.ebuild, zarafa-7.1.5.42059.ebuild:
Bump
15 Aug 2013; Mario Fetka <mario.fetka@gmail.com>
+files/7.1.5.42059/zarafa-01-oss-configure.patch,
+files/7.1.5.42059/zarafa-06-sizeof-char.patch,

View File

@ -13,6 +13,16 @@ AUX 7.1.5.42059/zarafa-35-embedded-mysql.patch 1867 SHA256 df3abb11aae67901251b0
AUX 7.1.5.42059/zarafa-7.0.3-sysconfig2confd-1.patch 4843 SHA256 c9196a886f8435dcb2f82b92c6ee4769daf1eeb76b2fdfad4980a88cff461359 SHA512 6b683018a834ca666b0c96226a63280f3a3cde5e1e392e1e9f5681fa870669bbff27ebd719390aeebf670bcf3ba7b05ef0c27a77a039c0099fdc97dec4f0f36d WHIRLPOOL dd8e19057dc40785bee25846b399fec8ec5b61fd43586361a5131ef2a9f3e1dcd36db8290e7a0695b6a0a2fa01dca42581dc8e517bafe9290008f3ec38c3a372
AUX 7.1.5.42059/zarafa-7.1.4-tcmalloc.patch 679 SHA256 3f982a2a37a42092a4878c7d7af0b235ae8327f26c0f5fe0ea253cbfcc236018 SHA512 086cbabb7d87ee3218de76f3f42cf3fcd9e1abdc289c6a9280556e3ef8812142da68dadb2e0d4da3355382fea27f3f3f3a37d943ef926f064d4bc9f0884c78de WHIRLPOOL 8e1d57b82d896127b384159ebb4b19457a3431250af1029d5cf214f5492f8f78b3c3baa8cf12baa39b2dbeddfa5672c4d5ce97b6a44bf230469d6074a02c829b
AUX 7.1.5.42059/zarafa-7.1.5-gentoo-swig1.3.patch 621 SHA256 12666f1a041d4dde86577860c96fd7ca67f6e2ce33b981e8f57ac336bba48f19 SHA512 419b4f0b12ab18ec140e2d829a1355236f2fbecfa4c26262c7044142a6c56299e053cff4a21a50e5793b45419431c078080f8ff4dc715ad89725aa9921e320fa WHIRLPOOL 8adbad8396d1151942ea78daf52a11f050d59fabe476159afac86c7178e01733cf9848a163031663fdbf7858994c569318495181a196e710a06d54b621185908
AUX 7.1.7.42779/Datux-sendas.patch 2439 SHA256 c2692144549cf5b0aad5aea3199c7655db3d6d8d62c8fc65a0333f7def98f5dc SHA512 64e3f43d703265d8aa9d6e2632fac68d1571409414dd48781593855f7def5f2d034501febf626bd809a748eaa8cff743f5e268a71ecd61dd41505f0157105f3e WHIRLPOOL 32fdb7136ee25d7381d3dbd690ca375e01ae097a521a2a42bdd90434b5c7b815e8eddb86ae7958c7be694107c693a543320e5c5455326fa0df618f3c452de048
AUX 7.1.7.42779/Datux-spamhook.patch 8890 SHA256 e67e6178d27f78530b727ca7cc4e96cd1e9e3173fa20547cd132464f70d207f5 SHA512 5e11dc0940441e208d877a31d74ba077abd388982859e7c3d6c0f42551ad362d0e9991d2a6ea2b62d794ea84564222ef376025a2b50e60293684cdbd5ec566a4 WHIRLPOOL 7751cb4ceec3abf6261917fa518486fc4c534a6b9888e3fa091f9d86832cac229bb6ace87a33b20de7c68d7de7ac947826e3f360d1c185170587ab287b1bcc56
AUX 7.1.7.42779/zarafa-01-oss-configure.patch 1759 SHA256 8933fd463506d703358e9829177afd71c15f34f8d424113c60a414ed406bcd24 SHA512 18d3cb4fb68df966372a7f7670c9f12627395387364adc66947ad04b5b086d057ace980d6bd064683a5a6d851d19e9f2b216ec4c54300491dbaf8bca684fedd3 WHIRLPOOL a46eb5370e53780800735be46dfc257d4612d0429145154dc2792b3556ae6dc4478c4c35db2c01a53925f1c990665cd9704f926b885b8f16b2279a77129fc566
AUX 7.1.7.42779/zarafa-06-sizeof-char.patch 17312 SHA256 1d9b50aacc13e88ae650ffbdbf5470d1d9fc747c920afe082b2dd4108491443b SHA512 c92c81dd0a6cb241611af7247d01af508ce2c72238c0fab00a3d042c2002d941542137acf080015e3acb820e6f2998efde16da7b53823f43d13f55d8189b25cc WHIRLPOOL 5577193f7c9f3160cb6da385b4ca7f856f75e3336e3b42e3a0748b7c95fcf214bc3d6c60e32c36598d501745253311920fb9dbc70f4e16bec5b0ce61c888e3d0
AUX 7.1.7.42779/zarafa-22-gcc47.patch 6805 SHA256 00a70d2e2b73ff81081302247e7a2af59573058ade9e3b9508fc6d997d5e585f SHA512 33e7279e2f451df7dfee9ffcb4dcbbc74349cf9ab1a85f3f4f9b033bf54d3a9fb7b893f6738c6bad573983cce955699ec1320f4fd8f061fe5a9d96d48b168761 WHIRLPOOL f5311a55639094cd5986a514c4892c23fedb31845f7660b1ab3421f00c77f8a4b96ba052f6918b84032c2ec6fdfa5df7f0f7e34f91be6db539350bb041b8db3c
AUX 7.1.7.42779/zarafa-23-newclucene.patch 6766 SHA256 794e0b8db4d8775a34d04a758aeb19ae6c50255955d78a2e0ecbadee8a7add50 SHA512 96d399ee72347d35f5b580f7760a729955d746937a0f56347d1558405064642a84803e39322816faa865ce0bf80aa5a6d576f3efc88bb81c8292e2f7c411608c WHIRLPOOL 781ee12b336f5410049b6454f2c671c9ec7e83f30684f4263814663bb4ae840e4cd24f89126cb06742ef184d1225497b37451305711c70157084415e624bd044
AUX 7.1.7.42779/zarafa-24-undefined-behavior.patch 1002 SHA256 f3156cd7f17a7c3feaa66cbb52f8d4d1a3d22135054d6131cb76784b2f2dcb0b SHA512 3b67835052cfffa071e0f5a06de9b12c5018ced84a4bc48ada54d5eb1da2fa63fa7274882e70b43fcc3780c74bd6b216fdf26fa38a4633238a8dae0ca53e39bc WHIRLPOOL 6530d5caef06c007eb7b0941c4c6274cfd1dc1860f88a8037f540b7626dca90147ffd9595fad8c74015283a7b466c9450e8f7eb621673b1743eafa9502a23edd
AUX 7.1.7.42779/zarafa-7.0.3-sysconfig2confd-1.patch 4843 SHA256 c9196a886f8435dcb2f82b92c6ee4769daf1eeb76b2fdfad4980a88cff461359 SHA512 6b683018a834ca666b0c96226a63280f3a3cde5e1e392e1e9f5681fa870669bbff27ebd719390aeebf670bcf3ba7b05ef0c27a77a039c0099fdc97dec4f0f36d WHIRLPOOL dd8e19057dc40785bee25846b399fec8ec5b61fd43586361a5131ef2a9f3e1dcd36db8290e7a0695b6a0a2fa01dca42581dc8e517bafe9290008f3ec38c3a372
AUX 7.1.7.42779/zarafa-7.1.4-tcmalloc.patch 679 SHA256 3f982a2a37a42092a4878c7d7af0b235ae8327f26c0f5fe0ea253cbfcc236018 SHA512 086cbabb7d87ee3218de76f3f42cf3fcd9e1abdc289c6a9280556e3ef8812142da68dadb2e0d4da3355382fea27f3f3f3a37d943ef926f064d4bc9f0884c78de WHIRLPOOL 8e1d57b82d896127b384159ebb4b19457a3431250af1029d5cf214f5492f8f78b3c3baa8cf12baa39b2dbeddfa5672c4d5ce97b6a44bf230469d6074a02c829b
AUX 7.1.7.42779/zarafa-7.1.5-gentoo-swig1.3.patch 621 SHA256 12666f1a041d4dde86577860c96fd7ca67f6e2ce33b981e8f57ac336bba48f19 SHA512 419b4f0b12ab18ec140e2d829a1355236f2fbecfa4c26262c7044142a6c56299e053cff4a21a50e5793b45419431c078080f8ff4dc715ad89725aa9921e320fa WHIRLPOOL 8adbad8396d1151942ea78daf52a11f050d59fabe476159afac86c7178e01733cf9848a163031663fdbf7858994c569318495181a196e710a06d54b621185908
AUX junklearn.dspam 924 SHA256 5060aa1c0fd3e103c0243f5372ec4a393d4aebc7ed7c69a9475adead50d6b37e SHA512 43321b5245a5a6b6032fe8f34382826dbc3630e03ff43eda5c41d5782e0df72a2e784638e3047ba141141e4d3d99ef11e555117fb77fc2555e3ce07c7b28f65c WHIRLPOOL 983c2d5c87145a38bb87044cb6b9050092fa7c05bfa6de5317890103663550a86ccdb5af71966e86062943f5e39b6fbb990617048380aab94920602ed5b9d214
AUX zarafa-bash-completion.sh 9045 SHA256 e3ad01ca797ef1aa428d17184ab16704faed1f1c6878113c0ff570b49cb788d6 SHA512 261dcb9cfdfe84920d666f4719fbf5c19000dd10295852a6121142d3e7fa9fe564a2b09149f93cba5fc1cf4630998b3227269b7c4e7ec245e4346b750b8171eb WHIRLPOOL dfacb2a9f1847f40fd02afe4813d97ec9be8a4fd83466e3d5b2ae32de31bd94a450b4fe9a7e6049cecb593b0ddd80ee37165400b0a43617b76f19170ef74931e
AUX zarafa-dagent.confd 185 SHA256 5e142b9a6310197cf744a83bf8a134472ed6b497a7b477398f25d14e898480bc SHA512 8845cd227737667df9c96f56d92af2819d3ebb1580dc3399beda140992d10d23688fc50fbfd44a8e3e3bfa9e7e2fbdac0339ddc09b5544e6e7bf84b49f5cbdbc WHIRLPOOL cf3a9898babbc3576434bac86ba02da6aa4c1e67fc4fb1d5f473ad602dc9e7671385345f661ce9c86becf728bc9176ad9ca96b0972624901ac1c1a420c972fe9
@ -51,6 +61,10 @@ DIST libssl1.0.0_1.0.1-4ubuntu5.10_i386.deb 1008434 SHA256 bef5216ecf59bd36317a2
DIST zcp-7.1.5-42059-ubuntu-12.04-i386-free.tar.gz 44539714 SHA256 cbe701272843c739614a2d30b4de728295694425ffd92bbbaf807cb5f4705c4a SHA512 75ee8f5c74cab5eaa86faf192dc4028c0461925d4e26ab2be6f6ed8a697b9a6fac2282e952b4f265107c19f00383471fa8db837b0a566e2d12ebcebc3a176c74 WHIRLPOOL 46e8dfc3f745d35e259b3fead70c640131be1482f1613023a55a76a008de82adcba54c0bf046dbc4bb5b108537ddcd3897e437b061416c60fe92ab749d22ae76
DIST zcp-7.1.5-42059-ubuntu-12.04-x86_64-free.tar.gz 44326614 SHA256 82ea3366b23fe74efbd92be2c282fba764c0690af4cce9306a4ea2ed57c8c491 SHA512 564650dd90e5b7f0509a339a934088b93dbcdc32cb2e13ead2cb13b580d7f244ba2bccd44c265ff1bf3ff0ae691a12fe27978d19784da723a90485d5f10542c9 WHIRLPOOL 6252231620d69a83a7ad9a75dc123f78d8e37be09e2a85c729af839894ef70f2b6703221b408db3395fba594152d45fb8a49fc69bfcc699a1593ace9da2214f9
DIST zcp-7.1.5.tar.gz 6473028 SHA256 d7a28e73672d3ef8da971a486536231b91b4d55b88544d519c19a440ff1ef3e8 SHA512 2220e2c4c52b2ab4d9409a696617a235866ecd099b108411497d075c551293f5526ad0a914e2804236357ac31d67c59cc725ac661c219cd44c30d0656e8cfbcc WHIRLPOOL f65c589404ca6ea625658bb157482256d30abb35844a6d3a7781e16de868ba4dc0a9cec0cf95da82db16cbee8b92d98e08966c2d2ae14eddcc597a839bdc82b6
EBUILD zarafa-7.1.5.42059.ebuild 7514 SHA256 b384c93f87fe810a5e6ba0dc3c7c7d67c1b94501699c465916b11d756186b957 SHA512 76c1ef49fc14d483957602124a50130499dce33e3c413d7bacd8b236fe221f0ecc87b4766a71a0c97b77bd380be3193edc1a94322044dd4341a3acfcfa8ec226 WHIRLPOOL 01b1a73a2e3c8b0ff3047135b4415496b1aee9e551c2d529ebab48fc85ce22e3df7225fcd885f159cce1cdfe39fdb77fd64bfd057189fc8d6ec58dbcc1a2fece
MISC ChangeLog 24404 SHA256 ea83ae817e5a0ebcb4bca458907e0b6b054a5350620db5c14b3b89197ce798f3 SHA512 ecc6ea04150adefa3fd299a7fe9bce2c8222552f0934a00b3f731615a40af61d9edc648058bdce7a1b8d95b00b85993e819e8a6acc8775b17b1112275ecde155 WHIRLPOOL 0a94a57a7d317354868f2291ad6ff82e679f016656c1497e5e881b75172db16a5354fe8948ba24c1f45809dd77f05af25bb2ddc6b27ab9ad854d57587d7daaba
DIST zcp-7.1.7-42779-ubuntu-12.04-i386-free.tar.gz 44672059 SHA256 2fe8019ab36661e59840e24fae28689fcd1567771747df74ca607d98d4e28750 SHA512 869eb77c43ab421d012efaf77e5e6de1c5eee645423a966152473ca78864e4be60a825d6e6988a455da2aeabc1e34baffec2be9afeaf381430b6fab1e0b87337 WHIRLPOOL e9f202377c82eb46bf20b1dd0035f8361bc2d2af672c47a23b1e6414ba076737aff40a22aac5466d01824d316ac4383fa2e838bee440e4c4dc0002cc334a3e34
DIST zcp-7.1.7-42779-ubuntu-12.04-x86_64-free.tar.gz 44458878 SHA256 fec8a131a4b431b2d261ca0cf4bc28e7891805621b579beff828d22e947833ce SHA512 8b452f0b6b3d0c4ce393875de2b536b01f052efafccd978832fbac99d41100813f8aea45445b450d1924d43dc2d8824e1f4033f9a4c996b7eb3df2c049888372 WHIRLPOOL af17ca0fd7f96d41bb451ed7b754f89c29fec1ff039ad8a61ceb69188a4e8f0f97ee39192e4720d2e4a29fced42d0dd2aaa711b102706f82bc337bd165976dc3
DIST zcp-7.1.7.tar.gz 6458814 SHA256 61aa2fb1180e061afc733e1b911ae08aa7c923be8759af4e3b5bcdc851be108e SHA512 cd631d87b58f7131ad3865e8dd89f92c236d48651375d9443a67208768954bae43f3a1a332b587a601948b19ec38c4317df6164110c9cb64e911d7388ffb2d1b WHIRLPOOL 3ffb588d016a8e41e642e7619fe77bfdb1128bf8385f8ab809534b89617a941f70af529fc7573c7efebba60aac65b7e6131d910ddf8d632736a5b40e72a3dbbe
EBUILD zarafa-7.1.5.42059.ebuild 7515 SHA256 adaf2c5273e36ade2f8fdbf1ff482dd86dee4f7c065a2381a7f6427cff24db9a SHA512 ceece57ed8df3cf3bf4a539da0f69f1f796de8501cb1a600b0cfb9f2ee613c8b427433f51f62244c39820fff9320d7a0d2a719eca4506774986dec9c2973cd36 WHIRLPOOL bdd33cad7e3d2601d40a8e24be46933a60893c8b8630bbbcb10451728fccb7e5ed505c2a6bfa09960741616a2362b2537a467526906ddb8d12b85b7ddefed54c
EBUILD zarafa-7.1.7.42779.ebuild 7545 SHA256 9b65b5a06070f0ab321cac04fb71b77cab78da22fa9cdf72e3b81931012881ce SHA512 33d873271fb9738daa1176589bfced77e868d93612ad7cfe56b97af825a9e776f6d34a1676dc0a75f0afba764493a09fefea4700490193d1df5ebad500b66c06 WHIRLPOOL 59353a71b385a1d46ad551aca674814001ea1380168b98b2fa1bc32bcf9916657b0a5918957eb09384b0d1de02610d07fc184bc827fea1451b2ebad4321a7ece
MISC ChangeLog 25056 SHA256 9fb5ff1457156c2304ebe940d3c086a24c734f86dc3621ee7fa52d2b1aefd584 SHA512 ea61ae5d59a861f6858b010c48a4e8d9eceb2e690c121c1071be2b9ef54fa736b8fd95f513693380ee3779ff1d94b14979f235d8a8e753a3697a2c84c2a4c86c WHIRLPOOL 570189b698f296f7e7b249b883a58ccd96704e9ed89395a2243d0b076feb45923a096d1511f83d920c4417e830c184d7b918b8476933bae316b2abdab0a044c1
MISC metadata.xml 1238 SHA256 2c13f98be5fa8bdaf21ac86bcd00bbeb8944df5615de0cfce35ae4c00ef4b4d5 SHA512 d94394e853ce7bd9109322f37ab5d3526e2bbc4a59ac02d0b66e9d952d221a06ae1c38b6de5cdb142b2b09ac602a57ff03f0525efbbc7b8f33f9662ca42a5dd5 WHIRLPOOL 482453b974eaca6506c4503f49c5c55195790e9b47f19a885d551fa535445104fbb7bc93dc4f30f7faf545f619594fa04d9a8071c21eb55995fef4f7380f55b9

View File

@ -0,0 +1,47 @@
--- spooler/mailer.cpp.ori 2011-07-03 15:38:10.162737725 +0200
+++ spooler/mailer.cpp 2011-07-03 15:39:14.362790762 +0200
@@ -2172,6 +2172,8 @@
HrGetOneProp(lpMessage, PR_AUTO_FORWARDED, &lpAutoForward) == hrSuccess && lpAutoForward->Value.b)
{
bAllowSendAs = true;
+ } else if (strcmp(g_lpConfig->GetSetting("always_send_as"), "yes") == 0) {
+ bAllowSendAs = true;
} else {
hr = HrGetOneProp(lpUserStore, PR_MAILBOX_OWNER_ENTRYID, &lpPropOwner);
--- spooler/Spooler.cpp.ori 2011-07-03 15:46:25.366770639 +0200
+++ spooler/Spooler.cpp 2011-07-03 15:46:45.716172033 +0200
@@ -1118,6 +1118,7 @@
{ "fax_domain", "", CONFIGSETTING_RELOADABLE },
{ "fax_international", "+", CONFIGSETTING_RELOADABLE },
{ "always_send_delegates", "no", CONFIGSETTING_RELOADABLE },
+ { "always_send_as", "no", CONFIGSETTING_RELOADABLE },
{ "always_send_tnef", "no", CONFIGSETTING_RELOADABLE },
{ "always_send_utf8", "no", CONFIGSETTING_RELOADABLE },
{ "allow_redirect_spoofing", "yes", CONFIGSETTING_RELOADABLE },
--- php-webclient-ajax/client/modules/readmailitemmodule.js.ori 2011-06-22 00:02:22.000000000 +0200
+++ php-webclient-ajax/client/modules/readmailitemmodule.js 2011-07-24 01:19:03.454049593 +0200
@@ -479,7 +479,7 @@
dhtml.addEvent(this, recipientItemSenderRepresentation, "click", eventReadmailClickEmail);
dhtml.addEvent(this, recipientItemSenderRepresentation, "contextmenu", eventReadmailAddressContextMenu);
- dhtml.addElement(fromElement,"span","emailaddress","", NBSP+_("on behalf of")+NBSP);
+ //dhtml.addElement(fromElement,"span","emailaddress","", NBSP+_("on behalf of")+NBSP);
}
var recipientItemSenderRepresentation = dhtml.addElement(fromElement,"a","emailaddress","senderrepresentatation_label",sender_representation);
--- installer/linux/spooler.ori 2011-07-03 14:41:32.934761391 +0200
+++ installer/linux/spooler.cfg 2011-07-02 18:29:54.958164996 +0200
@@ -76,7 +76,11 @@
# delegates (other user than yourself in the From: header)
# In installations before 6.20, this value was always 'yes'.
# IMPORTANT: This feature overrides "send-as" functionality.
-always_send_delegates = no
+always_send_delegates = yes
+
+# Set this value to 'yes' to let the spooler always send emails even
+# if the from emailadres someone elses
+always_send_as = yes
# Set this value to 'no' if you do NOT want to allow redirected e-mails
# being sent with their original 'FROM' header

View File

@ -0,0 +1,219 @@
diff -ru zarafa-7.1.4/provider/libserver/ZarafaCmd.cpp zarafa-7.1.4.spamhook/provider/libserver/ZarafaCmd.cpp
--- zarafa-7.1.4/provider/libserver/ZarafaCmd.cpp 2013-02-28 17:13:17.000000000 +0100
+++ zarafa-7.1.4.spamhook/provider/libserver/ZarafaCmd.cpp 2013-04-15 11:34:45.018632455 +0200
@@ -84,6 +84,7 @@
#include "StreamUtil.h"
#include "CommonUtil.h"
#include "StorageUtil.h"
+#include "UnixUtil.h"
#include "ZarafaICS.h"
@@ -7655,6 +7656,179 @@
bool bMoved;
}COPYITEM;
+//SPAM HOOK
+//This function parses an e-mail to the /etc/zarafa/userscripts/junklearn script. With 2 arguments:
+//ham or spam
+//message id
+//and pipes the mail header to the script.
+//This script wil be inhaled by MoveObjects();
+/////////////////////////////////////////////////////////////////////////////////////////////////
+int SpamHook(ECDatabase *lpDatabase,int ulId, unsigned int ulDestFolderId)
+{
+
+ ALLOC_DBRESULT();
+ ECRESULT er = erSuccess;
+ std::string shScriptPath = g_lpSessionManager->GetConfig()->GetSetting("junklearn_script");
+ string shMailStatus;
+ entryId* junkFolderEntryId;
+ entryId* wasteBucketEntryId;
+ int shNumRows;
+
+ //dont do anything if the junklearn script doesnt exist:
+ int fCheck=open(shScriptPath.c_str(), O_RDONLY);
+ if (fCheck==0) {
+ g_lpSessionManager->GetLogger()->Log(EC_LOGLEVEL_INFO,"SpamHook: skipping, script "+shScriptPath+" not found");
+ er=erSuccess;
+ goto exit;
+ }
+ close(fCheck);
+
+ //Get store object ID via message object id
+ unsigned int storeId;
+ er = g_lpSessionManager->GetCacheManager()->GetStore(ulId,&storeId,NULL);
+ if(er != erSuccess)
+ {
+ g_lpSessionManager->GetLogger()->Log(EC_LOGLEVEL_WARNING,"SpamHook: error while retrieve source folder.");
+ goto exit;
+ }
+
+ //get deleted items folder entry id
+ strQuery="SELECT val_binary FROM properties WHERE hierarchyid="+stringify(storeId)+" AND tag="+stringify(PROP_ID(PR_IPM_WASTEBASKET_ENTRYID));
+ er = lpDatabase->DoSelect(strQuery, &lpDBResult);
+ if(er != erSuccess) {
+ g_lpSessionManager->GetLogger()->Log(EC_LOGLEVEL_WARNING,"SpamHook: error while retrieve wastebasket entryid from DB.");
+ goto exit;
+ }
+ lpDBRow = lpDatabase->FetchRow(lpDBResult);
+ lpDBLen = lpDatabase->FetchRowLengths(lpDBResult);
+ shNumRows=lpDatabase->GetNumRows(lpDBResult);
+ if(shNumRows<1)
+ {
+ g_lpSessionManager->GetLogger()->Log(EC_LOGLEVEL_WARNING,"SpamHook: error while retrieve wastebasket entryid, empty DB result.");
+ goto exit;
+ }
+
+ //Convert 'deleted items' entryid to objectid.
+ wasteBucketEntryId = new entryId[0];
+ wasteBucketEntryId->__ptr=(unsigned char*)lpDBRow[0];
+ wasteBucketEntryId->__size=lpDBLen[0];
+ unsigned int wasteBucketFolderId;
+ er=g_lpSessionManager->GetCacheManager()->GetObjectFromEntryId(wasteBucketEntryId,&wasteBucketFolderId);
+ delete wasteBucketEntryId;
+ if(er!=erSuccess)
+ {
+ g_lpSessionManager->GetLogger()->Log(EC_LOGLEVEL_WARNING,"SpamHook: error while retrieve wastebasket entryid, converting to objectID.");
+ goto exit;
+ }
+
+ //Get 'junk folder' entryId.
+ FREE_DBRESULT();
+ strQuery="SELECT val_binary FROM receivefolder LEFT JOIN mvproperties ON receivefolder.objid=mvproperties.hierarchyid WHERE receivefolder.storeid="+stringify(storeId)+" AND receivefolder.messageclass='IPC' AND mvproperties.tag="+stringify(PROP_ID(PR_ADDITIONAL_REN_ENTRYIDS))+" AND mvproperties.orderid=4";
+ er = lpDatabase->DoSelect(strQuery, &lpDBResult);
+ if(er != erSuccess) {
+ g_lpSessionManager->GetLogger()->Log(EC_LOGLEVEL_WARNING,"SpamHook: error while retrieve junkfolder entryids from DB.");
+ goto exit;
+ }
+ lpDBRow = lpDatabase->FetchRow(lpDBResult);
+ lpDBLen = lpDatabase->FetchRowLengths(lpDBResult);
+ shNumRows=lpDatabase->GetNumRows(lpDBResult);
+ if(shNumRows<1)
+ {
+ g_lpSessionManager->GetLogger()->Log(EC_LOGLEVEL_WARNING,"SpamHook: error while retrieve junkfolder entryid, empty DB result.");
+ goto exit;
+ }
+
+ //Convert 'junk folder' entryid to objectid.
+ junkFolderEntryId = new entryId[0];
+ junkFolderEntryId->__ptr=(unsigned char*)lpDBRow[0];
+ junkFolderEntryId->__size=lpDBLen[0];
+ unsigned int junkFolderId;
+ er=g_lpSessionManager->GetCacheManager()->GetObjectFromEntryId(junkFolderEntryId,&junkFolderId);
+ delete junkFolderEntryId;
+ if(er!=erSuccess)
+ {
+ g_lpSessionManager->GetLogger()->Log(EC_LOGLEVEL_WARNING,"SpamHook: error while retrieve junkfolder entryid, converting to objectID.");
+ goto exit;
+ }
+
+ //Get source folder object ID. (Actually we should check if mail came from subfolders in the 'deleted items folder', which I think never happens.)
+ unsigned int srcFolderId;
+ er=g_lpSessionManager->GetCacheManager()->GetParent(ulId,&srcFolderId);
+ if(er!=erSuccess)
+ {
+ g_lpSessionManager->GetLogger()->Log(EC_LOGLEVEL_WARNING,"SpamHook: error while retrieve src folder id.");
+ goto exit;
+ }
+
+ //now we can determine if object being moved from or to the junkfolder
+ //if destination folder is junk, mark as spam
+ if(ulDestFolderId==junkFolderId)
+ shMailStatus="spam";
+ else
+ {
+ //if destination folder is not TRASH and de source folder is JUNK, mark as ham
+ if(ulDestFolderId!=wasteBucketFolderId && srcFolderId==junkFolderId)
+ shMailStatus="ham";
+ else
+ //its just a normal movement, so do nothing.
+ goto exit;
+ }
+
+ //Get the mail from the DB.
+ FREE_DBRESULT();
+ strQuery="SELECT val_string FROM properties WHERE tag="+stringify(PROP_ID(PR_TRANSPORT_MESSAGE_HEADERS))+" AND hierarchyid= "+stringify(ulId);
+ er = lpDatabase->DoSelect(strQuery, &lpDBResult);
+ if(er != erSuccess) {
+ g_lpSessionManager->GetLogger()->Log(EC_LOGLEVEL_WARNING,"SpamHook: db error while retrieve mail header.");
+ goto exit;
+ }
+
+ lpDBRow = lpDatabase->FetchRow(lpDBResult);
+ shNumRows=lpDatabase->GetNumRows(lpDBResult);
+
+ if(shNumRows<=0) {
+ g_lpSessionManager->GetLogger()->Log(EC_LOGLEVEL_WARNING,"SpamHook: warning mail header empty or this object is no e-mail");
+ goto exit;
+ }
+
+ {
+ //now its time to open the spamhook script and pass the mail to it:
+ shScriptPath=shScriptPath+" "+shMailStatus+" "+stringify(ulId);
+ int ulFpWrite = -1;
+ int ulFpRead = -1;
+ int ulCommandRetval;
+
+ //we asume failure, unless we make it all the way though the script
+ er=ZARAFA_E_UNKNOWN;
+
+ pid_t ulCommandPid = unix_popen_rw(g_lpSessionManager->GetLogger(), shScriptPath.c_str(), &ulFpWrite, &ulFpRead, NULL, NULL, true, false);
+ if (ulCommandPid <= 0) {
+ g_lpSessionManager->GetLogger()->Log(EC_LOGLEVEL_WARNING,"SpamHook: error opening subprocess.");
+ goto exit;
+ }
+
+ //pass the data to the subprocess:
+ write(ulFpWrite, lpDBRow[0], strlen(lpDBRow[0]));
+ ulCommandRetval=unix_pclose(ulFpRead, ulFpWrite, ulCommandPid);
+
+ //subprocess is done, check results
+ if (ulCommandRetval<0) {
+ g_lpSessionManager->GetLogger()->Log(EC_LOGLEVEL_WARNING,"SpamHook: error "+shScriptPath+" exits with: "+stringify(WEXITSTATUS(ulCommandRetval)));
+ goto exit;
+ }
+ }
+
+ g_lpSessionManager->GetLogger()->Log(EC_LOGLEVEL_INFO,"SpamHook: "+shScriptPath+" successfully executed.");
+ er=erSuccess;
+
+ exit:
+ // Free database results
+ FREE_DBRESULT();
+
+ return er;
+}
+
+
// Move one or more messages and/or moved a softdeleted message to a normal message
ECRESULT MoveObjects(ECSession *lpSession, ECDatabase *lpDatabase, ECListInt* lplObjectIds, unsigned int ulDestFolderId, unsigned int ulSyncId)
{
@@ -8641,6 +8815,16 @@
// @note The object type checking wille be done in MoveObjects or CopyObject
+//SPAMHOOK
+/////////////////////////////////////
+ //Iterate over all mail ids and initiate spamhook.
+ for(iObjectId = lObjectIds.begin(); iObjectId != lObjectIds.end(); iObjectId++)
+ {
+ SpamHook(lpDatabase,*iObjectId,ulDestFolderId);
+ }
+//SPAMHOOK END
+////////////////////////////////////
+
//check copy or a move
if(ulFlags & FOLDER_MOVE ) { // A move
er = MoveObjects(lpecSession, lpDatabase, &lObjectIds, ulDestFolderId, ulSyncId);
diff -ru zarafa-7.1.4/provider/server/ECServer.cpp zarafa-7.1.4.spamhook/provider/server/ECServer.cpp
--- zarafa-7.1.4/provider/server/ECServer.cpp 2013-02-28 17:13:17.000000000 +0100
+++ zarafa-7.1.4.spamhook/provider/server/ECServer.cpp 2013-04-15 11:14:40.000000000 +0200
@@ -963,6 +963,7 @@
{ "deletegroup_script", "/etc/zarafa/userscripts/deletegroup", CONFIGSETTING_RELOADABLE},
{ "createcompany_script", "/etc/zarafa/userscripts/createcompany", CONFIGSETTING_RELOADABLE },
{ "deletecompany_script", "/etc/zarafa/userscripts/deletecompany", CONFIGSETTING_RELOADABLE },
+ { "junklearn_script", "/etc/zarafa/userscripts/junklearn", CONFIGSETTING_RELOADABLE },
{ "user_safe_mode", "no", CONFIGSETTING_RELOADABLE },
// Storename format

View File

@ -0,0 +1,61 @@
From: Jan Engelhardt <jengelh@inai.de>
Upstream: never?
build: make autoreconf functional
Make autoreconf functional with the OSS edition.
---
ECtools/Makefile.am | 1 -
Makefile.am | 4 ----
configure.ac | 13 -------------
3 files changed, 18 deletions(-)
Index: zarafa-7.1.1/ECtools/Makefile.am
===================================================================
--- zarafa-7.1.1.orig/ECtools/Makefile.am
+++ zarafa-7.1.1/ECtools/Makefile.am
@@ -1,5 +1,4 @@
if ! OSS_ONLY
-PROSUBS = zarafa-backup zarafa-report zarafa-msr za-extra zarafa-ocf
endif
SUBDIRS = $(PROSUBS) zarafa-archiver zarafa-admin zarafa-monitor zarafa-passwd zarafa-fsck zarafa-cfgchecker zarafa-stats zarafa-search zarafa-utils
Index: zarafa-7.1.1/Makefile.am
===================================================================
--- zarafa-7.1.1.orig/Makefile.am
+++ zarafa-7.1.1/Makefile.am
@@ -1,9 +1,5 @@
ACLOCAL_AMFLAGS = -I autoconf
-if ! OSS_ONLY
-PROSUBS = liblicense licensed
-endif
-
SUBDIRS = common libfreebusy mapi4linux zarafa-libsync $(PROSUBS) provider libicalmapi inetmapi php-ext ECtools spooler gateway caldav installer po doc
if WITH_SWIG
Index: zarafa-7.1.1/configure.ac
===================================================================
--- zarafa-7.1.1.orig/configure.ac
+++ zarafa-7.1.1/configure.ac
@@ -786,19 +786,6 @@ AC_CONFIG_FILES([Makefile
version
specialbuild
])
-dnl non-oss files
-if test -d `dirname $0`/licensed; then
-AC_CONFIG_FILES([
- liblicense/Makefile
- licensed/Makefile
- ECtools/zarafa-backup/Makefile
- ECtools/zarafa-backup/helpers/Makefile
- ECtools/zarafa-report/Makefile
- ECtools/zarafa-msr/Makefile
- ECtools/zarafa-ocf/Makefile
- ECtools/za-extra/Makefile
-])
-fi
AC_OUTPUT

View File

@ -0,0 +1,391 @@
From: Jan Engelhardt <jengelh@inai.de>
src: remove useless sizeof(char)
sizeof(char) is defined by the standard to be always equal to 1.
It is thus useless in e.g. multiplications.
---
common/CommonUtil.cpp | 14 +++++++-------
common/Trace.cpp | 2 +-
common/Util.cpp | 2 +-
common/fileutil.cpp | 12 ++++++------
gateway/IMAP.cpp | 8 ++++----
inetmapi/tnef.cpp | 4 ++--
mapi4linux/src/m4l.mapisvc.cpp | 2 +-
mapi4linux/src/mapidefs.cpp | 2 +-
provider/contacts/ZCMAPIProp.cpp | 2 +-
provider/libserver/ECDatabaseUtils.cpp | 2 +-
swig/python/RecurrenceState_wrap.cxx | 2 +-
swig/python/archiver_wrap.cxx | 2 +-
swig/python/icalmapi_wrap.cxx | 2 +-
swig/python/inetmapi_wrap.cxx | 6 +++---
swig/python/libcommon_wrap.cxx | 2 +-
swig/python/libfreebusy_wrap.cxx | 2 +-
swig/python/licenseclient_wrap.cxx | 2 +-
swig/python/mapi_wrap.cxx | 2 +-
18 files changed, 35 insertions(+), 35 deletions(-)
Index: zarafa-7.1.0/common/CommonUtil.cpp
===================================================================
--- zarafa-7.1.0.orig/common/CommonUtil.cpp
+++ zarafa-7.1.0/common/CommonUtil.cpp
@@ -1041,11 +1041,11 @@ HRESULT ECCreateOneOff(LPTSTR lpszName,
strOneOff.append((char*)strUnicode.c_str(), (strUnicode.length()+1)*sizeof(unsigned short));
} else {
if (lpszName)
- strOneOff.append((char *)lpszName, (strlen((char *)lpszName) + 1) * sizeof(char));
+ strOneOff.append((char *)lpszName, strlen((char *)lpszName) + 1);
else
- strOneOff.append(sizeof(char), '\0');
- strOneOff.append((char *)lpszAdrType, (strlen((char *)lpszAdrType) + 1) * sizeof(char));
- strOneOff.append((char *)lpszAddress, (strlen((char *)lpszAddress) + 1) * sizeof(char));
+ strOneOff.append(1, '\0');
+ strOneOff.append((char *)lpszAdrType, strlen((char *)lpszAdrType) + 1);
+ strOneOff.append((char *)lpszAddress, strlen((char *)lpszAddress) + 1);
}
hr = MAPIAllocateBuffer(strOneOff.size(), (void **)lppEntryID);
@@ -1148,7 +1148,7 @@ HRESULT ECParseOneOff(LPENTRYID lpEntryI
hr = TryConvert(lpBuffer, rawsize(lpBuffer), "windows-1252", name);
if (hr != hrSuccess)
goto exit;
- lpBuffer += (str.length() + 1) * sizeof(char);
+ lpBuffer += str.length() + 1;
str = (char*)lpBuffer;
if (str.length() == 0) {
@@ -1156,7 +1156,7 @@ HRESULT ECParseOneOff(LPENTRYID lpEntryI
goto exit;
}
type = convert_to<std::wstring>(str);
- lpBuffer += (str.length() + 1) * sizeof(char);
+ lpBuffer += str.length() + 1;
str = (char*)lpBuffer;
if (str.length() == 0) {
@@ -1164,7 +1164,7 @@ HRESULT ECParseOneOff(LPENTRYID lpEntryI
goto exit;
}
addr = convert_to<std::wstring>(str);
- lpBuffer += (str.length() + 1) * sizeof(char);
+ lpBuffer += str.length() + 1;
}
strWName = name;
Index: zarafa-7.1.0/common/Trace.cpp
===================================================================
--- zarafa-7.1.0.orig/common/Trace.cpp
+++ zarafa-7.1.0/common/Trace.cpp
@@ -135,7 +135,7 @@ void TraceMsg(char* lpMsg, int time, cha
if (BUFFER_LIMIT != 0 && pos+3 < BUFFER_LIMIT && len > BUFFER_LIMIT)
len = BUFFER_LIMIT;
- buffer = (char*)malloc( len * sizeof(char) );
+ buffer = static_cast<char *>(malloc(len));
memcpy(buffer, debug, pos);
Index: zarafa-7.1.0/common/Util.cpp
===================================================================
--- zarafa-7.1.0.orig/common/Util.cpp
+++ zarafa-7.1.0/common/Util.cpp
@@ -470,7 +470,7 @@ HRESULT Util::HrCopyProperty(LPSPropValu
goto exit;
}
- hr = lpfAllocMore(strlen(lpSrc->Value.lpszA)*sizeof(char)+sizeof(char), lpBase, (void**)&lpDest->Value.lpszA);
+ hr = lpfAllocMore(strlen(lpSrc->Value.lpszA) + 1, lpBase, (void**)&lpDest->Value.lpszA);
if (hr != hrSuccess)
goto exit;
strcpy(lpDest->Value.lpszA, lpSrc->Value.lpszA);
Index: zarafa-7.1.0/common/fileutil.cpp
===================================================================
--- zarafa-7.1.0.orig/common/fileutil.cpp
+++ zarafa-7.1.0/common/fileutil.cpp
@@ -104,7 +104,7 @@ HRESULT HrFileLFtoCRLF(FILE *fin, FILE**
}
while (!feof(fin)) {
- readsize = fread(bufferin, sizeof(char), BLOCKSIZE / 2, fin);
+ readsize = fread(bufferin, 1, BLOCKSIZE / 2, fin);
if (ferror(fin)) {
perror("Read error");//FIXME: What an error?, what now?
hr = MAPI_E_CORRUPT_DATA;
@@ -113,7 +113,7 @@ HRESULT HrFileLFtoCRLF(FILE *fin, FILE**
BufferLFtoCRLF(readsize, bufferin, bufferout, &sizebufferout);
- if (fwrite(bufferout, sizeof(char), sizebufferout, fTmp) != sizebufferout) {
+ if (fwrite(bufferout, 1, sizebufferout, fTmp) != sizebufferout) {
perror("Write error");//FIXME: What an error?, what now?
hr = MAPI_E_CORRUPT_DATA;
break;
@@ -180,7 +180,7 @@ HRESULT HrMapFileToBuffer(FILE *f, char
/* mmap failed (probably reading from STDIN as a stream), just read the file into memory, and return that */
lpBuffer = (char*)malloc(BLOCKSIZE); // will be deleted as soon as possible
while (!feof(f)) {
- ulReadsize = fread(lpBuffer+offset, sizeof(char), BLOCKSIZE, f);
+ ulReadsize = fread(lpBuffer+offset, 1, BLOCKSIZE, f);
if (ferror(f)) {
perror("Read error");
break;
@@ -309,7 +309,7 @@ bool DuplicateFile(ECLogger *lpLogger, F
}
while (!feof(lpFile)) {
- ulReadsize = fread(lpBuffer, sizeof(char), BLOCKSIZE, lpFile);
+ ulReadsize = fread(lpBuffer, 1, BLOCKSIZE, lpFile);
if (ferror(lpFile)) {
if (lpLogger)
lpLogger->Log(EC_LOGLEVEL_FATAL, "Read error, error %d", errno);
@@ -321,7 +321,7 @@ bool DuplicateFile(ECLogger *lpLogger, F
}
- if (fwrite(lpBuffer, sizeof(char), ulReadsize , pfNew) != ulReadsize) {
+ if (fwrite(lpBuffer, 1, ulReadsize , pfNew) != ulReadsize) {
if (lpLogger)
lpLogger->Log(EC_LOGLEVEL_FATAL, "Write error, error %d", errno);
else
@@ -389,7 +389,7 @@ bool ConvertFileFromUCS2ToUTF8(ECLogger
goto exit;
}
- if (fwrite(strConverted.c_str(), sizeof(char), strConverted.size(), pfDst) != strConverted.size()) {
+ if (fwrite(strConverted.c_str(), 1, strConverted.size(), pfDst) != strConverted.size()) {
if (lpLogger)
lpLogger->Log(EC_LOGLEVEL_FATAL, "Unable to write to file '%s', error %d", strDstFileName.c_str(), errno);
else
Index: zarafa-7.1.0/gateway/IMAP.cpp
===================================================================
--- zarafa-7.1.0.orig/gateway/IMAP.cpp
+++ zarafa-7.1.0/gateway/IMAP.cpp
@@ -5973,7 +5973,7 @@ HRESULT IMAP::HrSearch(vector<string> &l
if (iconv)
iconv->convert(lstSearchCriteria[ulStartCriteria+1]);
- hr = MAPIAllocateMore(sizeof(char) * (lstSearchCriteria[ulStartCriteria + 1].size() + 1), lpRootRestrict,
+ hr = MAPIAllocateMore(lstSearchCriteria[ulStartCriteria + 1].size() + 1, lpRootRestrict,
(LPVOID *) &szBuffer);
if (hr != hrSuccess)
goto exit;
@@ -6063,7 +6063,7 @@ HRESULT IMAP::HrSearch(vector<string> &l
if (iconv)
iconv->convert(lstSearchCriteria[ulStartCriteria+1]);
- hr = MAPIAllocateMore(sizeof(char) * (lstSearchCriteria[ulStartCriteria + 1].size() + 1), lpRootRestrict,
+ hr = MAPIAllocateMore(lstSearchCriteria[ulStartCriteria + 1].size() + 1, lpRootRestrict,
(LPVOID *) &szBuffer);
if (hr != hrSuccess)
goto exit;
@@ -6509,7 +6509,7 @@ HRESULT IMAP::HrSearch(vector<string> &l
if (iconv)
iconv->convert(lstSearchCriteria[ulStartCriteria+1]);
- hr = MAPIAllocateMore(sizeof(char) * (lstSearchCriteria[ulStartCriteria + 1].size() + 1), lpRootRestrict,
+ hr = MAPIAllocateMore(lstSearchCriteria[ulStartCriteria + 1].size() + 1, lpRootRestrict,
(LPVOID *) &szBuffer);
if (hr != hrSuccess)
goto exit;
@@ -6542,7 +6542,7 @@ HRESULT IMAP::HrSearch(vector<string> &l
if (iconv)
iconv->convert(lstSearchCriteria[ulStartCriteria+1]);
- hr = MAPIAllocateMore(sizeof(char) * (lstSearchCriteria[ulStartCriteria + 1].size() + 1), lpRootRestrict,
+ hr = MAPIAllocateMore(lstSearchCriteria[ulStartCriteria + 1].size() + 1, lpRootRestrict,
(LPVOID *) &szBuffer);
if (hr != hrSuccess)
goto exit;
Index: zarafa-7.1.0/inetmapi/tnef.cpp
===================================================================
--- zarafa-7.1.0.orig/inetmapi/tnef.cpp
+++ zarafa-7.1.0/inetmapi/tnef.cpp
@@ -1896,11 +1896,11 @@ HRESULT ECTNEF::HrReadByte(IStream *lpSt
HRESULT hr = hrSuccess;
ULONG ulRead = 0;
- hr = lpStream->Read(ulData, sizeof(char), &ulRead);
+ hr = lpStream->Read(ulData, 1, &ulRead);
if(hr != hrSuccess)
goto exit;
- if(ulRead != sizeof(char)) {
+ if(ulRead != 1) {
hr = MAPI_E_NOT_FOUND;
goto exit;
}
Index: zarafa-7.1.0/mapi4linux/src/m4l.mapisvc.cpp
===================================================================
--- zarafa-7.1.0.orig/mapi4linux/src/m4l.mapisvc.cpp
+++ zarafa-7.1.0/mapi4linux/src/m4l.mapisvc.cpp
@@ -280,7 +280,7 @@ HRESULT INFLoader::MakeProperty(const st
sProp.ulPropTag = CHANGE_PROP_TYPE(sProp.ulPropTag, PT_STRING8);
case PT_STRING8:
{
- hr = MAPIAllocateMore((strData.length() +1) * sizeof(char), base, (void**)&sProp.Value.lpszA);
+ hr = MAPIAllocateMore(strData.length() + 1, base, (void**)&sProp.Value.lpszA);
if (hr != hrSuccess)
goto exit;
strcpy(sProp.Value.lpszA, strData.c_str());
Index: zarafa-7.1.0/mapi4linux/src/mapidefs.cpp
===================================================================
--- zarafa-7.1.0.orig/mapi4linux/src/mapidefs.cpp
+++ zarafa-7.1.0/mapi4linux/src/mapidefs.cpp
@@ -200,7 +200,7 @@ HRESULT M4LMAPIProp::GetProps(LPSPropTag
goto exit;
for (ULONG c = 0; c < (*i)->Value.MVszW.cValues; c++) {
ansi = converter.convert_to<string>((*i)->Value.MVszW.lppszW[c]);
- hr = MAPIAllocateMore(ansi.length() * sizeof(char) + sizeof(char), props, (void**)&sConvert.Value.MVszA.lppszA[c]);
+ hr = MAPIAllocateMore(ansi.length() + 1, props, (void**)&sConvert.Value.MVszA.lppszA[c]);
if (hr != hrSuccess)
goto exit;
strcpy(sConvert.Value.MVszA.lppszA[c], ansi.c_str());
Index: zarafa-7.1.0/provider/contacts/ZCMAPIProp.cpp
===================================================================
--- zarafa-7.1.0.orig/provider/contacts/ZCMAPIProp.cpp
+++ zarafa-7.1.0/provider/contacts/ZCMAPIProp.cpp
@@ -379,7 +379,7 @@ HRESULT ZCMAPIProp::CopyOneProp(convert_
// copy from unicode to string8
lpProp->ulPropTag = CHANGE_PROP_TYPE(i->second.ulPropTag, PT_STRING8);
strAnsi = converter.convert_to<std::string>(i->second.Value.lpszW);
- hr = MAPIAllocateMore(strAnsi.size() + sizeof(char), lpBase, (void**)&lpProp->Value.lpszA);
+ hr = MAPIAllocateMore(strAnsi.size() + 1, lpBase, (void**)&lpProp->Value.lpszA);
if (hr != hrSuccess)
goto exit;
strcpy(lpProp->Value.lpszA, strAnsi.c_str());
Index: zarafa-7.1.0/provider/libserver/ECDatabaseUtils.cpp
===================================================================
--- zarafa-7.1.0.orig/provider/libserver/ECDatabaseUtils.cpp
+++ zarafa-7.1.0/provider/libserver/ECDatabaseUtils.cpp
@@ -788,7 +788,7 @@ ECRESULT CopyDatabasePropValToSOAPPropVa
{
ParseMVProp(lpRow[FIELD_NR_STRING], lpLen[FIELD_NR_STRING], &ulLastPos, &strData);
lpPropVal->Value.mvszA.__ptr[i] = s_alloc<char>(soap, strData.size() + 1);
- memcpy(lpPropVal->Value.mvszA.__ptr[i], strData.c_str(), sizeof(char) * (strData.size() + 1));
+ memcpy(lpPropVal->Value.mvszA.__ptr[i], strData.c_str(), strData.size() + 1);
}
ulPropTag = CHANGE_PROP_TYPE(ulPropTag, PT_MV_UNICODE); // return unicode strings to client, because database contains UTF-8
break;
Index: zarafa-7.1.0/swig/python/RecurrenceState_wrap.cxx
===================================================================
--- zarafa-7.1.0.orig/swig/python/RecurrenceState_wrap.cxx
+++ zarafa-7.1.0/swig/python/RecurrenceState_wrap.cxx
@@ -3278,7 +3278,7 @@ SWIG_AsCharPtrAndSize(PyObject *obj, cha
if (*alloc == SWIG_NEWOBJ)
#endif
{
- *cptr = reinterpret_cast< char* >(memcpy((new char[len + 1]), cstr, sizeof(char)*(len + 1)));
+ *cptr = reinterpret_cast< char* >(memcpy((new char[len + 1]), cstr, len + 1));
*alloc = SWIG_NEWOBJ;
}
else {
Index: zarafa-7.1.0/swig/python/archiver_wrap.cxx
===================================================================
--- zarafa-7.1.0.orig/swig/python/archiver_wrap.cxx
+++ zarafa-7.1.0/swig/python/archiver_wrap.cxx
@@ -3075,7 +3075,7 @@ SWIG_AsCharPtrAndSize(PyObject *obj, cha
if (*alloc == SWIG_NEWOBJ)
#endif
{
- *cptr = reinterpret_cast< char* >(memcpy((new char[len + 1]), cstr, sizeof(char)*(len + 1)));
+ *cptr = reinterpret_cast< char* >(memcpy((new char[len + 1]), cstr, len + 1));
*alloc = SWIG_NEWOBJ;
}
else {
Index: zarafa-7.1.0/swig/python/icalmapi_wrap.cxx
===================================================================
--- zarafa-7.1.0.orig/swig/python/icalmapi_wrap.cxx
+++ zarafa-7.1.0/swig/python/icalmapi_wrap.cxx
@@ -2879,7 +2879,7 @@ SWIG_AsCharPtrAndSize(PyObject *obj, cha
if (*alloc == SWIG_NEWOBJ)
#endif
{
- *cptr = reinterpret_cast< char* >(memcpy((new char[len + 1]), cstr, sizeof(char)*(len + 1)));
+ *cptr = reinterpret_cast< char* >(memcpy((new char[len + 1]), cstr, len + 1));
*alloc = SWIG_NEWOBJ;
}
else {
Index: zarafa-7.1.0/swig/python/inetmapi_wrap.cxx
===================================================================
--- zarafa-7.1.0.orig/swig/python/inetmapi_wrap.cxx
+++ zarafa-7.1.0/swig/python/inetmapi_wrap.cxx
@@ -2865,7 +2865,7 @@ SWIG_AsCharPtrAndSize(PyObject *obj, cha
if (*alloc == SWIG_NEWOBJ)
#endif
{
- *cptr = reinterpret_cast< char* >(memcpy((new char[len + 1]), cstr, sizeof(char)*(len + 1)));
+ *cptr = reinterpret_cast< char* >(memcpy((new char[len + 1]), cstr, len + 1));
*alloc = SWIG_NEWOBJ;
}
else {
@@ -3140,7 +3140,7 @@ SWIGINTERN PyObject *_wrap_sending_optio
if (arg1->alternate_boundary) delete[] arg1->alternate_boundary;
if (arg2) {
size_t size = strlen(reinterpret_cast< const char * >(arg2)) + 1;
- arg1->alternate_boundary = (char *)reinterpret_cast< char* >(memcpy((new char[size]), reinterpret_cast< const char * >(arg2), sizeof(char)*(size)));
+ arg1->alternate_boundary = (char *)reinterpret_cast< char* >(memcpy((new char[size]), reinterpret_cast< const char * >(arg2), size));
} else {
arg1->alternate_boundary = 0;
}
@@ -3569,7 +3569,7 @@ SWIGINTERN PyObject *_wrap_sending_optio
if (arg1->charset_upgrade) delete[] arg1->charset_upgrade;
if (arg2) {
size_t size = strlen(reinterpret_cast< const char * >(arg2)) + 1;
- arg1->charset_upgrade = (char *)reinterpret_cast< char* >(memcpy((new char[size]), reinterpret_cast< const char * >(arg2), sizeof(char)*(size)));
+ arg1->charset_upgrade = (char *)reinterpret_cast< char* >(memcpy((new char[size]), reinterpret_cast< const char * >(arg2), size));
} else {
arg1->charset_upgrade = 0;
}
Index: zarafa-7.1.0/swig/python/libcommon_wrap.cxx
===================================================================
--- zarafa-7.1.0.orig/swig/python/libcommon_wrap.cxx
+++ zarafa-7.1.0/swig/python/libcommon_wrap.cxx
@@ -3002,7 +3002,7 @@ SWIG_AsCharPtrAndSize(PyObject *obj, cha
if (*alloc == SWIG_NEWOBJ)
#endif
{
- *cptr = reinterpret_cast< char* >(memcpy((new char[len + 1]), cstr, sizeof(char)*(len + 1)));
+ *cptr = reinterpret_cast< char* >(memcpy((new char[len + 1]), cstr, len + 1));
*alloc = SWIG_NEWOBJ;
}
else {
Index: zarafa-7.1.0/swig/python/libfreebusy_wrap.cxx
===================================================================
--- zarafa-7.1.0.orig/swig/python/libfreebusy_wrap.cxx
+++ zarafa-7.1.0/swig/python/libfreebusy_wrap.cxx
@@ -2894,7 +2894,7 @@ SWIG_AsCharPtrAndSize(PyObject *obj, cha
if (*alloc == SWIG_NEWOBJ)
#endif
{
- *cptr = reinterpret_cast< char* >(memcpy((new char[len + 1]), cstr, sizeof(char)*(len + 1)));
+ *cptr = reinterpret_cast< char* >(memcpy((new char[len + 1]), cstr, len + 1));
*alloc = SWIG_NEWOBJ;
}
else {
Index: zarafa-7.1.0/swig/python/licenseclient_wrap.cxx
===================================================================
--- zarafa-7.1.0.orig/swig/python/licenseclient_wrap.cxx
+++ zarafa-7.1.0/swig/python/licenseclient_wrap.cxx
@@ -2870,7 +2870,7 @@ SWIG_AsCharPtrAndSize(PyObject *obj, cha
if (*alloc == SWIG_NEWOBJ)
#endif
{
- *cptr = reinterpret_cast< char* >(memcpy((new char[len + 1]), cstr, sizeof(char)*(len + 1)));
+ *cptr = reinterpret_cast< char* >(memcpy((new char[len + 1]), cstr, len + 1));
*alloc = SWIG_NEWOBJ;
}
else {
Index: zarafa-7.1.0/swig/python/mapi_wrap.cxx
===================================================================
--- zarafa-7.1.0.orig/swig/python/mapi_wrap.cxx
+++ zarafa-7.1.0/swig/python/mapi_wrap.cxx
@@ -3520,7 +3520,7 @@ SWIG_AsCharPtrAndSize(PyObject *obj, cha
if (*alloc == SWIG_NEWOBJ)
#endif
{
- *cptr = reinterpret_cast< char* >(memcpy((new char[len + 1]), cstr, sizeof(char)*(len + 1)));
+ *cptr = reinterpret_cast< char* >(memcpy((new char[len + 1]), cstr, len + 1));
*alloc = SWIG_NEWOBJ;
}
else {

View File

@ -0,0 +1,142 @@
From: Jan Engelhardt <jengelh@inai.de>
Date: 2012-06-22 00:34:08.177803888 +0200
g++ -DHAVE_CONFIG_H -I. -I../../common -I../../mapi4linux/include -I../../common -I../../provider/include -I../../ECtools/zarafa-archiver -I/usr/include/CLucene/ext -I/usr/lib64 -DBOOST_FILESYSTEM_VERSION=2 -DLINUX -fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g -g -rdynamic -Wall -Wno-write-strings -DHAVE_CONFIG_H -pedantic -Wno-long-long -Wno-variadic-macros -pthread -O2 -fno-strict-aliasing -DNDEBUG -DFORCE_CHARSET_CONVERSION -DUNICODE -c -o ECIndexImporterAttachments.o ECIndexImporterAttachments.cpp
ECIndexImporterAttachments.cpp: In member function 'HRESULT ECIndexImporterAttachment::CopyStreamToParser(IStream*, int, int, std::wstring*)':
ECIndexImporterAttachments.cpp:249:34: error: 'max' was not declared in this scope
ECIndexImporterAttachments.cpp:249:34: note: suggested alternative:
/usr/include/c++/4.7/bits/stl_algobase.h:254:5: note: 'std::max'
ECIndexImporterAttachments.cpp:440:3: error: 'string' was not declared in this scope
ECIndexImporterAttachments.cpp:440:3: note: suggested alternative:
/usr/include/c++/4.7/bits/stringfwd.h:65:33: note: 'std::string'
ECIndexImporterAttachments.cpp:443:4: error: 'set' was not declared in this scope
ECIndexImporterAttachments.cpp:443:4: note: suggested alternative:
/usr/include/c++/4.7/bits/stl_set.h:91:11: note: 'std::set'
ECIndexImporterAttachments.cpp:602:46: error: 'min' was not declared in this scope
ECIndexImporterAttachments.cpp:602:46: note: suggested alternative:
/usr/include/c++/4.7/bits/stl_algobase.h:233:5: note: 'std::min'
ECIndexImporter.cpp: In member function 'HRESULT ECIndexImporter::ProcessThread()':
ECIndexImporter.cpp:400:5: error: 'auto_ptr' was not declared in this scope
---
ECtools/zarafa-search/ECIndexImporter.cpp | 3 +-
ECtools/zarafa-search/ECIndexImporterAttachments.cpp | 24 +++++++++++--------
2 files changed, 16 insertions(+), 11 deletions(-)
Index: zarafa-7.1.0/ECtools/zarafa-search/ECIndexImporter.cpp
===================================================================
--- zarafa-7.1.0.orig/ECtools/zarafa-search/ECIndexImporter.cpp
+++ zarafa-7.1.0/ECtools/zarafa-search/ECIndexImporter.cpp
@@ -47,6 +47,7 @@
*
*/
+#include <memory>
#include "platform.h"
#include "ECIndexImporter.h"
@@ -433,7 +434,7 @@ HRESULT ECIndexImporter::ProcessThread()
ECIndexDB *lpIndex = NULL;
ECIndexDB *lpThisIndex = NULL;
ArchiveItem *lpArchiveItem = NULL;
- auto_ptr<ArchiveItem> lpStubTarget;
+ std::auto_ptr<ArchiveItem> lpStubTarget;
m_lpLogger->Log(EC_LOGLEVEL_DEBUG, "Importer thread started");
Index: zarafa-7.1.0/ECtools/zarafa-search/ECIndexImporterAttachments.cpp
===================================================================
--- zarafa-7.1.0.orig/ECtools/zarafa-search/ECIndexImporterAttachments.cpp
+++ zarafa-7.1.0/ECtools/zarafa-search/ECIndexImporterAttachments.cpp
@@ -47,6 +47,10 @@
*
*/
+#include <algorithm>
+#include <set>
+#include <string>
+
#include <platform.h>
#include <mapi.h>
@@ -246,7 +250,7 @@ HRESULT ECIndexImporterAttachment::CopyS
ULONG ulWriteData;
fd_set rset, wset;
int res;
- int fd = max(ulFpWrite, ulFpRead);
+ int fd = std::max(ulFpWrite, ulFpRead);
struct timeval timeout;
@@ -267,7 +271,7 @@ HRESULT ECIndexImporterAttachment::CopyS
FD_ZERO(&wset);
if (ulTotalWriteData) {
FD_SET(ulFpWrite, &wset);
- fd = max(ulFpWrite, ulFpRead);
+ fd = std::max(ulFpWrite, ulFpRead);
} else {
fd = ulFpRead;
}
@@ -437,10 +441,10 @@ HRESULT ECIndexImporterAttachment::Parse
command.assign(m_strCommand + " ");
if (!strMimeTag.empty() && strMimeTag.compare(_T("application/octet-stream")) != 0) {
- string tmp = trim(convert_to<string>(strMimeTag), "\r\n ");
+ std::string tmp = trim(convert_to<std::string>(strMimeTag), "\r\n ");
size_t pos = tmp.find_first_of('/');
if (pos != std::string::npos) {
- set<string, stricmp_comparison>::iterator i = m_lpThreadData->m_setMimeFilter.find(string(tmp,0,pos));
+ std::set<std::string, stricmp_comparison>::iterator i = m_lpThreadData->m_setMimeFilter.find(std::string(tmp,0,pos));
if (i != m_lpThreadData->m_setMimeFilter.end()) {
m_lpThreadData->lpLogger->Log(EC_LOGLEVEL_DEBUG, "Skipping filtered attachment mimetype: %s for %ls", tmp.c_str(), strFilename.c_str());
hr = MAPI_E_INVALID_OBJECT;
@@ -452,8 +456,8 @@ HRESULT ECIndexImporterAttachment::Parse
command.append("'");
} else if (!strExtension.empty()) {
// this string mostly does not exist
- string tmp = trim(convert_to<string>(strExtension), "\r\n ");
- set<string, stricmp_comparison>::iterator i = m_lpThreadData->m_setExtFilter.find(string(tmp,1)); // skip dot in extension find
+ std::string tmp = trim(convert_to<std::string>(strExtension), "\r\n ");
+ std::set<std::string, stricmp_comparison>::iterator i = m_lpThreadData->m_setExtFilter.find(std::string(tmp,1)); // skip dot in extension find
if (i != m_lpThreadData->m_setExtFilter.end()) {
m_lpThreadData->lpLogger->Log(EC_LOGLEVEL_DEBUG, "Skipping filtered attachment extension: %s for %ls", tmp.c_str(), strFilename.c_str());
hr = MAPI_E_INVALID_OBJECT;
@@ -463,14 +467,14 @@ HRESULT ECIndexImporterAttachment::Parse
command.append(forcealnum(tmp, "."));
command.append("'");
} else if (!strFilename.empty()) {
- std::string tmp = trim(convert_to<string>(strFilename), "\r\n ");
+ std::string tmp = trim(convert_to<std::string>(strFilename), "\r\n ");
size_t pos = tmp.find_last_of('.');
if (pos == std::string::npos)
goto exit;
// skip dot in find
- set<string, stricmp_comparison>::iterator i = m_lpThreadData->m_setExtFilter.find(string(tmp, pos+1));
+ std::set<std::string, stricmp_comparison>::iterator i = m_lpThreadData->m_setExtFilter.find(std::string(tmp, pos+1));
if (i != m_lpThreadData->m_setExtFilter.end()) {
m_lpThreadData->lpLogger->Log(EC_LOGLEVEL_DEBUG, "Skipping filtered attachment extension: %ls", strFilename.c_str());
hr = MAPI_E_INVALID_OBJECT;
@@ -478,7 +482,7 @@ HRESULT ECIndexImporterAttachment::Parse
}
command.append("ext '");
- command.append(forcealnum(string(tmp, pos), "."));
+ command.append(forcealnum(std::string(tmp, pos), "."));
command.append("'");
} else {
m_lpThreadData->lpLogger->Log(EC_LOGLEVEL_DEBUG, "Invalid attachment, no mimetag, extension or filename");
@@ -599,7 +603,7 @@ HRESULT ECIndexImporterAttachment::Parse
if (ulAttachSize) {
/* Copy attachment data into stream */
while (TRUE) {
- ULONG ulRead = min(m_ulCache, ulAttachSize);
+ ULONG ulRead = std::min(m_ulCache, ulAttachSize);
ULONG ulCopy = ulRead;
ULONG ulWritten = 0;

View File

@ -0,0 +1,175 @@
From: Jan Engelhardt <jengelh@inai.de>
Date: 2012-06-22 01:14:57.789674760 +0200
Make ZCP compilation succeed if distribution uses clucene-core 2.x.
---
ECtools/zarafa-search/ECAnalyzers.cpp | 14 +++++-----
ECtools/zarafa-search/ECAnalyzers.h | 5 +--
ECtools/zarafa-search/ECIndexDB.cpp | 4 +--
configure.ac | 45 +---------------------------------
4 files changed, 13 insertions(+), 55 deletions(-)
Index: zarafa-7.1.4/ECtools/zarafa-search/ECAnalyzers.cpp
===================================================================
--- zarafa-7.1.4.orig/ECtools/zarafa-search/ECAnalyzers.cpp
+++ zarafa-7.1.4/ECtools/zarafa-search/ECAnalyzers.cpp
@@ -78,24 +78,24 @@ EmailFilter::~EmailFilter() {
* @param token Output token
* @return false if no more token was available
*/
-bool EmailFilter::next(lucene::analysis::Token *token) {
+lucene::analysis::Token *EmailFilter::next(lucene::analysis::Token *token) {
// See if we had any stored tokens
if(part < parts.size()) {
token->set(parts[part].c_str(), 0, 0, _T("<EMAIL>"));
token->setPositionIncrement(0);
part++;
- return true;
+ return token;
} else {
// No more stored token, get a new one
if(!input->next(token))
- return false;
+ return NULL;
// Split EMAIL tokens into the various parts
if(wcscmp(token->type(), L"<EMAIL>") == 0) {
// Split into user, domain, com
- parts = tokenize((std::wstring)token->_termText, (std::wstring)L".@");
+ parts = tokenize((std::wstring)token->termBuffer(), (std::wstring)L".@");
// Split into user, domain.com
- std::vector<std::wstring> moreparts = tokenize((std::wstring)token->_termText, (std::wstring)L"@");
+ std::vector<std::wstring> moreparts = tokenize((std::wstring)token->termBuffer(), (std::wstring)L"@");
parts.insert(parts.end(), moreparts.begin(), moreparts.end());
// Only add parts once (unique parts)
@@ -105,7 +105,7 @@ bool EmailFilter::next(lucene::analysis:
part = 0;
}
- return true;
+ return token;
}
}
@@ -124,7 +124,7 @@ ECAnalyzer::~ECAnalyzer()
* @param reader Reader to read the bytestream to tokenize
* @return A TokenStream outputting the tokens to be indexed
*/
-lucene::analysis::TokenStream* ECAnalyzer::tokenStream(const TCHAR* fieldName, lucene::util::Reader* reader)
+lucene::analysis::TokenStream *ECAnalyzer::tokenStream(const TCHAR *fieldName, CL_NS(util)::BufferedReader *reader)
{
lucene::analysis::TokenStream* ret = _CLNEW lucene::analysis::standard::StandardTokenizer(reader);
ret = _CLNEW lucene::analysis::standard::StandardFilter(ret,true);
Index: zarafa-7.1.4/ECtools/zarafa-search/ECAnalyzers.h
===================================================================
--- zarafa-7.1.4.orig/ECtools/zarafa-search/ECAnalyzers.h
+++ zarafa-7.1.4/ECtools/zarafa-search/ECAnalyzers.h
@@ -50,7 +50,6 @@
#ifndef ANALYZERS_H
#include "CLucene/StdHeader.h"
-#include "CLucene/util/Reader.h"
#include "CLucene/analysis/standard/StandardAnalyzer.h"
#include "CLucene/analysis/AnalysisHeader.h"
@@ -68,7 +67,7 @@ class EmailFilter: public lucene::analys
public:
EmailFilter(lucene::analysis::TokenStream* in, bool deleteTokenStream);
virtual ~EmailFilter();
- bool next(lucene::analysis::Token* token);
+ lucene::analysis::Token *next(lucene::analysis::Token *token);
private:
lucene::analysis::Token curtoken;
@@ -86,7 +85,7 @@ public:
ECAnalyzer();
virtual ~ECAnalyzer();
- virtual lucene::analysis::TokenStream* tokenStream(const TCHAR* fieldName, CL_NS(util)::Reader* reader);
+ virtual lucene::analysis::TokenStream *tokenStream(const TCHAR *fieldName, CL_NS(util)::BufferedReader *reader);
};
#endif
Index: zarafa-7.1.4/ECtools/zarafa-search/ECIndexDB.cpp
===================================================================
--- zarafa-7.1.4.orig/ECtools/zarafa-search/ECIndexDB.cpp
+++ zarafa-7.1.4/ECtools/zarafa-search/ECIndexDB.cpp
@@ -68,7 +68,7 @@
#include <string>
#include <algorithm>
-#include <CLucene/util/Reader.h>
+#include <CLucene/util/CLStreams.h>
using namespace kyotocabinet;
@@ -305,7 +305,7 @@ HRESULT ECIndexDB::AddTerm(folderid_t fo
unsigned int len;
unsigned int keylen;
- lucene::util::StringReader reader(wstrTerm.c_str());
+ CL_NS(util)::StringReader reader(wstrTerm.c_str());
stream = m_lpAnalyzer->tokenStream(L"", &reader);
Index: zarafa-7.1.4/configure.ac
===================================================================
--- zarafa-7.1.4.orig/configure.ac
+++ zarafa-7.1.4/configure.ac
@@ -432,52 +432,11 @@ AC_SUBST(ICAL_LIBS)
CXXFLAGS=$CXXFLAGS_system
# Check for CLucene availability
-AC_ARG_WITH(clucene-lib-prefix,
- AC_HELP_STRING([--with-clucene-lib-prefix=PATH],[path to the clucene config file, e.g. /usr/lib/]),
- [CLUCENE_LIB_PREFIX=${withval}],[CLUCENE_LIB_PREFIX=/usr/lib])
-AC_ARG_WITH(clucene-include-prefix,
- AC_HELP_STRING([--with-clucene-include-prefix=PATH],[path to the clucene include files, e.g. /usr/include/]),
- [CLUCENE_INCLUDE_PREFIX=${withval}],[CLUCENE_INCLUDE_PREFIX=/usr/include])
-have_clucene=no
-# preprocessor doesn't check in /usr/lib{,64}/ for include files
-if test "x$CLUCENE_LIB_PREFIX" != "x"; then
- CXXFLAGS="$CXXFLAGS -I$CLUCENE_LIB_PREFIX"
- CPPFLAGS="$CPPFLAGS -I$CLUCENE_LIB_PREFIX"
-fi
-if test "x$CLUCENE_INCLUDE_PREFIX" != "x"; then
- CXXFLAGS="$CXXFLAGS -I$CLUCENE_INCLUDE_PREFIX"
- CPPFLAGS="$CPPFLAGS -I$CLUCENE_INCLUDE_PREFIX"
-fi
-# force add pthread in lucene test
-CXXFLAGS="$CXXFLAGS -pthread"
-if test -e "${CLUCENE_LIB_PREFIX}/libclucene.a"; then
-# lucene::index::IndexReader::open(const char *) in c++ style
-AC_CHECK_LIB(clucene, [_ZN6lucene5index11IndexReader4openEPKc],
- [ CLUCENE_LIBS="${CLUCENE_LIB_PREFIX}/libclucene.a"
- have_clucene=static
- ])
-else
-AC_CHECK_LIB(clucene, [_ZN6lucene5index11IndexReader4openEPKc],
- [ CLUCENE_LIBS="-lclucene"
- have_clucene=dynamic
- ])
-fi
-AC_MSG_CHECKING([library type for clucene])
-AC_MSG_RESULT([$have_clucene])
-AC_CHECK_HEADERS([CLucene.h],
- [ CLUCENE_CFLAGS="-DLUCENE_DISABLE_MEMTRACKING" ],
- [ have_clucene=no ])
-if test "x$CLUCENE_LIB_PREFIX" != "x"; then
- CLUCENE_CFLAGS="$CLUCENE_CFLAGS -I$CLUCENE_LIB_PREFIX"
-fi
-if test "x$CLUCENE_INCLUDE_PREFIX" != "x"; then
- CLUCENE_CFLAGS="$CLUCENE_CFLAGS -I$CLUCENE_INCLUDE_PREFIX"
-fi
+PKG_CHECK_MODULES([CLUCENE], [libclucene-core >= 2.3.3],
+ [have_clucene=dynamic], [have_clucene=no])
AM_CONDITIONAL([WITH_CLUCENE], [test "$have_clucene" != "no"])
AC_SUBST(CLUCENE_CFLAGS)
AC_SUBST(CLUCENE_LIBS)
-CXXFLAGS=$CXXFLAGS_system
-CPPFLAGS=$CPPFLAGS_system
# Check for google perftools tcmalloc availability
if test "$want_tcmalloc_full" = "yes"; then

View File

@ -0,0 +1,33 @@
From: Jan Engelhardt <jengelh@inai.de>
Date: 2013-01-25 03:39:37.985164412 +0100
build: flag path that probably should not be taken
[ 1420s] I: Program returns random data in a function
[ 1420s] E: zarafa no-return-in-nonvoid-function archiver.cpp:373
---
ECtools/zarafa-archiver/archiver.cpp | 3 +++
1 file changed, 3 insertions(+)
Index: zarafa-7.1.3/ECtools/zarafa-archiver/archiver.cpp
===================================================================
--- zarafa-7.1.3.orig/ECtools/zarafa-archiver/archiver.cpp
+++ zarafa-7.1.3/ECtools/zarafa-archiver/archiver.cpp
@@ -60,6 +60,7 @@
#include "ECConfig.h"
#include "ECLogger.h"
+#include <cstdlib>
#include <string>
using namespace std;
@@ -370,6 +371,8 @@ ECLogger* ArchiverImpl::GetLogger(eLogTy
case DefaultLog: return m_lpLogger;
case LogOnly: return m_lpLogLogger;
}
+ abort();
+ return NULL;
}
configsetting_t* ArchiverImpl::ConcatSettings(const configsetting_t *lpSettings1, const configsetting_t *lpSettings2)

View File

@ -0,0 +1,103 @@
Submitted By: Mario Fetka (mario.fetka@gmail.com)
Date: 2010-10-13
Initial Package Version: 6.40.2 (7.0.3)
Origin: me
Upstream Status: gentoo specific
Description: this patch correct the install dir for the default install target from /etc/sysconfig to the gentoo equivalent /etc/conf.d
diff -uNr zarafa-7.0.3.orig/installer/linux/Makefile.am zarafa-7.0.3/installer/linux/Makefile.am
--- zarafa-7.0.3.orig/installer/linux/Makefile.am 2011-11-20 18:45:15.661461795 +0100
+++ zarafa-7.0.3/installer/linux/Makefile.am 2011-11-20 18:48:10.780508507 +0100
@@ -26,7 +26,7 @@
sysconf_initdir=${sysconfdir}/init.d
sysconf_init_SCRIPTS = ${@DISTRO@_initscript_files}
-rhel_sysconfig_path = ${sysconfdir}/sysconfig
+rhel_sysconfig_path = ${sysconfdir}/conf.d
suse_sysconfig_path = ${localstatedir}/adm/fillup-templates
sles_sysconfig_path = ${localstatedir}/adm/fillup-templates
sysconf_sysconfigdir = ${@DISTRO@_sysconfig_path}
diff -uNr zarafa-7.0.3.orig/installer/userscripts/createcompany.in zarafa-7.0.3/installer/userscripts/createcompany.in
--- zarafa-7.0.3.orig/installer/userscripts/createcompany.in 2011-11-20 18:45:15.640628342 +0100
+++ zarafa-7.0.3/installer/userscripts/createcompany.in 2011-11-20 18:47:09.706088759 +0100
@@ -9,8 +9,8 @@
# beware that this string can contain any characters, so take heed to
# correct quoting.
-if [ -f @sysconfdir@/sysconfig/zarafa ]; then
- . @sysconfdir@/sysconfig/zarafa
+if [ -f @sysconfdir@/conf.d/zarafa-server ]; then
+ . @sysconfdir@/conf.d/zarafa-server
elif [ -f @sysconfdir@/default/zarafa ]; then
. @sysconfdir@/default/zarafa
fi
diff -uNr zarafa-7.0.3.orig/installer/userscripts/creategroup.in zarafa-7.0.3/installer/userscripts/creategroup.in
--- zarafa-7.0.3.orig/installer/userscripts/creategroup.in 2011-11-20 18:45:15.640628342 +0100
+++ zarafa-7.0.3/installer/userscripts/creategroup.in 2011-11-20 18:46:48.060132907 +0100
@@ -9,8 +9,8 @@
# beware that this string can contain any characters, so take heed to
# correct quoting.
-if [ -f @sysconfdir@/sysconfig/zarafa ]; then
- . @sysconfdir@/sysconfig/zarafa
+if [ -f @sysconfdir@/conf.d/zarafa-server ]; then
+ . @sysconfdir@/conf.d/zarafa-server
elif [ -f @sysconfdir@/default/zarafa ]; then
. @sysconfdir@/default/zarafa
fi
diff -uNr zarafa-7.0.3.orig/installer/userscripts/createuser.in zarafa-7.0.3/installer/userscripts/createuser.in
--- zarafa-7.0.3.orig/installer/userscripts/createuser.in 2011-11-20 18:45:15.640628342 +0100
+++ zarafa-7.0.3/installer/userscripts/createuser.in 2011-11-20 18:47:04.215316936 +0100
@@ -9,8 +9,8 @@
# beware that this string can contain any characters, so take heed to
# correct quoting.
-if [ -f @sysconfdir@/sysconfig/zarafa ]; then
- . @sysconfdir@/sysconfig/zarafa
+if [ -f @sysconfdir@/conf.d/zarafa-server ]; then
+ . @sysconfdir@/conf.d/zarafa-server
elif [ -f @sysconfdir@/default/zarafa ]; then
. @sysconfdir@/default/zarafa
fi
diff -uNr zarafa-7.0.3.orig/installer/userscripts/deletecompany.in zarafa-7.0.3/installer/userscripts/deletecompany.in
--- zarafa-7.0.3.orig/installer/userscripts/deletecompany.in 2011-11-20 18:45:15.638313511 +0100
+++ zarafa-7.0.3/installer/userscripts/deletecompany.in 2011-11-20 18:46:16.113192833 +0100
@@ -9,8 +9,8 @@
# beware that this string can contain any characters, so take heed to
# correct quoting.
-if [ -f @sysconfdir@/sysconfig/zarafa ]; then
- . @sysconfdir@/sysconfig/zarafa
+if [ -f @sysconfdir@/conf.d/zarafa-server ]; then
+ . @sysconfdir@/conf.d/zarafa-server
fi
ZARAFA_COMPANY_SCRIPTS=@USERSCRIPTDIR@/deletecompany.d
diff -uNr zarafa-7.0.3.orig/installer/userscripts/deletegroup.in zarafa-7.0.3/installer/userscripts/deletegroup.in
--- zarafa-7.0.3.orig/installer/userscripts/deletegroup.in 2011-11-20 18:45:15.638313511 +0100
+++ zarafa-7.0.3/installer/userscripts/deletegroup.in 2011-11-20 18:46:26.173434957 +0100
@@ -9,8 +9,8 @@
# beware that this string can contain any characters, so take heed to
# correct quoting.
-if [ -f @sysconfdir@/sysconfig/zarafa ]; then
- . @sysconfdir@/sysconfig/zarafa
+if [ -f @sysconfdir@/conf.d/zarafa-server ]; then
+ . @sysconfdir@/conf.d/zarafa-server
fi
ZARAFA_GROUP_SCRIPTS=@USERSCRIPTDIR@/deletegroup.d
diff -uNr zarafa-7.0.3.orig/installer/userscripts/deleteuser.in zarafa-7.0.3/installer/userscripts/deleteuser.in
--- zarafa-7.0.3.orig/installer/userscripts/deleteuser.in 2011-11-20 18:45:15.659146961 +0100
+++ zarafa-7.0.3/installer/userscripts/deleteuser.in 2011-11-20 18:47:14.958433297 +0100
@@ -9,8 +9,8 @@
# that this string can contain any characters, so take heed to correct
# quoting.
-if [ -f @sysconfdir@/sysconfig/zarafa ]; then
- . @sysconfdir@/sysconfig/zarafa
+if [ -f @sysconfdir@/conf.d/zarafa-server ]; then
+ . @sysconfdir@/conf.d/zarafa-server
fi
ZARAFA_USER_SCRIPTS=@USERSCRIPTDIR@/deleteuser.d

View File

@ -0,0 +1,11 @@
--- zarafa-7.1.4/configure.ac.orig 2013-04-15 21:53:32.183138074 +0200
+++ zarafa-7.1.4/configure.ac 2013-04-15 21:55:33.742618371 +0200
@@ -493,7 +493,7 @@
AC_HELP_STRING([--with-tcmalloc-prefix=PATH],[path to tcmalloc lib, e.g. /usr/lib/]),
[TCMALLOC_PREFIX=${withval}],[TCMALLOC_PREFIX=/usr/lib])
AC_CHECK_LIB(tcmalloc_minimal, [open],
- [ TCMALLOC_LIBS="${TCMALLOC_PREFIX}/libtcmalloc_minimal.a" AC_DEFINE(HAVE_TCMALLOC, [1], [Google TCMalloc available]) ],
+ [ TCMALLOC_LIBS="${TCMALLOC_PREFIX}/libtcmalloc_minimal.so" AC_DEFINE(HAVE_TCMALLOC, [1], [Google TCMalloc available]) ],
[ WITH_TCMALLOC=no ])
AC_SUBST(TCMALLOC_LIBS)
else

View File

@ -0,0 +1,15 @@
diff -uNr zarafa-7.1.5.orig/autoconf/swig.m4 zarafa-7.1.5/autoconf/swig.m4
--- zarafa-7.1.5.orig/autoconf/swig.m4 2013-08-15 17:10:38.483748612 +0200
+++ zarafa-7.1.5/autoconf/swig.m4 2013-08-15 17:11:28.996117121 +0200
@@ -12,9 +12,9 @@
need_swig=no
fi
-AC_PATH_PROG(SWIG_EXEC, [swig])
+AC_PATH_PROG(SWIG_EXEC, [swig1.3])
if test "$need_swig" = "yes" -a "x$SWIG_EXEC" = "x"; then
- AC_MSG_ERROR([Current options require swig, but swig binary is not found])
+ AC_MSG_ERROR([Current options require swig 1.3, but swig 1.3 binary is not found])
fi
AM_CONDITIONAL([WITH_SWIG], [test "$want_swig" = "yes"])
])

View File

@ -179,6 +179,7 @@ src_install() {
insinto /etc/logrotate.d
newins "${FILESDIR}"/zarafa.logrotate zarafa || die "Failed to install logrotate"
fi
if use ldap; then
insinto /etc/openldap/schema
doins installer/ldap/zarafa.* || die "Failed to install ldap schema files"

View File

@ -0,0 +1,202 @@
# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $
EAPI="2"
PHP_EXT_NAME="mapi"
PHP_EXT_INI="yes"
PHP_EXT_ZENDEXT="no"
USE_PHP="php5-3 php5-4"
PHPSAPILIST="apache2 cgi cli"
PYTHON_DEPEND="python? 2"
inherit eutils bash-completion flag-o-matic php-ext-base-r1 python unpacker autotools versionator systemd
DESCRIPTION="Open Source Groupware Solution"
HOMEPAGE="http://zarafa.com/"
ZARAFA_RELEASE="final"
MY_PV=$(replace_version_separator 3 '-' )
MY_PVV=$(replace_version_separator 3 'beta' $MY_PV )
MY_PVM=$(get_version_component_range 1-2 )
MY_PVR=$(get_version_component_range 1-3 )
SRC_URI="http://download.zarafa.com/community/${ZARAFA_RELEASE}/${MY_PVM}/${MY_PV}/sourcecode/zcp-${MY_PVR}.tar.gz
amd64? ( licensed? ( http://download.zarafa.com/community/${ZARAFA_RELEASE}/${MY_PVM}/${MY_PV}/zcp-${MY_PV}-ubuntu-12.04-x86_64-free.tar.gz
https://launchpad.net/ubuntu/+archive/primary/+files/libboost-system1.46.1_1.46.1-7ubuntu3_amd64.deb
https://launchpad.net/ubuntu/+archive/primary/+files/libboost-filesystem1.46.1_1.46.1-7ubuntu3_amd64.deb
https://launchpad.net/ubuntu/+archive/primary/+files/libssl1.0.0_1.0.1-4ubuntu5.10_amd64.deb
https://launchpad.net/ubuntu/+archive/primary/+files/libicu48_4.8.1.1-3_amd64.deb ) )
x86? ( licensed? ( http://download.zarafa.com/community/${ZARAFA_RELEASE}/${MY_PVM}/${MY_PV}/zcp-${MY_PV}-ubuntu-12.04-i386-free.tar.gz
https://launchpad.net/ubuntu/+archive/primary/+files/libboost-system1.46.1_1.46.1-7ubuntu3_i386.deb
https://launchpad.net/ubuntu/+archive/primary/+files/libboost-filesystem1.46.1_1.46.1-7ubuntu3_i386.deb
https://launchpad.net/ubuntu/+archive/primary/+files/libssl1.0.0_1.0.1-4ubuntu5.10_i386.deb
https://launchpad.net/ubuntu/+archive/primary/+files/libicu48_4.8.1.1-3_i386.deb ) )"
S="${WORKDIR}"/zarafa-${MY_PVR}
ZARAFA_SERVICES="dagent gateway ical monitor search server spooler"
LICENSE="AGPL-3"
SLOT="0"
KEYWORDS="~x86 ~amd64 ~arm"
RESTRICT="mirror"
IUSE="debug kerberos icu ldap logrotate perl +python static +swig tcmalloc licensed sparsehash profiling pic"
RDEPEND=">=dev-libs/libical-0.44
>=dev-cpp/libvmime-0.9.2_pre512
virtual/httpd-php
virtual/mysql
dev-cpp/clucene
dev-db/kyotocabinet
dev-libs/boost
dev-libs/libxml2
dev-libs/openssl
net-misc/curl
sys-libs/e2fsprogs-libs
sys-libs/zlib
icu? ( dev-libs/icu )
kerberos? ( virtual/krb5 )
ldap? ( net-nds/openldap )
logrotate? ( app-admin/logrotate )
perl? ( dev-lang/perl )
python? ( dev-lang/python )
tcmalloc? ( dev-util/google-perftools )
swig? ( =dev-lang/swig-1.3* )"
DEPEND="${RDEPEND}
sparsehash? ( dev-cpp/sparsehash )
dev-util/pkgconfig
sys-devel/gettext"
pkg_setup() {
python_set_active_version 2
python_pkg_setup
}
src_prepare() {
EPATCH_SOURCE="${FILESDIR}/${PV}" EPATCH_SUFFIX="patch" \
EPATCH_FORCE="yes" epatch
edos2unix php-webclient-ajax/config.php.dist
AT_M4DIR="autoconf" eautoreconf
if use licensed; then
# not a hack just correct a script
sed -i "s!/etc/default/zarafa-ssm!/etc/conf.d/zarafa-ssm!g" "${WORKDIR}"/licensed/usr/bin/zarafa-ssm || die "sed failed"
fi
append-flags "-fPIC"
}
src_unpack() {
unpack zcp-${MY_PVR}.tar.gz
if use licensed; then
if [[ "${ARCH}" == "amd64" ]]; then
unpack zcp-${MY_PV}-ubuntu-12.04-x86_64-free.tar.gz
fi
if [[ "${ARCH}" == "x86" ]]; then
unpack zcp-${MY_PV}-ubuntu-12.04-i386-free.tar.gz
fi
pushd "${WORKDIR}"
mkdir licensed
cd licensed
unpack_deb $(find ./../ -name "zarafa-licensed*.deb")
unpack_deb $(find ./../ -name "zarafa-client*.deb")
unpack_deb $(find ./../../ -name "libboost-system1.46.1*.deb")
unpack_deb $(find ./../../ -name "libboost-filesystem1.46.1*.deb")
unpack_deb $(find ./../../ -name "libssl1.0.0*.deb")
unpack_deb $(find ./../../ -name "libicu48*.deb")
popd
fi
cd "${S}"
}
src_configure() {
append-flags -fpermissive
econf \
--enable-oss \
--disable-testtools \
--enable-release \
--enable-unicode \
--enable-epoll \
--with-userscript-prefix=/etc/zarafa/userscripts \
--with-quotatemplate-prefix=/etc/zarafa/quotamails \
--with-searchscripts-prefix=/etc/zarafa/searchscripts \
$(use_with pic) \
$(use_enable icu) \
$(use_enable static) \
$(use_enable perl) \
$(use_enable python) \
$(use_enable swig) \
$(use_enable tcmalloc)
$(use_enable profiling) \
$(use_enable sparsehash) \
$(use_enable debug)
}
src_compile() {
find swig -type f | xargs touch
emake || die "emake failed"
}
src_install() {
make DESTDIR="${D}" install || die "make install failed"
make DESTDIR="${D}" install-ajax-webaccess || die "make install-ajax-webaccess failed"
#make DESTDIR="${D}" install-mobile-webaccess || die "make install-mobile-webaccess failed"
php-ext-base-r1_src_install
if [[ "${ARCH}" == "x86" || "${ARCH}" == "amd64" ]]; then
if use licensed; then
dobin "${WORKDIR}"/licensed/usr/bin/zarafa-ssm || die "Failed to install licensed binaries"
make_wrapper zarafa-licensed "/opt/zarafa/bin/zarafa-licensed" /opt/zarafa/bin /opt/zarafa/$(get_libdir)
make_wrapper zarafa-report "/opt/zarafa/bin/zarafa-report" /opt/zarafa/bin /opt/zarafa/$(get_libdir)
ZARAFA_SERVICES="${ZARAFA_SERVICES} licensed"
into /opt/zarafa
dobin "${WORKDIR}"/licensed/usr/bin/zarafa-{licensed,report} || die "Failed to install licensed binaries"
dolib.so $(find ${WORKDIR}/licensed -name "*.so*")
doman "${WORKDIR}"/licensed/usr/share/man/*/zarafa-*.gz || die "Failed to install man files"
dodoc "${WORKDIR}"/licensed/usr/share/doc/zarafa-licensed/* || die "Failed to install docs"
insinto /etc/zarafa
doins -r "${WORKDIR}"/licensed/etc/zarafa/* || die "Failed to install config files"
insinto /etc/cron.d
doins "${WORKDIR}"/licensed/etc/cron.d/* || die "Failed to install cron files"
doconfd "${WORKDIR}"/licensed/etc/default/zarafa-ssm || die "Failed to install sysconfig files"
fi
fi
insinto /etc/apache2/modules.d
#newins "${FILESDIR}/50_zarafa-webaccess-mobile.conf" 50_zarafa-webaccess-mobile.conf || die "Failed to install apache config files"
newins "${FILESDIR}/50_zarafa-webaccess.conf" 50_zarafa-webaccess.conf || die "Failed to install apache config files"
rm "${D}"/usr/share/zarafa-webaccess/*.conf || die "Failed to remove apache config files"
#rm "${D}"/usr/share/zarafa-webaccess-mobile/*.conf || die "Failed to remove apache config files"
rm "${D}"/etc/conf.d/zarafa || die "Failed to remove wrong file files"
exeinto /etc/zarafa/userscripts/
newexe "${FILESDIR}"/junklearn.dspam junklearn
if use logrotate; then
insinto /etc/logrotate.d
newins "${FILESDIR}"/zarafa.logrotate zarafa || die "Failed to install logrotate"
fi
if use ldap; then
insinto /etc/openldap/schema
doins installer/ldap/zarafa.* || die "Failed to install ldap schema files"
fi
insinto /etc/zarafa
doins "${S}"/installer/linux/*.cfg || die "Failed to install config files"
dodir /var/log/zarafa
keepdir /var/log/zarafa
for service in ${ZARAFA_SERVICES}; do
newconfd "${FILESDIR}/zarafa-${service}.confd" "zarafa-${service}"
newinitd "${FILESDIR}/zarafa-${service}.initd" "zarafa-${service}"
systemd_newunit "${FILESDIR}/zarafa-${service}.service" "zarafa-${service}.service"
done
dobashcompletion "${FILESDIR}/zarafa-bash-completion.sh" ${PN}
}