diff --git a/ChangeLog b/ChangeLog index c166c5f..d78479f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,17 +1,35 @@ RCS file: RCS/imapsync,v Working file: imapsync -head: 1.500 +head: 1.504 branch: locks: strict - gilles: 1.500 + gilles: 1.504 access list: symbolic names: keyword substitution: kv -total revisions: 500; selected revisions: 500 +total revisions: 504; selected revisions: 504 description: ---------------------------- -revision 1.500 locked by: gilles; +revision 1.504 locked by: gilles; +date: 2012/08/28 13:10:26; author: gilles; state: Exp; lines: +10 -9 +Bugfix. sentsince sentbefore in int seconds. +---------------------------- +revision 1.503 +date: 2012/08/27 23:42:39; author: gilles; state: Exp; lines: +36 -19 +Added transfer rate and messages rate after each copy. +---------------------------- +revision 1.502 +date: 2012/08/27 10:00:43; author: gilles; state: Exp; lines: +43 -22 +Added option --nocheckmessageexists to check speed up with Tobbit imap server. +Bugfix. Convert *|?:"<> characters to _ because they are forbidden on Windows paths. +Use Time::HiRes time to get time with better precesion than the second. +---------------------------- +revision 1.501 +date: 2012/08/13 12:59:23; author: gilles; state: Exp; lines: +101 -101 +Changed tmp dir for tests to W/tmp +---------------------------- +revision 1.500 date: 2012/08/10 04:58:46; author: gilles; state: Exp; lines: +40 -28 Bugfix. The cache system didn't work in Win32 (problem with \ transformation) Added option --nocheckselectable to fix INBOX issue with Jana-server. diff --git a/Makefile b/Makefile index 7a1d8ca..53a8df5 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ -# $Id: Makefile,v 1.96 2012/07/29 22:03:29 gilles Exp gilles $ +# $Id: Makefile,v 1.103 2012/08/29 10:24:17 gilles Exp gilles $ .PHONY: help usage all @@ -31,8 +31,8 @@ VERSION=$(shell perl -I$(IMAPClient) ./imapsync --version) VERSION_EXE=$(shell cat ./VERSION_EXE) HELLO=$(shell date;uname -a) -IMAPClient_2xx=./Mail-IMAPClient-2.2.9 -IMAPClient_3xx=./Mail-IMAPClient-3.31/lib +IMAPClient_2xx=./W/Mail-IMAPClient-2.2.9 +IMAPClient_3xx=./W/Mail-IMAPClient-3.31/lib IMAPClient=$(IMAPClient_3xx) hello: @@ -42,7 +42,6 @@ hello: all: ChangeLog README VERSION imapsync_elf_x86.bin imapsync.exe - testp : perl -c imapsync @@ -53,7 +52,8 @@ README: imapsync perldoc -t imapsync > README VERSION: imapsync - perl -I./$(IMAPClient) ./imapsync --version > VERSION + perl -I./$(IMAPClient) ./imapsync --version > ./VERSION + touch -r ./imapsync ./VERSION .PHONY: clean clean_tilde clean_test @@ -89,7 +89,9 @@ install: testp imapsync.1 ci: cidone cidone: - rcsdiff RCS/* + rcsdiff RCS/* + cd W && rcsdiff RCS/* + cd examples && rcsdiff RCS/* ############### # Local goals @@ -134,8 +136,8 @@ testf: clean_test test .PHONY: lfo upload_lfo niouze_lfo niouze_fm public imapsync_cidone -.dosify_bat: build_exe.bat test_exe.bat test.bat test2.bat imapsync_example.bat.txt - unix2dos build_exe.bat test.bat test_exe.bat test2.bat imapsync_example.bat.txt +.dosify_bat: W/build_exe.bat W/test_exe.bat W/test.bat W/test2.bat examples/imapsync_example.bat.txt + unix2dos W/build_exe.bat W/test.bat W/test_exe.bat W/test2.bat examples/imapsync_example.bat.txt examples/file.txt touch .dosify_bat dosify_bat: .dosify_bat @@ -144,7 +146,7 @@ copy_win32: scp imapsync Admin@c:'C:/msys/1.0/home/Admin/imapsync/' tests_win32: dosify_bat - scp imapsync test.bat Admin@c:'C:/msys/1.0/home/Admin/imapsync/' + scp imapsync W/test.bat Admin@c:'C:/msys/1.0/home/Admin/imapsync/' # ssh Admin@c 'perl C:/msys/1.0/home/Admin/imapsync/imapsync --tests_debug' ssh Admin@c 'perl C:/msys/1.0/home/Admin/imapsync/imapsync --tests' ssh Admin@c 'C:/msys/1.0/home/Admin/imapsync/test.bat' @@ -152,26 +154,26 @@ tests_win32: dosify_bat # ssh Admin@c 'tasklist /NH /FO CSV' tests_win32_dev: dosify_bat - scp imapsync file.txt test2.bat Admin@c:'C:/msys/1.0/home/Admin/imapsync/' + scp imapsync examples/file.txt W/test2.bat Admin@c:'C:/msys/1.0/home/Admin/imapsync/' ssh Admin@c 'C:/msys/1.0/home/Admin/imapsync/test2.bat' test_imapsync_exe: dosify_bat - scp test_exe.bat Admin@c:'C:/msys/1.0/home/Admin/imapsync/' + scp W/test_exe.bat Admin@c:'C:/msys/1.0/home/Admin/imapsync/' time ssh Admin@c 'C:/msys/1.0/home/Admin/imapsync/test_exe.bat' -imapsync.exe: imapsync build_exe.bat .dosify_bat +imapsync.exe: imapsync W/build_exe.bat .dosify_bat rcsdiff imapsync ssh Admin@c 'perl -V' - (date "+%s"| tr "\n" " "; echo -n "BEGIN " $(VERSION) ": "; date) >> .BUILD_EXE_TIME - scp imapsync build_exe.bat test_exe.bat \ + (date "+%s"| tr "\n" " "; echo -n "BEGIN " $(VERSION) ": "; date) >> W/.BUILD_EXE_TIME + scp imapsync W/build_exe.bat W/test_exe.bat \ Admin@c:'C:/msys/1.0/home/Admin/imapsync/' ssh Admin@c 'C:/msys/1.0/home/Admin/imapsync/build_exe.bat' ssh Admin@c 'C:/msys/1.0/home/Admin/imapsync/test_exe.bat' scp Admin@c:'C:/msys/1.0/home/Admin/imapsync/imapsync.exe' . - ssh Admin@c 'C:/msys/1.0/home/Admin/imapsync/imapsync.exe --version' > VERSION_EXE - dos2unix VERSION_EXE - (date "+%s"| tr "\n" " "; echo -n "END " $(VERSION) ": "; date) >> .BUILD_EXE_TIME + ssh Admin@c 'C:/msys/1.0/home/Admin/imapsync/imapsync.exe --version' > ./VERSION_EXE + dos2unix ./VERSION_EXE + (date "+%s"| tr "\n" " "; echo -n "END " $(VERSION) ": "; date) >> W/.BUILD_EXE_TIME # vadrouille or petite @@ -186,7 +188,7 @@ imapsync_elf_x86.bin: imapsync } || : { test 'petite' = "`hostname`" && \ pp -o imapsync_elf_x86.bin -I $(IMAPClient_3xx) \ - -I NTLM-1.09/blib/lib \ + -I W/NTLM-1.09/blib/lib \ -M Mail::IMAPClient -M IO::Socket -M IO::Socket::SSL \ -M Digest::MD5 -M Digest::HMAC_MD5 -M Term::ReadKey \ -M Authen::NTLM \ @@ -255,30 +257,49 @@ dist_prepa_exe: imapsync.exe .PHONY: publish upload_ks ks ks: - rsync -avz --delete --exclude imapsync.exe \ + rsync -avHz --delete --exclude imapsync.exe \ + . imapsync@ks.lamiral.info:public_html/imapsync/ + +ksa: + rsync -avHz --delete \ . imapsync@ks.lamiral.info:public_html/imapsync/ publish: upload_ks ks PUBLIC_FILES = ./ChangeLog ./COPYING ./CREDITS ./FAQ \ -./index.shtml ./INSTALL ./TIME \ -./logo_imapsync.png ./logo_imapsync_s.png \ -./paypal.shtml ./paypal_return.shtml ./paypal_return_support.shtml \ -./README ./style.css ./TODO ./VERSION ./VERSION_EXE ./memo ./file.txt \ -./imapsync_example.bat.txt +./index.shtml ./INSTALL \ +./README ./TODO -upload_ks: +PUBLIC_FILES_W = ./W/style.css \ +./TIME \ +./VERSION ./VERSION_EXE \ +./W/paypal.shtml ./W/paypal_return.shtml ./W/paypal_return_support.shtml + + +PUBLIC_FILES_IMAGES = ./W/images/logo_imapsync.png ./W/images/logo_imapsync_s.png + + +upload_ks: ci rsync -lptvHzP $(PUBLIC_FILES) \ root@ks.lamiral.info:/var/www/imapsync/ + rsync -lptvHzP $(PUBLIC_FILES_W) \ + root@ks.lamiral.info:/var/www/imapsync/W/ + rsync -lptvHzP $(PUBLIC_FILES_IMAGES) \ + root@ks.lamiral.info:/var/www/imapsync/W/images/ + rsync -lptvHzP ./W/ks.htaccess \ + root@ks.lamiral.info:/var/www/imapsync/.htaccess rsync -lptvHzrP ./dist/ \ root@ks.lamiral.info:/var/www/imapsync/dist/ + rsync -lptvHzrP ./examples/ \ + root@ks.lamiral.info:/var/www/imapsync/examples/ upload_lfo: #rm -rf /home/gilles/public_html/www.linux-france.org/html/prj/imapsync/ #rm -rf /home/gilles/public_html/www.linux-france.org/ftp/prj/imapsync/ - rsync -avHz $(PUBLIC_FILES) \ - /home/gilles/public_html/www.linux-france.org/html/prj/imapsync/ - rsync -lptvHzP ./lfo.htaccess \ + #rsync -avHz $(PUBLIC_FILES) \ + #/home/gilles/public_html/www.linux-france.org/html/prj/imapsync/ + rsync -lptvHzP ./W/memo glamiral@linux-france.org:imapsync_stats/memo + rsync -lptvHzP ./W/lfo.htaccess \ /home/gilles/public_html/www.linux-france.org/html/prj/imapsync/.htaccess sh ~/memo/lfo-rsync diff --git a/README b/README index 27cca89..70ae444 100644 --- a/README +++ b/README @@ -3,7 +3,7 @@ NAME Synchronise mailboxes between two imap servers. Good at IMAP migration. More than 44 different IMAP server softwares supported with success. - $Revision: 1.500 $ + $Revision: 1.504 $ SYNOPSIS To synchronise imap account "foo" on "imap.truc.org" to imap account @@ -440,5 +440,5 @@ SIMILAR SOFTWARES Feedback (good or bad) will often be welcome. - $Id: imapsync,v 1.500 2012/08/10 04:58:46 gilles Exp gilles $ + $Id: imapsync,v 1.504 2012/08/28 13:10:26 gilles Exp gilles $ diff --git a/VERSION b/VERSION index 327925c..8178b0b 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.500 +1.504 diff --git a/VERSION_EXE b/VERSION_EXE index 327925c..8178b0b 100644 --- a/VERSION_EXE +++ b/VERSION_EXE @@ -1 +1 @@ -1.500 +1.504 diff --git a/W/.BUILD_EXE_TIME b/W/.BUILD_EXE_TIME new file mode 100644 index 0000000..044bd0d --- /dev/null +++ b/W/.BUILD_EXE_TIME @@ -0,0 +1,154 @@ +1287414970 BEGIN 1.359 : lundi 18 octobre 2010, 17:16:10 (UTC+0200) +1287415485 END 1.359 : lundi 18 octobre 2010, 17:24:45 (UTC+0200) +1287529537 BEGIN 1.361 : mercredi 20 octobre 2010, 01:05:37 (UTC+0200) +1287530365 END 1.361 : mercredi 20 octobre 2010, 01:19:25 (UTC+0200) +1287959884 BEGIN 1.363 : lundi 25 octobre 2010, 00:38:04 (UTC+0200) +1287959962 BEGIN 1.363 : lundi 25 octobre 2010, 00:39:22 (UTC+0200) +1287961164 END 1.363 : lundi 25 octobre 2010, 00:59:24 (UTC+0200) +1288000749 BEGIN 1.364 : lundi 25 octobre 2010, 11:59:09 (UTC+0200) +1288001592 END 1.364 : lundi 25 octobre 2010, 12:13:12 (UTC+0200) +1288007207 BEGIN 1.365 : lundi 25 octobre 2010, 13:46:47 (UTC+0200) +1288007339 BEGIN 1.365 : lundi 25 octobre 2010, 13:48:59 (UTC+0200) +1288007381 BEGIN 1.365 : lundi 25 octobre 2010, 13:49:41 (UTC+0200) +1288008514 END 1.365 : lundi 25 octobre 2010, 14:08:34 (UTC+0200) +1288027748 BEGIN 1.366 : lundi 25 octobre 2010, 19:29:08 (UTC+0200) +1288028635 END 1.366 : lundi 25 octobre 2010, 19:43:55 (UTC+0200) +1288392218 BEGIN 1.366 : samedi 30 octobre 2010, 00:43:38 (UTC+0200) +1288392376 BEGIN 1.366 : samedi 30 octobre 2010, 00:46:16 (UTC+0200) +1288393061 BEGIN 1.366 : samedi 30 octobre 2010, 00:57:41 (UTC+0200) +1288394122 END 1.366 : samedi 30 octobre 2010, 01:15:22 (UTC+0200) +1288441141 BEGIN 1.366 : samedi 30 octobre 2010, 14:19:01 (UTC+0200) +1288442098 END 1.366 : samedi 30 octobre 2010, 14:34:58 (UTC+0200) +1288672517 BEGIN 1.370 : mardi 2 novembre 2010, 05:35:17 (UTC+0100) +1288673466 END 1.370 : mardi 2 novembre 2010, 05:51:06 (UTC+0100) +1288749547 BEGIN 1.372 : mercredi 3 novembre 2010, 02:59:07 (UTC+0100) +1288750449 END 1.372 : mercredi 3 novembre 2010, 03:14:09 (UTC+0100) +1289172807 BEGIN 1.375 : lundi 8 novembre 2010, 00:33:27 (UTC+0100) +1289173896 BEGIN 1.375 : lundi 8 novembre 2010, 00:51:36 (UTC+0100) +1289174968 END 1.375 : lundi 8 novembre 2010, 01:09:28 (UTC+0100) +1289267414 BEGIN 1.376 : mardi 9 novembre 2010, 02:50:14 (UTC+0100) +1289268358 END 1.376 : mardi 9 novembre 2010, 03:05:58 (UTC+0100) +1289268882 BEGIN 1.377 : mardi 9 novembre 2010, 03:14:42 (UTC+0100) +1289269805 END 1.377 : mardi 9 novembre 2010, 03:30:05 (UTC+0100) +1289530140 BEGIN 1.379 : vendredi 12 novembre 2010, 03:49:00 (UTC+0100) +1289530697 END 1.379 : vendredi 12 novembre 2010, 03:58:17 (UTC+0100) +1290919960 BEGIN 1.383 : dimanche 28 novembre 2010, 05:52:40 (UTC+0100) +1290920529 END 1.383 : dimanche 28 novembre 2010, 06:02:09 (UTC+0100) +1293675398 BEGIN 1.388 : jeudi 30 décembre 2010, 03:16:38 (UTC+0100) +1293675986 END 1.388 : jeudi 30 décembre 2010, 03:26:26 (UTC+0100) +1294638763 BEGIN 1.390 : lundi 10 janvier 2011, 06:52:43 (UTC+0100) +1294639451 END 1.390 : lundi 10 janvier 2011, 07:04:11 (UTC+0100) +1295319336 BEGIN 1.397 : mardi 18 janvier 2011, 03:55:36 (UTC+0100) +1295319857 BEGIN 1.398 : mardi 18 janvier 2011, 04:04:17 (UTC+0100) +1295320425 END 1.398 : mardi 18 janvier 2011, 04:13:45 (UTC+0100) +1297861110 BEGIN 1.402 : mercredi 16 février 2011, 13:58:30 (UTC+0100) +1297861912 END 1.402 : mercredi 16 février 2011, 14:11:52 (UTC+0100) +1298253714 BEGIN 1.403 : lundi 21 février 2011, 03:01:54 (UTC+0100) +1298254508 END 1.403 : lundi 21 février 2011, 03:15:08 (UTC+0100) +1298255478 BEGIN 1.403 : lundi 21 février 2011, 03:31:18 (UTC+0100) +1298256141 END 1.403 : lundi 21 février 2011, 03:42:21 (UTC+0100) +1298260592 BEGIN 1.404 : lundi 21 février 2011, 04:56:32 (UTC+0100) +1298261452 END 1.404 : lundi 21 février 2011, 05:10:52 (UTC+0100) +1301785718 BEGIN 1.407 : dimanche 3 avril 2011, 01:08:38 (UTC+0200) +1301848291 BEGIN 1.407 : dimanche 3 avril 2011, 18:31:31 (UTC+0200) +1301848906 END 1.407 : dimanche 3 avril 2011, 18:41:46 (UTC+0200) +1303254735 BEGIN 1.410 : mercredi 20 avril 2011, 01:12:15 (UTC+0200) +1303255348 END 1.410 : mercredi 20 avril 2011, 01:22:28 (UTC+0200) +1303256202 BEGIN 1.411 : mercredi 20 avril 2011, 01:36:42 (UTC+0200) +1303256792 END 1.411 : mercredi 20 avril 2011, 01:46:32 (UTC+0200) +1304002264 BEGIN 1.412 : jeudi 28 avril 2011, 16:51:04 (UTC+0200) +1304002897 END 1.412 : jeudi 28 avril 2011, 17:01:37 (UTC+0200) +1304123317 BEGIN 1.414 : samedi 30 avril 2011, 02:28:37 (UTC+0200) +1304123975 END 1.414 : samedi 30 avril 2011, 02:39:35 (UTC+0200) +1304213299 BEGIN 1.415 : dimanche 1 mai 2011, 03:28:19 (UTC+0200) +1304213991 END 1.415 : dimanche 1 mai 2011, 03:39:51 (UTC+0200) +1304611981 BEGIN 1.417 : jeudi 5 mai 2011, 18:13:01 (UTC+0200) +1304612684 END 1.417 : jeudi 5 mai 2011, 18:24:44 (UTC+0200) +1304816113 BEGIN 1.420 : dimanche 8 mai 2011, 02:55:13 (UTC+0200) +1304816775 END 1.420 : dimanche 8 mai 2011, 03:06:15 (UTC+0200) +1304876623 BEGIN 1.422 : dimanche 8 mai 2011, 19:43:43 (UTC+0200) +1304877295 END 1.422 : dimanche 8 mai 2011, 19:54:55 (UTC+0200) +1305335556 BEGIN 1.425 : samedi 14 mai 2011, 03:12:36 (UTC+0200) +1305335701 BEGIN 1.426 : samedi 14 mai 2011, 03:15:01 (UTC+0200) +1305335893 BEGIN 1.426 : samedi 14 mai 2011, 03:18:13 (UTC+0200) +1305336587 END 1.426 : samedi 14 mai 2011, 03:29:47 (UTC+0200) +1305337730 BEGIN 1.427 : samedi 14 mai 2011, 03:48:50 (UTC+0200) +1305338433 END 1.427 : samedi 14 mai 2011, 04:00:33 (UTC+0200) +1305340416 BEGIN 1.428 : samedi 14 mai 2011, 04:33:36 (UTC+0200) +1305341178 END 1.428 : samedi 14 mai 2011, 04:46:18 (UTC+0200) +1305421759 BEGIN 1.431 : dimanche 15 mai 2011, 03:09:19 (UTC+0200) +1305422519 END 1.431 : dimanche 15 mai 2011, 03:21:59 (UTC+0200) +1305516015 BEGIN 1.433 : lundi 16 mai 2011, 05:20:16 (UTC+0200) +1305516805 END 1.433 : lundi 16 mai 2011, 05:33:25 (UTC+0200) +1305530708 BEGIN 1.434 : lundi 16 mai 2011, 09:25:08 (UTC+0200) +1305531494 END 1.434 : lundi 16 mai 2011, 09:38:14 (UTC+0200) +1305566629 BEGIN 1.434 : lundi 16 mai 2011, 19:23:49 (UTC+0200) +1306773025 BEGIN 1.444 : lundi 30 mai 2011, 18:30:25 (UTC+0200) +1306774566 BEGIN 1.444 : lundi 30 mai 2011, 18:56:06 (UTC+0200) +1306775410 END 1.444 : lundi 30 mai 2011, 19:10:10 (UTC+0200) +1306792918 BEGIN 1.444 : mardi 31 mai 2011, 00:01:58 (UTC+0200) +1306793766 END 1.444 : mardi 31 mai 2011, 00:16:06 (UTC+0200) +1306834735 BEGIN 1.446 : mardi 31 mai 2011, 11:38:55 (UTC+0200) +1306835728 END 1.446 : mardi 31 mai 2011, 11:55:28 (UTC+0200) +1310344505 BEGIN 1.452 : lundi 11 juillet 2011, 02:35:05 (UTC+0200) +1310345745 BEGIN 1.452 : lundi 11 juillet 2011, 02:55:45 (UTC+0200) +1310345934 BEGIN 1.452 : lundi 11 juillet 2011, 02:58:54 (UTC+0200) +1310346470 END 1.452 : lundi 11 juillet 2011, 03:07:50 (UTC+0200) +1310657415 BEGIN 1.452 : jeudi 14 juillet 2011, 17:30:15 (UTC+0200) +1310658721 END 1.452 : jeudi 14 juillet 2011, 17:52:01 (UTC+0200) +1311908493 BEGIN 1.455 : vendredi 29 juillet 2011, 05:01:33 (UTC+0200) +1311909777 END 1.455 : vendredi 29 juillet 2011, 05:22:57 (UTC+0200) +1314166856 BEGIN 1.456 : mercredi 24 août 2011, 08:20:56 (UTC+0200) +1314168142 END 1.456 : mercredi 24 août 2011, 08:42:22 (UTC+0200) +1314171749 BEGIN 1.456 : mercredi 24 août 2011, 09:42:29 (UTC+0200) +1314173017 END 1.456 : mercredi 24 août 2011, 10:03:37 (UTC+0200) +1321108837 BEGIN 1.462 : samedi 12 novembre 2011, 15:40:37 (UTC+0100) +1321129414 BEGIN 1.462 : samedi 12 novembre 2011, 21:23:34 (UTC+0100) +1321130650 END 1.462 : samedi 12 novembre 2011, 21:44:10 (UTC+0100) +1321176819 BEGIN 1.463 : dimanche 13 novembre 2011, 10:33:40 (UTC+0100) +1321178088 END 1.463 : dimanche 13 novembre 2011, 10:54:48 (UTC+0100) +1321319225 BEGIN 1.464 : mardi 15 novembre 2011, 02:07:05 (UTC+0100) +1321320488 END 1.464 : mardi 15 novembre 2011, 02:28:08 (UTC+0100) +1321581274 BEGIN 1.468 : vendredi 18 novembre 2011, 02:54:34 (UTC+0100) +1321582671 END 1.468 : vendredi 18 novembre 2011, 03:17:51 (UTC+0100) +1321630549 BEGIN 1.468 : vendredi 18 novembre 2011, 16:35:49 (UTC+0100) +1321631939 END 1.468 : vendredi 18 novembre 2011, 16:58:59 (UTC+0100) +1322799435 BEGIN 1.473 : vendredi 2 décembre 2011, 05:17:15 (UTC+0100) +1322800825 END 1.473 : vendredi 2 décembre 2011, 05:40:25 (UTC+0100) +1323481197 BEGIN 1.476 : samedi 10 décembre 2011, 02:39:57 (UTC+0100) +1323483957 END 1.476 : samedi 10 décembre 2011, 03:25:57 (UTC+0100) +1325999759 BEGIN 1.480 : dimanche 8 janvier 2012, 06:15:59 (UTC+0100) +1326001199 END 1.480 : dimanche 8 janvier 2012, 06:39:59 (UTC+0100) +1326006966 BEGIN 1.480 : dimanche 8 janvier 2012, 08:16:06 (UTC+0100) +1326008395 END 1.480 : dimanche 8 janvier 2012, 08:39:55 (UTC+0100) +1328570342 BEGIN 1.483 : mardi 7 février 2012, 00:19:02 (UTC+0100) +1328579636 BEGIN 1.484 : mardi 7 février 2012, 02:53:56 (UTC+0100) +1328582268 END 1.484 : mardi 7 février 2012, 03:37:48 (UTC+0100) +1328612115 BEGIN 1.484 : mardi 7 février 2012, 11:55:15 (UTC+0100) +1328614619 END 1.484 : mardi 7 février 2012, 12:36:59 (UTC+0100) +1330180997 BEGIN 1.486 : samedi 25 février 2012, 15:43:17 (UTC+0100) +1330183785 END 1.486 : samedi 25 février 2012, 16:29:45 (UTC+0100) +1330493497 BEGIN 1.487 : mercredi 29 février 2012, 06:31:37 (UTC+0100) +1330496194 END 1.487 : mercredi 29 février 2012, 07:16:34 (UTC+0100) +1334360626 BEGIN 1.487 : samedi 14 avril 2012, 01:43:46 (UTC+0200) +1334361596 END 1.487 : samedi 14 avril 2012, 01:59:56 (UTC+0200) +1334511846 BEGIN 1.488 : dimanche 15 avril 2012, 19:44:07 (UTC+0200) +1334512816 END 1.488 : dimanche 15 avril 2012, 20:00:16 (UTC+0200) +1342519040 BEGIN 1.497 : mardi 17 juillet 2012, 11:57:20 (UTC+0200) +1342520082 END 1.497 : mardi 17 juillet 2012, 12:14:42 (UTC+0200) +1342795821 BEGIN 1.498 : vendredi 20 juillet 2012, 16:50:21 (UTC+0200) +1342796692 BEGIN 1.498 : vendredi 20 juillet 2012, 17:04:52 (UTC+0200) +1342796879 END 1.498 : vendredi 20 juillet 2012, 17:07:59 (UTC+0200) +1342797789 END 1.498 : vendredi 20 juillet 2012, 17:23:09 (UTC+0200) +1344574981 BEGIN 1.500 : vendredi 10 août 2012, 07:03:01 (UTC+0200) +1344576351 END 1.500 : vendredi 10 août 2012, 07:25:51 (UTC+0200) +1344637410 BEGIN 1.500 : samedi 11 août 2012, 00:23:30 (UTC+0200) +1344638512 END 1.500 : samedi 11 août 2012, 00:41:52 (UTC+0200) +1344862816 BEGIN 1.501 : lundi 13 août 2012, 15:00:16 (UTC+0200) +1344864048 END 1.501 : lundi 13 août 2012, 15:20:48 (UTC+0200) +1346111304 BEGIN 1.503 : mardi 28 août 2012, 01:48:25 (UTC+0200) +1346112385 END 1.503 : mardi 28 août 2012, 02:06:25 (UTC+0200) +1346159791 BEGIN 1.504 : mardi 28 août 2012, 15:16:31 (UTC+0200) +1346160945 END 1.504 : mardi 28 août 2012, 15:35:45 (UTC+0200) +1346241775 BEGIN 1.504 : mercredi 29 août 2012, 14:02:55 (UTC+0200) +1346242932 END 1.504 : mercredi 29 août 2012, 14:22:12 (UTC+0200) diff --git a/Mail-IMAPClient-2.2.9/Artistic b/W/Mail-IMAPClient-2.2.9/Artistic similarity index 100% rename from Mail-IMAPClient-2.2.9/Artistic rename to W/Mail-IMAPClient-2.2.9/Artistic diff --git a/Mail-IMAPClient-2.2.9/BUG_REPORTS b/W/Mail-IMAPClient-2.2.9/BUG_REPORTS similarity index 100% rename from Mail-IMAPClient-2.2.9/BUG_REPORTS rename to W/Mail-IMAPClient-2.2.9/BUG_REPORTS diff --git a/Mail-IMAPClient-2.2.9/BodyStructure/BodyStructure.pm b/W/Mail-IMAPClient-2.2.9/BodyStructure/BodyStructure.pm similarity index 100% rename from Mail-IMAPClient-2.2.9/BodyStructure/BodyStructure.pm rename to W/Mail-IMAPClient-2.2.9/BodyStructure/BodyStructure.pm diff --git a/Mail-IMAPClient-2.2.9/BodyStructure/COPYRIGHT b/W/Mail-IMAPClient-2.2.9/BodyStructure/COPYRIGHT similarity index 100% rename from Mail-IMAPClient-2.2.9/BodyStructure/COPYRIGHT rename to W/Mail-IMAPClient-2.2.9/BodyStructure/COPYRIGHT diff --git a/Mail-IMAPClient-2.2.9/BodyStructure/Makefile.PL b/W/Mail-IMAPClient-2.2.9/BodyStructure/Makefile.PL similarity index 100% rename from Mail-IMAPClient-2.2.9/BodyStructure/Makefile.PL rename to W/Mail-IMAPClient-2.2.9/BodyStructure/Makefile.PL diff --git a/Mail-IMAPClient-2.2.9/BodyStructure/Parse/Makefile.PL b/W/Mail-IMAPClient-2.2.9/BodyStructure/Parse/Makefile.PL similarity index 100% rename from Mail-IMAPClient-2.2.9/BodyStructure/Parse/Makefile.PL rename to W/Mail-IMAPClient-2.2.9/BodyStructure/Parse/Makefile.PL diff --git a/Mail-IMAPClient-2.2.9/BodyStructure/Parse/Parse.grammar_new b/W/Mail-IMAPClient-2.2.9/BodyStructure/Parse/Parse.grammar_new similarity index 100% rename from Mail-IMAPClient-2.2.9/BodyStructure/Parse/Parse.grammar_new rename to W/Mail-IMAPClient-2.2.9/BodyStructure/Parse/Parse.grammar_new diff --git a/Mail-IMAPClient-2.2.9/BodyStructure/Parse/Parse.grammar_old b/W/Mail-IMAPClient-2.2.9/BodyStructure/Parse/Parse.grammar_old similarity index 100% rename from Mail-IMAPClient-2.2.9/BodyStructure/Parse/Parse.grammar_old rename to W/Mail-IMAPClient-2.2.9/BodyStructure/Parse/Parse.grammar_old diff --git a/Mail-IMAPClient-2.2.9/BodyStructure/Parse/Parse.pod b/W/Mail-IMAPClient-2.2.9/BodyStructure/Parse/Parse.pod similarity index 100% rename from Mail-IMAPClient-2.2.9/BodyStructure/Parse/Parse.pod rename to W/Mail-IMAPClient-2.2.9/BodyStructure/Parse/Parse.pod diff --git a/Mail-IMAPClient-2.2.9/BodyStructure/Parse/t/parse.t b/W/Mail-IMAPClient-2.2.9/BodyStructure/Parse/t/parse.t similarity index 100% rename from Mail-IMAPClient-2.2.9/BodyStructure/Parse/t/parse.t rename to W/Mail-IMAPClient-2.2.9/BodyStructure/Parse/t/parse.t diff --git a/Mail-IMAPClient-2.2.9/BodyStructure/t/bodystructure.t b/W/Mail-IMAPClient-2.2.9/BodyStructure/t/bodystructure.t similarity index 100% rename from Mail-IMAPClient-2.2.9/BodyStructure/t/bodystructure.t rename to W/Mail-IMAPClient-2.2.9/BodyStructure/t/bodystructure.t diff --git a/Mail-IMAPClient-2.2.9/COPYRIGHT b/W/Mail-IMAPClient-2.2.9/COPYRIGHT similarity index 100% rename from Mail-IMAPClient-2.2.9/COPYRIGHT rename to W/Mail-IMAPClient-2.2.9/COPYRIGHT diff --git a/Mail-IMAPClient-2.2.9/Changes b/W/Mail-IMAPClient-2.2.9/Changes similarity index 100% rename from Mail-IMAPClient-2.2.9/Changes rename to W/Mail-IMAPClient-2.2.9/Changes diff --git a/Mail-IMAPClient-2.2.9/Copying b/W/Mail-IMAPClient-2.2.9/Copying similarity index 100% rename from Mail-IMAPClient-2.2.9/Copying rename to W/Mail-IMAPClient-2.2.9/Copying diff --git a/Mail-IMAPClient-2.2.9/IMAPClient b/W/Mail-IMAPClient-2.2.9/IMAPClient similarity index 100% rename from Mail-IMAPClient-2.2.9/IMAPClient rename to W/Mail-IMAPClient-2.2.9/IMAPClient diff --git a/Mail-IMAPClient-2.2.9/IMAPClient.pm b/W/Mail-IMAPClient-2.2.9/IMAPClient.pm similarity index 100% rename from Mail-IMAPClient-2.2.9/IMAPClient.pm rename to W/Mail-IMAPClient-2.2.9/IMAPClient.pm diff --git a/Mail-IMAPClient-2.2.9/IMAPClient.pod b/W/Mail-IMAPClient-2.2.9/IMAPClient.pod similarity index 100% rename from Mail-IMAPClient-2.2.9/IMAPClient.pod rename to W/Mail-IMAPClient-2.2.9/IMAPClient.pod diff --git a/Mail-IMAPClient-2.2.9/INSTALL b/W/Mail-IMAPClient-2.2.9/INSTALL similarity index 100% rename from Mail-IMAPClient-2.2.9/INSTALL rename to W/Mail-IMAPClient-2.2.9/INSTALL diff --git a/Mail-IMAPClient-2.2.9/INSTALL_perl5.80 b/W/Mail-IMAPClient-2.2.9/INSTALL_perl5.80 similarity index 100% rename from Mail-IMAPClient-2.2.9/INSTALL_perl5.80 rename to W/Mail-IMAPClient-2.2.9/INSTALL_perl5.80 diff --git a/Mail-IMAPClient-2.2.9/MANIFEST b/W/Mail-IMAPClient-2.2.9/MANIFEST similarity index 100% rename from Mail-IMAPClient-2.2.9/MANIFEST rename to W/Mail-IMAPClient-2.2.9/MANIFEST diff --git a/Mail-IMAPClient-2.2.9/Mail b/W/Mail-IMAPClient-2.2.9/Mail similarity index 100% rename from Mail-IMAPClient-2.2.9/Mail rename to W/Mail-IMAPClient-2.2.9/Mail diff --git a/Mail-IMAPClient-2.2.9/Makefile.PL b/W/Mail-IMAPClient-2.2.9/Makefile.PL similarity index 100% rename from Mail-IMAPClient-2.2.9/Makefile.PL rename to W/Mail-IMAPClient-2.2.9/Makefile.PL diff --git a/Mail-IMAPClient-2.2.9/MessageSet.pm b/W/Mail-IMAPClient-2.2.9/MessageSet.pm similarity index 100% rename from Mail-IMAPClient-2.2.9/MessageSet.pm rename to W/Mail-IMAPClient-2.2.9/MessageSet.pm diff --git a/Mail-IMAPClient-2.2.9/MessageSet/COPYRIGHT b/W/Mail-IMAPClient-2.2.9/MessageSet/COPYRIGHT similarity index 100% rename from Mail-IMAPClient-2.2.9/MessageSet/COPYRIGHT rename to W/Mail-IMAPClient-2.2.9/MessageSet/COPYRIGHT diff --git a/Mail-IMAPClient-2.2.9/MessageSet/Makefile.PL b/W/Mail-IMAPClient-2.2.9/MessageSet/Makefile.PL similarity index 100% rename from Mail-IMAPClient-2.2.9/MessageSet/Makefile.PL rename to W/Mail-IMAPClient-2.2.9/MessageSet/Makefile.PL diff --git a/Mail-IMAPClient-2.2.9/MessageSet/MessageSet.pm b/W/Mail-IMAPClient-2.2.9/MessageSet/MessageSet.pm similarity index 100% rename from Mail-IMAPClient-2.2.9/MessageSet/MessageSet.pm rename to W/Mail-IMAPClient-2.2.9/MessageSet/MessageSet.pm diff --git a/Mail-IMAPClient-2.2.9/MessageSet/t/range.t b/W/Mail-IMAPClient-2.2.9/MessageSet/t/range.t similarity index 100% rename from Mail-IMAPClient-2.2.9/MessageSet/t/range.t rename to W/Mail-IMAPClient-2.2.9/MessageSet/t/range.t diff --git a/Mail-IMAPClient-2.2.9/README b/W/Mail-IMAPClient-2.2.9/README similarity index 100% rename from Mail-IMAPClient-2.2.9/README rename to W/Mail-IMAPClient-2.2.9/README diff --git a/Mail-IMAPClient-2.2.9/Thread/COPYRIGHT b/W/Mail-IMAPClient-2.2.9/Thread/COPYRIGHT similarity index 100% rename from Mail-IMAPClient-2.2.9/Thread/COPYRIGHT rename to W/Mail-IMAPClient-2.2.9/Thread/COPYRIGHT diff --git a/Mail-IMAPClient-2.2.9/Thread/Makefile.PL b/W/Mail-IMAPClient-2.2.9/Thread/Makefile.PL similarity index 100% rename from Mail-IMAPClient-2.2.9/Thread/Makefile.PL rename to W/Mail-IMAPClient-2.2.9/Thread/Makefile.PL diff --git a/Mail-IMAPClient-2.2.9/Thread/Thread.grammar_new b/W/Mail-IMAPClient-2.2.9/Thread/Thread.grammar_new similarity index 100% rename from Mail-IMAPClient-2.2.9/Thread/Thread.grammar_new rename to W/Mail-IMAPClient-2.2.9/Thread/Thread.grammar_new diff --git a/Mail-IMAPClient-2.2.9/Thread/Thread.grammar_old b/W/Mail-IMAPClient-2.2.9/Thread/Thread.grammar_old similarity index 100% rename from Mail-IMAPClient-2.2.9/Thread/Thread.grammar_old rename to W/Mail-IMAPClient-2.2.9/Thread/Thread.grammar_old diff --git a/Mail-IMAPClient-2.2.9/Thread/Thread.pod b/W/Mail-IMAPClient-2.2.9/Thread/Thread.pod similarity index 100% rename from Mail-IMAPClient-2.2.9/Thread/Thread.pod rename to W/Mail-IMAPClient-2.2.9/Thread/Thread.pod diff --git a/Mail-IMAPClient-2.2.9/Thread/t/thread.t b/W/Mail-IMAPClient-2.2.9/Thread/t/thread.t similarity index 100% rename from Mail-IMAPClient-2.2.9/Thread/t/thread.t rename to W/Mail-IMAPClient-2.2.9/Thread/t/thread.t diff --git a/Mail-IMAPClient-2.2.9/Todo b/W/Mail-IMAPClient-2.2.9/Todo similarity index 100% rename from Mail-IMAPClient-2.2.9/Todo rename to W/Mail-IMAPClient-2.2.9/Todo diff --git a/Mail-IMAPClient-2.2.9/docs/COPYRIGHT b/W/Mail-IMAPClient-2.2.9/docs/COPYRIGHT similarity index 100% rename from Mail-IMAPClient-2.2.9/docs/COPYRIGHT rename to W/Mail-IMAPClient-2.2.9/docs/COPYRIGHT diff --git a/Mail-IMAPClient-2.2.9/docs/draft-crispin-imapv-17.txt b/W/Mail-IMAPClient-2.2.9/docs/draft-crispin-imapv-17.txt similarity index 100% rename from Mail-IMAPClient-2.2.9/docs/draft-crispin-imapv-17.txt rename to W/Mail-IMAPClient-2.2.9/docs/draft-crispin-imapv-17.txt diff --git a/Mail-IMAPClient-2.2.9/docs/draft-ietf-imapext-annotate-04.txt b/W/Mail-IMAPClient-2.2.9/docs/draft-ietf-imapext-annotate-04.txt similarity index 100% rename from Mail-IMAPClient-2.2.9/docs/draft-ietf-imapext-annotate-04.txt rename to W/Mail-IMAPClient-2.2.9/docs/draft-ietf-imapext-annotate-04.txt diff --git a/Mail-IMAPClient-2.2.9/docs/draft-ietf-imapext-sort-06.txt b/W/Mail-IMAPClient-2.2.9/docs/draft-ietf-imapext-sort-06.txt similarity index 100% rename from Mail-IMAPClient-2.2.9/docs/draft-ietf-imapext-sort-06.txt rename to W/Mail-IMAPClient-2.2.9/docs/draft-ietf-imapext-sort-06.txt diff --git a/Mail-IMAPClient-2.2.9/docs/draft-ietf-imapext-thread-11.txt b/W/Mail-IMAPClient-2.2.9/docs/draft-ietf-imapext-thread-11.txt similarity index 100% rename from Mail-IMAPClient-2.2.9/docs/draft-ietf-imapext-thread-11.txt rename to W/Mail-IMAPClient-2.2.9/docs/draft-ietf-imapext-thread-11.txt diff --git a/Mail-IMAPClient-2.2.9/docs/rfc1731.txt b/W/Mail-IMAPClient-2.2.9/docs/rfc1731.txt similarity index 100% rename from Mail-IMAPClient-2.2.9/docs/rfc1731.txt rename to W/Mail-IMAPClient-2.2.9/docs/rfc1731.txt diff --git a/Mail-IMAPClient-2.2.9/docs/rfc1732.txt b/W/Mail-IMAPClient-2.2.9/docs/rfc1732.txt similarity index 100% rename from Mail-IMAPClient-2.2.9/docs/rfc1732.txt rename to W/Mail-IMAPClient-2.2.9/docs/rfc1732.txt diff --git a/Mail-IMAPClient-2.2.9/docs/rfc1733.txt b/W/Mail-IMAPClient-2.2.9/docs/rfc1733.txt similarity index 100% rename from Mail-IMAPClient-2.2.9/docs/rfc1733.txt rename to W/Mail-IMAPClient-2.2.9/docs/rfc1733.txt diff --git a/Mail-IMAPClient-2.2.9/docs/rfc2060.txt b/W/Mail-IMAPClient-2.2.9/docs/rfc2060.txt similarity index 100% rename from Mail-IMAPClient-2.2.9/docs/rfc2060.txt rename to W/Mail-IMAPClient-2.2.9/docs/rfc2060.txt diff --git a/Mail-IMAPClient-2.2.9/docs/rfc2061.txt b/W/Mail-IMAPClient-2.2.9/docs/rfc2061.txt similarity index 100% rename from Mail-IMAPClient-2.2.9/docs/rfc2061.txt rename to W/Mail-IMAPClient-2.2.9/docs/rfc2061.txt diff --git a/Mail-IMAPClient-2.2.9/docs/rfc2062.txt b/W/Mail-IMAPClient-2.2.9/docs/rfc2062.txt similarity index 100% rename from Mail-IMAPClient-2.2.9/docs/rfc2062.txt rename to W/Mail-IMAPClient-2.2.9/docs/rfc2062.txt diff --git a/Mail-IMAPClient-2.2.9/docs/rfc2086.txt b/W/Mail-IMAPClient-2.2.9/docs/rfc2086.txt similarity index 100% rename from Mail-IMAPClient-2.2.9/docs/rfc2086.txt rename to W/Mail-IMAPClient-2.2.9/docs/rfc2086.txt diff --git a/Mail-IMAPClient-2.2.9/docs/rfc2087.txt b/W/Mail-IMAPClient-2.2.9/docs/rfc2087.txt similarity index 100% rename from Mail-IMAPClient-2.2.9/docs/rfc2087.txt rename to W/Mail-IMAPClient-2.2.9/docs/rfc2087.txt diff --git a/Mail-IMAPClient-2.2.9/docs/rfc2088.txt b/W/Mail-IMAPClient-2.2.9/docs/rfc2088.txt similarity index 100% rename from Mail-IMAPClient-2.2.9/docs/rfc2088.txt rename to W/Mail-IMAPClient-2.2.9/docs/rfc2088.txt diff --git a/Mail-IMAPClient-2.2.9/docs/rfc2177.txt b/W/Mail-IMAPClient-2.2.9/docs/rfc2177.txt similarity index 100% rename from Mail-IMAPClient-2.2.9/docs/rfc2177.txt rename to W/Mail-IMAPClient-2.2.9/docs/rfc2177.txt diff --git a/Mail-IMAPClient-2.2.9/docs/rfc2180.txt b/W/Mail-IMAPClient-2.2.9/docs/rfc2180.txt similarity index 100% rename from Mail-IMAPClient-2.2.9/docs/rfc2180.txt rename to W/Mail-IMAPClient-2.2.9/docs/rfc2180.txt diff --git a/Mail-IMAPClient-2.2.9/docs/rfc2192.txt b/W/Mail-IMAPClient-2.2.9/docs/rfc2192.txt similarity index 100% rename from Mail-IMAPClient-2.2.9/docs/rfc2192.txt rename to W/Mail-IMAPClient-2.2.9/docs/rfc2192.txt diff --git a/Mail-IMAPClient-2.2.9/docs/rfc2193.txt b/W/Mail-IMAPClient-2.2.9/docs/rfc2193.txt similarity index 100% rename from Mail-IMAPClient-2.2.9/docs/rfc2193.txt rename to W/Mail-IMAPClient-2.2.9/docs/rfc2193.txt diff --git a/Mail-IMAPClient-2.2.9/docs/rfc2195.txt b/W/Mail-IMAPClient-2.2.9/docs/rfc2195.txt similarity index 100% rename from Mail-IMAPClient-2.2.9/docs/rfc2195.txt rename to W/Mail-IMAPClient-2.2.9/docs/rfc2195.txt diff --git a/Mail-IMAPClient-2.2.9/docs/rfc2221.txt b/W/Mail-IMAPClient-2.2.9/docs/rfc2221.txt similarity index 100% rename from Mail-IMAPClient-2.2.9/docs/rfc2221.txt rename to W/Mail-IMAPClient-2.2.9/docs/rfc2221.txt diff --git a/Mail-IMAPClient-2.2.9/docs/rfc2222.txt b/W/Mail-IMAPClient-2.2.9/docs/rfc2222.txt similarity index 100% rename from Mail-IMAPClient-2.2.9/docs/rfc2222.txt rename to W/Mail-IMAPClient-2.2.9/docs/rfc2222.txt diff --git a/Mail-IMAPClient-2.2.9/docs/rfc2234.txt b/W/Mail-IMAPClient-2.2.9/docs/rfc2234.txt similarity index 100% rename from Mail-IMAPClient-2.2.9/docs/rfc2234.txt rename to W/Mail-IMAPClient-2.2.9/docs/rfc2234.txt diff --git a/Mail-IMAPClient-2.2.9/docs/rfc2245.txt b/W/Mail-IMAPClient-2.2.9/docs/rfc2245.txt similarity index 100% rename from Mail-IMAPClient-2.2.9/docs/rfc2245.txt rename to W/Mail-IMAPClient-2.2.9/docs/rfc2245.txt diff --git a/Mail-IMAPClient-2.2.9/docs/rfc2342.txt b/W/Mail-IMAPClient-2.2.9/docs/rfc2342.txt similarity index 100% rename from Mail-IMAPClient-2.2.9/docs/rfc2342.txt rename to W/Mail-IMAPClient-2.2.9/docs/rfc2342.txt diff --git a/Mail-IMAPClient-2.2.9/docs/rfc2359.txt b/W/Mail-IMAPClient-2.2.9/docs/rfc2359.txt similarity index 100% rename from Mail-IMAPClient-2.2.9/docs/rfc2359.txt rename to W/Mail-IMAPClient-2.2.9/docs/rfc2359.txt diff --git a/Mail-IMAPClient-2.2.9/docs/rfc2683.txt b/W/Mail-IMAPClient-2.2.9/docs/rfc2683.txt similarity index 100% rename from Mail-IMAPClient-2.2.9/docs/rfc2683.txt rename to W/Mail-IMAPClient-2.2.9/docs/rfc2683.txt diff --git a/Mail-IMAPClient-2.2.9/docs/rfc2831.txt b/W/Mail-IMAPClient-2.2.9/docs/rfc2831.txt similarity index 100% rename from Mail-IMAPClient-2.2.9/docs/rfc2831.txt rename to W/Mail-IMAPClient-2.2.9/docs/rfc2831.txt diff --git a/Mail-IMAPClient-2.2.9/examples/COPYRIGHT b/W/Mail-IMAPClient-2.2.9/examples/COPYRIGHT similarity index 100% rename from Mail-IMAPClient-2.2.9/examples/COPYRIGHT rename to W/Mail-IMAPClient-2.2.9/examples/COPYRIGHT diff --git a/Mail-IMAPClient-2.2.9/examples/build_dist.pl b/W/Mail-IMAPClient-2.2.9/examples/build_dist.pl similarity index 100% rename from Mail-IMAPClient-2.2.9/examples/build_dist.pl rename to W/Mail-IMAPClient-2.2.9/examples/build_dist.pl diff --git a/Mail-IMAPClient-2.2.9/examples/build_ldif.pl b/W/Mail-IMAPClient-2.2.9/examples/build_ldif.pl similarity index 100% rename from Mail-IMAPClient-2.2.9/examples/build_ldif.pl rename to W/Mail-IMAPClient-2.2.9/examples/build_ldif.pl diff --git a/Mail-IMAPClient-2.2.9/examples/cleanTest.pl b/W/Mail-IMAPClient-2.2.9/examples/cleanTest.pl similarity index 100% rename from Mail-IMAPClient-2.2.9/examples/cleanTest.pl rename to W/Mail-IMAPClient-2.2.9/examples/cleanTest.pl diff --git a/Mail-IMAPClient-2.2.9/examples/copy_folder.pl b/W/Mail-IMAPClient-2.2.9/examples/copy_folder.pl similarity index 100% rename from Mail-IMAPClient-2.2.9/examples/copy_folder.pl rename to W/Mail-IMAPClient-2.2.9/examples/copy_folder.pl diff --git a/Mail-IMAPClient-2.2.9/examples/cyrus_expire.pl b/W/Mail-IMAPClient-2.2.9/examples/cyrus_expire.pl similarity index 100% rename from Mail-IMAPClient-2.2.9/examples/cyrus_expire.pl rename to W/Mail-IMAPClient-2.2.9/examples/cyrus_expire.pl diff --git a/Mail-IMAPClient-2.2.9/examples/cyrus_expunge.pl b/W/Mail-IMAPClient-2.2.9/examples/cyrus_expunge.pl similarity index 100% rename from Mail-IMAPClient-2.2.9/examples/cyrus_expunge.pl rename to W/Mail-IMAPClient-2.2.9/examples/cyrus_expunge.pl diff --git a/Mail-IMAPClient-2.2.9/examples/find_dup_msgs.pl b/W/Mail-IMAPClient-2.2.9/examples/find_dup_msgs.pl similarity index 100% rename from Mail-IMAPClient-2.2.9/examples/find_dup_msgs.pl rename to W/Mail-IMAPClient-2.2.9/examples/find_dup_msgs.pl diff --git a/Mail-IMAPClient-2.2.9/examples/imap_to_mbox.pl b/W/Mail-IMAPClient-2.2.9/examples/imap_to_mbox.pl similarity index 100% rename from Mail-IMAPClient-2.2.9/examples/imap_to_mbox.pl rename to W/Mail-IMAPClient-2.2.9/examples/imap_to_mbox.pl diff --git a/Mail-IMAPClient-2.2.9/examples/imtestExample.pl b/W/Mail-IMAPClient-2.2.9/examples/imtestExample.pl similarity index 100% rename from Mail-IMAPClient-2.2.9/examples/imtestExample.pl rename to W/Mail-IMAPClient-2.2.9/examples/imtestExample.pl diff --git a/Mail-IMAPClient-2.2.9/examples/migrate_mail2.pl b/W/Mail-IMAPClient-2.2.9/examples/migrate_mail2.pl similarity index 100% rename from Mail-IMAPClient-2.2.9/examples/migrate_mail2.pl rename to W/Mail-IMAPClient-2.2.9/examples/migrate_mail2.pl diff --git a/Mail-IMAPClient-2.2.9/examples/migrate_mbox.pl b/W/Mail-IMAPClient-2.2.9/examples/migrate_mbox.pl similarity index 100% rename from Mail-IMAPClient-2.2.9/examples/migrate_mbox.pl rename to W/Mail-IMAPClient-2.2.9/examples/migrate_mbox.pl diff --git a/Mail-IMAPClient-2.2.9/examples/populate_mailbox.pl b/W/Mail-IMAPClient-2.2.9/examples/populate_mailbox.pl similarity index 100% rename from Mail-IMAPClient-2.2.9/examples/populate_mailbox.pl rename to W/Mail-IMAPClient-2.2.9/examples/populate_mailbox.pl diff --git a/Mail-IMAPClient-2.2.9/examples/sharedFolder.pl b/W/Mail-IMAPClient-2.2.9/examples/sharedFolder.pl similarity index 100% rename from Mail-IMAPClient-2.2.9/examples/sharedFolder.pl rename to W/Mail-IMAPClient-2.2.9/examples/sharedFolder.pl diff --git a/Mail-IMAPClient-2.2.9/sample.perldb b/W/Mail-IMAPClient-2.2.9/sample.perldb similarity index 100% rename from Mail-IMAPClient-2.2.9/sample.perldb rename to W/Mail-IMAPClient-2.2.9/sample.perldb diff --git a/Mail-IMAPClient-2.2.9/t/basic.t b/W/Mail-IMAPClient-2.2.9/t/basic.t similarity index 100% rename from Mail-IMAPClient-2.2.9/t/basic.t rename to W/Mail-IMAPClient-2.2.9/t/basic.t diff --git a/Mail-IMAPClient-2.2.9/t/cram-md5.t b/W/Mail-IMAPClient-2.2.9/t/cram-md5.t similarity index 100% rename from Mail-IMAPClient-2.2.9/t/cram-md5.t rename to W/Mail-IMAPClient-2.2.9/t/cram-md5.t diff --git a/Mail-IMAPClient-2.2.9/t/fast_io.t b/W/Mail-IMAPClient-2.2.9/t/fast_io.t similarity index 100% rename from Mail-IMAPClient-2.2.9/t/fast_io.t rename to W/Mail-IMAPClient-2.2.9/t/fast_io.t diff --git a/Mail-IMAPClient-2.2.9/t/ranges.t b/W/Mail-IMAPClient-2.2.9/t/ranges.t similarity index 100% rename from Mail-IMAPClient-2.2.9/t/ranges.t rename to W/Mail-IMAPClient-2.2.9/t/ranges.t diff --git a/Mail-IMAPClient-2.2.9/t/uidfast.t b/W/Mail-IMAPClient-2.2.9/t/uidfast.t similarity index 100% rename from Mail-IMAPClient-2.2.9/t/uidfast.t rename to W/Mail-IMAPClient-2.2.9/t/uidfast.t diff --git a/Mail-IMAPClient-2.2.9/t/uidplus.t b/W/Mail-IMAPClient-2.2.9/t/uidplus.t similarity index 100% rename from Mail-IMAPClient-2.2.9/t/uidplus.t rename to W/Mail-IMAPClient-2.2.9/t/uidplus.t diff --git a/Mail-IMAPClient-2.2.9/test_template.txt b/W/Mail-IMAPClient-2.2.9/test_template.txt similarity index 100% rename from Mail-IMAPClient-2.2.9/test_template.txt rename to W/Mail-IMAPClient-2.2.9/test_template.txt diff --git a/Mail-IMAPClient-3.31/Changes b/W/Mail-IMAPClient-3.31/Changes similarity index 100% rename from Mail-IMAPClient-3.31/Changes rename to W/Mail-IMAPClient-3.31/Changes diff --git a/Mail-IMAPClient-3.31/MANIFEST b/W/Mail-IMAPClient-3.31/MANIFEST similarity index 100% rename from Mail-IMAPClient-3.31/MANIFEST rename to W/Mail-IMAPClient-3.31/MANIFEST diff --git a/Mail-IMAPClient-3.31/META.yml b/W/Mail-IMAPClient-3.31/META.yml similarity index 100% rename from Mail-IMAPClient-3.31/META.yml rename to W/Mail-IMAPClient-3.31/META.yml diff --git a/Mail-IMAPClient-3.31/Makefile.PL b/W/Mail-IMAPClient-3.31/Makefile.PL similarity index 100% rename from Mail-IMAPClient-3.31/Makefile.PL rename to W/Mail-IMAPClient-3.31/Makefile.PL diff --git a/Mail-IMAPClient-3.31/README b/W/Mail-IMAPClient-3.31/README similarity index 100% rename from Mail-IMAPClient-3.31/README rename to W/Mail-IMAPClient-3.31/README diff --git a/Mail-IMAPClient-3.31/examples/build_dist.pl b/W/Mail-IMAPClient-3.31/examples/build_dist.pl similarity index 100% rename from Mail-IMAPClient-3.31/examples/build_dist.pl rename to W/Mail-IMAPClient-3.31/examples/build_dist.pl diff --git a/Mail-IMAPClient-3.31/examples/build_ldif.pl b/W/Mail-IMAPClient-3.31/examples/build_ldif.pl similarity index 100% rename from Mail-IMAPClient-3.31/examples/build_ldif.pl rename to W/Mail-IMAPClient-3.31/examples/build_ldif.pl diff --git a/Mail-IMAPClient-3.31/examples/cleanTest.pl b/W/Mail-IMAPClient-3.31/examples/cleanTest.pl similarity index 100% rename from Mail-IMAPClient-3.31/examples/cleanTest.pl rename to W/Mail-IMAPClient-3.31/examples/cleanTest.pl diff --git a/Mail-IMAPClient-3.31/examples/copy_folder.pl b/W/Mail-IMAPClient-3.31/examples/copy_folder.pl similarity index 100% rename from Mail-IMAPClient-3.31/examples/copy_folder.pl rename to W/Mail-IMAPClient-3.31/examples/copy_folder.pl diff --git a/Mail-IMAPClient-3.31/examples/cyrus_expire.pl b/W/Mail-IMAPClient-3.31/examples/cyrus_expire.pl similarity index 100% rename from Mail-IMAPClient-3.31/examples/cyrus_expire.pl rename to W/Mail-IMAPClient-3.31/examples/cyrus_expire.pl diff --git a/Mail-IMAPClient-3.31/examples/cyrus_expunge.pl b/W/Mail-IMAPClient-3.31/examples/cyrus_expunge.pl similarity index 100% rename from Mail-IMAPClient-3.31/examples/cyrus_expunge.pl rename to W/Mail-IMAPClient-3.31/examples/cyrus_expunge.pl diff --git a/Mail-IMAPClient-3.31/examples/find_dup_msgs.pl b/W/Mail-IMAPClient-3.31/examples/find_dup_msgs.pl similarity index 100% rename from Mail-IMAPClient-3.31/examples/find_dup_msgs.pl rename to W/Mail-IMAPClient-3.31/examples/find_dup_msgs.pl diff --git a/Mail-IMAPClient-3.31/examples/idle.pl b/W/Mail-IMAPClient-3.31/examples/idle.pl similarity index 100% rename from Mail-IMAPClient-3.31/examples/idle.pl rename to W/Mail-IMAPClient-3.31/examples/idle.pl diff --git a/Mail-IMAPClient-3.31/examples/imap_to_mbox.pl b/W/Mail-IMAPClient-3.31/examples/imap_to_mbox.pl similarity index 100% rename from Mail-IMAPClient-3.31/examples/imap_to_mbox.pl rename to W/Mail-IMAPClient-3.31/examples/imap_to_mbox.pl diff --git a/Mail-IMAPClient-3.31/examples/imtestExample.pl b/W/Mail-IMAPClient-3.31/examples/imtestExample.pl similarity index 100% rename from Mail-IMAPClient-3.31/examples/imtestExample.pl rename to W/Mail-IMAPClient-3.31/examples/imtestExample.pl diff --git a/Mail-IMAPClient-3.31/examples/migrate_mail2.pl b/W/Mail-IMAPClient-3.31/examples/migrate_mail2.pl similarity index 100% rename from Mail-IMAPClient-3.31/examples/migrate_mail2.pl rename to W/Mail-IMAPClient-3.31/examples/migrate_mail2.pl diff --git a/Mail-IMAPClient-3.31/examples/migrate_mbox.pl b/W/Mail-IMAPClient-3.31/examples/migrate_mbox.pl similarity index 100% rename from Mail-IMAPClient-3.31/examples/migrate_mbox.pl rename to W/Mail-IMAPClient-3.31/examples/migrate_mbox.pl diff --git a/Mail-IMAPClient-3.31/examples/populate_mailbox.pl b/W/Mail-IMAPClient-3.31/examples/populate_mailbox.pl similarity index 100% rename from Mail-IMAPClient-3.31/examples/populate_mailbox.pl rename to W/Mail-IMAPClient-3.31/examples/populate_mailbox.pl diff --git a/Mail-IMAPClient-3.31/examples/sharedFolder.pl b/W/Mail-IMAPClient-3.31/examples/sharedFolder.pl similarity index 100% rename from Mail-IMAPClient-3.31/examples/sharedFolder.pl rename to W/Mail-IMAPClient-3.31/examples/sharedFolder.pl diff --git a/Mail-IMAPClient-3.31/lib/Mail/IMAPClient.pm b/W/Mail-IMAPClient-3.31/lib/Mail/IMAPClient.pm similarity index 100% rename from Mail-IMAPClient-3.31/lib/Mail/IMAPClient.pm rename to W/Mail-IMAPClient-3.31/lib/Mail/IMAPClient.pm diff --git a/Mail-IMAPClient-3.31/lib/Mail/IMAPClient.pod b/W/Mail-IMAPClient-3.31/lib/Mail/IMAPClient.pod similarity index 100% rename from Mail-IMAPClient-3.31/lib/Mail/IMAPClient.pod rename to W/Mail-IMAPClient-3.31/lib/Mail/IMAPClient.pod diff --git a/Mail-IMAPClient-3.31/lib/Mail/IMAPClient/BodyStructure.pm b/W/Mail-IMAPClient-3.31/lib/Mail/IMAPClient/BodyStructure.pm similarity index 100% rename from Mail-IMAPClient-3.31/lib/Mail/IMAPClient/BodyStructure.pm rename to W/Mail-IMAPClient-3.31/lib/Mail/IMAPClient/BodyStructure.pm diff --git a/Mail-IMAPClient-3.31/lib/Mail/IMAPClient/BodyStructure/Parse.grammar b/W/Mail-IMAPClient-3.31/lib/Mail/IMAPClient/BodyStructure/Parse.grammar similarity index 100% rename from Mail-IMAPClient-3.31/lib/Mail/IMAPClient/BodyStructure/Parse.grammar rename to W/Mail-IMAPClient-3.31/lib/Mail/IMAPClient/BodyStructure/Parse.grammar diff --git a/Mail-IMAPClient-3.31/lib/Mail/IMAPClient/BodyStructure/Parse.pm b/W/Mail-IMAPClient-3.31/lib/Mail/IMAPClient/BodyStructure/Parse.pm similarity index 100% rename from Mail-IMAPClient-3.31/lib/Mail/IMAPClient/BodyStructure/Parse.pm rename to W/Mail-IMAPClient-3.31/lib/Mail/IMAPClient/BodyStructure/Parse.pm diff --git a/Mail-IMAPClient-3.31/lib/Mail/IMAPClient/BodyStructure/Parse.pod b/W/Mail-IMAPClient-3.31/lib/Mail/IMAPClient/BodyStructure/Parse.pod similarity index 100% rename from Mail-IMAPClient-3.31/lib/Mail/IMAPClient/BodyStructure/Parse.pod rename to W/Mail-IMAPClient-3.31/lib/Mail/IMAPClient/BodyStructure/Parse.pod diff --git a/Mail-IMAPClient-3.31/lib/Mail/IMAPClient/MessageSet.pm b/W/Mail-IMAPClient-3.31/lib/Mail/IMAPClient/MessageSet.pm similarity index 100% rename from Mail-IMAPClient-3.31/lib/Mail/IMAPClient/MessageSet.pm rename to W/Mail-IMAPClient-3.31/lib/Mail/IMAPClient/MessageSet.pm diff --git a/Mail-IMAPClient-3.31/lib/Mail/IMAPClient/Thread.grammar b/W/Mail-IMAPClient-3.31/lib/Mail/IMAPClient/Thread.grammar similarity index 100% rename from Mail-IMAPClient-3.31/lib/Mail/IMAPClient/Thread.grammar rename to W/Mail-IMAPClient-3.31/lib/Mail/IMAPClient/Thread.grammar diff --git a/Mail-IMAPClient-3.31/lib/Mail/IMAPClient/Thread.pm b/W/Mail-IMAPClient-3.31/lib/Mail/IMAPClient/Thread.pm similarity index 100% rename from Mail-IMAPClient-3.31/lib/Mail/IMAPClient/Thread.pm rename to W/Mail-IMAPClient-3.31/lib/Mail/IMAPClient/Thread.pm diff --git a/Mail-IMAPClient-3.31/lib/Mail/IMAPClient/Thread.pod b/W/Mail-IMAPClient-3.31/lib/Mail/IMAPClient/Thread.pod similarity index 100% rename from Mail-IMAPClient-3.31/lib/Mail/IMAPClient/Thread.pod rename to W/Mail-IMAPClient-3.31/lib/Mail/IMAPClient/Thread.pod diff --git a/Mail-IMAPClient-3.31/prepare_dist b/W/Mail-IMAPClient-3.31/prepare_dist similarity index 100% rename from Mail-IMAPClient-3.31/prepare_dist rename to W/Mail-IMAPClient-3.31/prepare_dist diff --git a/Mail-IMAPClient-3.31/t/basic.t b/W/Mail-IMAPClient-3.31/t/basic.t similarity index 100% rename from Mail-IMAPClient-3.31/t/basic.t rename to W/Mail-IMAPClient-3.31/t/basic.t diff --git a/Mail-IMAPClient-3.31/t/body_string.t b/W/Mail-IMAPClient-3.31/t/body_string.t similarity index 100% rename from Mail-IMAPClient-3.31/t/body_string.t rename to W/Mail-IMAPClient-3.31/t/body_string.t diff --git a/Mail-IMAPClient-3.31/t/bodystructure.t b/W/Mail-IMAPClient-3.31/t/bodystructure.t similarity index 100% rename from Mail-IMAPClient-3.31/t/bodystructure.t rename to W/Mail-IMAPClient-3.31/t/bodystructure.t diff --git a/Mail-IMAPClient-3.31/t/fetch_hash.t b/W/Mail-IMAPClient-3.31/t/fetch_hash.t similarity index 100% rename from Mail-IMAPClient-3.31/t/fetch_hash.t rename to W/Mail-IMAPClient-3.31/t/fetch_hash.t diff --git a/Mail-IMAPClient-3.31/t/messageset.t b/W/Mail-IMAPClient-3.31/t/messageset.t similarity index 100% rename from Mail-IMAPClient-3.31/t/messageset.t rename to W/Mail-IMAPClient-3.31/t/messageset.t diff --git a/Mail-IMAPClient-3.31/t/pod.t b/W/Mail-IMAPClient-3.31/t/pod.t similarity index 100% rename from Mail-IMAPClient-3.31/t/pod.t rename to W/Mail-IMAPClient-3.31/t/pod.t diff --git a/Mail-IMAPClient-3.31/t/simple.t b/W/Mail-IMAPClient-3.31/t/simple.t similarity index 100% rename from Mail-IMAPClient-3.31/t/simple.t rename to W/Mail-IMAPClient-3.31/t/simple.t diff --git a/Mail-IMAPClient-3.31/t/thread.t b/W/Mail-IMAPClient-3.31/t/thread.t similarity index 100% rename from Mail-IMAPClient-3.31/t/thread.t rename to W/Mail-IMAPClient-3.31/t/thread.t diff --git a/Mail-IMAPClient-3.31/test_template.txt b/W/Mail-IMAPClient-3.31/test_template.txt similarity index 100% rename from Mail-IMAPClient-3.31/test_template.txt rename to W/Mail-IMAPClient-3.31/test_template.txt diff --git a/NTLM-1.09/COPYING-Artistic b/W/NTLM-1.09/COPYING-Artistic similarity index 100% rename from NTLM-1.09/COPYING-Artistic rename to W/NTLM-1.09/COPYING-Artistic diff --git a/NTLM-1.09/COPYING-GPL b/W/NTLM-1.09/COPYING-GPL similarity index 100% rename from NTLM-1.09/COPYING-GPL rename to W/NTLM-1.09/COPYING-GPL diff --git a/NTLM-1.09/Changes b/W/NTLM-1.09/Changes similarity index 100% rename from NTLM-1.09/Changes rename to W/NTLM-1.09/Changes diff --git a/NTLM-1.09/DES/DES.pm b/W/NTLM-1.09/DES/DES.pm similarity index 100% rename from NTLM-1.09/DES/DES.pm rename to W/NTLM-1.09/DES/DES.pm diff --git a/NTLM-1.09/DES/Makefile b/W/NTLM-1.09/DES/Makefile similarity index 100% rename from NTLM-1.09/DES/Makefile rename to W/NTLM-1.09/DES/Makefile diff --git a/NTLM-1.09/DES/Makefile.PL b/W/NTLM-1.09/DES/Makefile.PL similarity index 100% rename from NTLM-1.09/DES/Makefile.PL rename to W/NTLM-1.09/DES/Makefile.PL diff --git a/NTLM-1.09/DES/pm_to_blib b/W/NTLM-1.09/DES/pm_to_blib similarity index 100% rename from NTLM-1.09/DES/pm_to_blib rename to W/NTLM-1.09/DES/pm_to_blib diff --git a/NTLM-1.09/MANIFEST b/W/NTLM-1.09/MANIFEST similarity index 100% rename from NTLM-1.09/MANIFEST rename to W/NTLM-1.09/MANIFEST diff --git a/NTLM-1.09/MD4/MD4.pm b/W/NTLM-1.09/MD4/MD4.pm similarity index 100% rename from NTLM-1.09/MD4/MD4.pm rename to W/NTLM-1.09/MD4/MD4.pm diff --git a/NTLM-1.09/MD4/Makefile b/W/NTLM-1.09/MD4/Makefile similarity index 100% rename from NTLM-1.09/MD4/Makefile rename to W/NTLM-1.09/MD4/Makefile diff --git a/NTLM-1.09/MD4/Makefile.PL b/W/NTLM-1.09/MD4/Makefile.PL similarity index 100% rename from NTLM-1.09/MD4/Makefile.PL rename to W/NTLM-1.09/MD4/Makefile.PL diff --git a/NTLM-1.09/MD4/pm_to_blib b/W/NTLM-1.09/MD4/pm_to_blib similarity index 100% rename from NTLM-1.09/MD4/pm_to_blib rename to W/NTLM-1.09/MD4/pm_to_blib diff --git a/NTLM-1.09/META.yml b/W/NTLM-1.09/META.yml similarity index 100% rename from NTLM-1.09/META.yml rename to W/NTLM-1.09/META.yml diff --git a/NTLM-1.09/Makefile b/W/NTLM-1.09/Makefile similarity index 100% rename from NTLM-1.09/Makefile rename to W/NTLM-1.09/Makefile diff --git a/NTLM-1.09/Makefile.PL b/W/NTLM-1.09/Makefile.PL similarity index 100% rename from NTLM-1.09/Makefile.PL rename to W/NTLM-1.09/Makefile.PL diff --git a/NTLM-1.09/NTLM.pm b/W/NTLM-1.09/NTLM.pm similarity index 100% rename from NTLM-1.09/NTLM.pm rename to W/NTLM-1.09/NTLM.pm diff --git a/NTLM-1.09/README b/W/NTLM-1.09/README similarity index 100% rename from NTLM-1.09/README rename to W/NTLM-1.09/README diff --git a/NTLM-1.09/blib/arch/.exists b/W/NTLM-1.09/blib/arch/.exists similarity index 100% rename from NTLM-1.09/blib/arch/.exists rename to W/NTLM-1.09/blib/arch/.exists diff --git a/NTLM-1.09/blib/arch/auto/Authen/NTLM/.exists b/W/NTLM-1.09/blib/arch/auto/Authen/NTLM/.exists similarity index 100% rename from NTLM-1.09/blib/arch/auto/Authen/NTLM/.exists rename to W/NTLM-1.09/blib/arch/auto/Authen/NTLM/.exists diff --git a/NTLM-1.09/blib/arch/auto/Authen/NTLM/DES/.exists b/W/NTLM-1.09/blib/arch/auto/Authen/NTLM/DES/.exists similarity index 100% rename from NTLM-1.09/blib/arch/auto/Authen/NTLM/DES/.exists rename to W/NTLM-1.09/blib/arch/auto/Authen/NTLM/DES/.exists diff --git a/NTLM-1.09/blib/arch/auto/Authen/NTLM/MD4/.exists b/W/NTLM-1.09/blib/arch/auto/Authen/NTLM/MD4/.exists similarity index 100% rename from NTLM-1.09/blib/arch/auto/Authen/NTLM/MD4/.exists rename to W/NTLM-1.09/blib/arch/auto/Authen/NTLM/MD4/.exists diff --git a/NTLM-1.09/blib/bin/.exists b/W/NTLM-1.09/blib/bin/.exists similarity index 100% rename from NTLM-1.09/blib/bin/.exists rename to W/NTLM-1.09/blib/bin/.exists diff --git a/NTLM-1.09/blib/lib/Authen/.exists b/W/NTLM-1.09/blib/lib/Authen/.exists similarity index 100% rename from NTLM-1.09/blib/lib/Authen/.exists rename to W/NTLM-1.09/blib/lib/Authen/.exists diff --git a/NTLM-1.09/blib/lib/Authen/NTLM.pm b/W/NTLM-1.09/blib/lib/Authen/NTLM.pm similarity index 100% rename from NTLM-1.09/blib/lib/Authen/NTLM.pm rename to W/NTLM-1.09/blib/lib/Authen/NTLM.pm diff --git a/NTLM-1.09/blib/lib/Authen/NTLM/.exists b/W/NTLM-1.09/blib/lib/Authen/NTLM/.exists similarity index 100% rename from NTLM-1.09/blib/lib/Authen/NTLM/.exists rename to W/NTLM-1.09/blib/lib/Authen/NTLM/.exists diff --git a/NTLM-1.09/blib/lib/Authen/NTLM/DES.pm b/W/NTLM-1.09/blib/lib/Authen/NTLM/DES.pm similarity index 100% rename from NTLM-1.09/blib/lib/Authen/NTLM/DES.pm rename to W/NTLM-1.09/blib/lib/Authen/NTLM/DES.pm diff --git a/NTLM-1.09/blib/lib/Authen/NTLM/MD4.pm b/W/NTLM-1.09/blib/lib/Authen/NTLM/MD4.pm similarity index 100% rename from NTLM-1.09/blib/lib/Authen/NTLM/MD4.pm rename to W/NTLM-1.09/blib/lib/Authen/NTLM/MD4.pm diff --git a/NTLM-1.09/blib/lib/auto/Authen/NTLM/.exists b/W/NTLM-1.09/blib/lib/auto/Authen/NTLM/.exists similarity index 100% rename from NTLM-1.09/blib/lib/auto/Authen/NTLM/.exists rename to W/NTLM-1.09/blib/lib/auto/Authen/NTLM/.exists diff --git a/NTLM-1.09/blib/lib/auto/Authen/NTLM/DES/.exists b/W/NTLM-1.09/blib/lib/auto/Authen/NTLM/DES/.exists similarity index 100% rename from NTLM-1.09/blib/lib/auto/Authen/NTLM/DES/.exists rename to W/NTLM-1.09/blib/lib/auto/Authen/NTLM/DES/.exists diff --git a/NTLM-1.09/blib/lib/auto/Authen/NTLM/MD4/.exists b/W/NTLM-1.09/blib/lib/auto/Authen/NTLM/MD4/.exists similarity index 100% rename from NTLM-1.09/blib/lib/auto/Authen/NTLM/MD4/.exists rename to W/NTLM-1.09/blib/lib/auto/Authen/NTLM/MD4/.exists diff --git a/NTLM-1.09/blib/man1/.exists b/W/NTLM-1.09/blib/man1/.exists similarity index 100% rename from NTLM-1.09/blib/man1/.exists rename to W/NTLM-1.09/blib/man1/.exists diff --git a/NTLM-1.09/blib/man3/.exists b/W/NTLM-1.09/blib/man3/.exists similarity index 100% rename from NTLM-1.09/blib/man3/.exists rename to W/NTLM-1.09/blib/man3/.exists diff --git a/NTLM-1.09/blib/man3/Authen::NTLM.3pm b/W/NTLM-1.09/blib/man3/Authen::NTLM.3pm similarity index 100% rename from NTLM-1.09/blib/man3/Authen::NTLM.3pm rename to W/NTLM-1.09/blib/man3/Authen::NTLM.3pm diff --git a/NTLM-1.09/blib/script/.exists b/W/NTLM-1.09/blib/script/.exists similarity index 100% rename from NTLM-1.09/blib/script/.exists rename to W/NTLM-1.09/blib/script/.exists diff --git a/NTLM-1.09/pm_to_blib b/W/NTLM-1.09/pm_to_blib similarity index 100% rename from NTLM-1.09/pm_to_blib rename to W/NTLM-1.09/pm_to_blib diff --git a/NTLM-1.09/t/01_load.t b/W/NTLM-1.09/t/01_load.t similarity index 100% rename from NTLM-1.09/t/01_load.t rename to W/NTLM-1.09/t/01_load.t diff --git a/NTLM-1.09/t/02_ntlm.t b/W/NTLM-1.09/t/02_ntlm.t similarity index 100% rename from NTLM-1.09/t/02_ntlm.t rename to W/NTLM-1.09/t/02_ntlm.t diff --git a/NTLM-1.09/t/03_oo.t b/W/NTLM-1.09/t/03_oo.t similarity index 100% rename from NTLM-1.09/t/03_oo.t rename to W/NTLM-1.09/t/03_oo.t diff --git a/NTLM-1.09/t/04_v2.t b/W/NTLM-1.09/t/04_v2.t similarity index 100% rename from NTLM-1.09/t/04_v2.t rename to W/NTLM-1.09/t/04_v2.t diff --git a/NTLM-1.09/t/99_pod.t b/W/NTLM-1.09/t/99_pod.t similarity index 100% rename from NTLM-1.09/t/99_pod.t rename to W/NTLM-1.09/t/99_pod.t diff --git a/TIME b/W/TIME similarity index 100% rename from TIME rename to W/TIME diff --git a/bugs/BUG_219_windows b/W/bugs/BUG_219_windows similarity index 100% rename from bugs/BUG_219_windows rename to W/bugs/BUG_219_windows diff --git a/bugs/BUG_IMAPClient_3.xx b/W/bugs/BUG_IMAPClient_3.xx similarity index 100% rename from bugs/BUG_IMAPClient_3.xx rename to W/bugs/BUG_IMAPClient_3.xx diff --git a/build_exe.bat b/W/build_exe.bat old mode 100755 new mode 100644 similarity index 100% rename from build_exe.bat rename to W/build_exe.bat diff --git a/ab_jlh.png b/W/images/ab_jlh.png similarity index 100% rename from ab_jlh.png rename to W/images/ab_jlh.png diff --git a/logo_imapsync.png b/W/images/logo_imapsync.png similarity index 100% rename from logo_imapsync.png rename to W/images/logo_imapsync.png diff --git a/logo_imapsync_2.svg b/W/images/logo_imapsync_2.svg similarity index 100% rename from logo_imapsync_2.svg rename to W/images/logo_imapsync_2.svg diff --git a/logo_imapsync_s.png b/W/images/logo_imapsync_s.png similarity index 100% rename from logo_imapsync_s.png rename to W/images/logo_imapsync_s.png diff --git a/W/images/valid-xhtml10 b/W/images/valid-xhtml10 new file mode 100644 index 0000000..b81de91 Binary files /dev/null and b/W/images/valid-xhtml10 differ diff --git a/W/images/vcss-blue b/W/images/vcss-blue new file mode 100644 index 0000000..c373b2a Binary files /dev/null and b/W/images/vcss-blue differ diff --git a/W/ks.htaccess b/W/ks.htaccess new file mode 100644 index 0000000..ac896d1 --- /dev/null +++ b/W/ks.htaccess @@ -0,0 +1,5 @@ + +RewriteEngine on +RewriteRule "^paypal_return.shtml" "/W/paypal_return.shtml" +RewriteRule "^paypal_return_support.shtml" "/W/paypal_return_support.shtml" + diff --git a/learn/adjust_time.pl b/W/learn/adjust_time.pl similarity index 100% rename from learn/adjust_time.pl rename to W/learn/adjust_time.pl diff --git a/learn/append b/W/learn/append similarity index 100% rename from learn/append rename to W/learn/append diff --git a/learn/date_manip b/W/learn/date_manip similarity index 100% rename from learn/date_manip rename to W/learn/date_manip diff --git a/learn/delete b/W/learn/delete similarity index 100% rename from learn/delete rename to W/learn/delete diff --git a/learn/fetch_with_size b/W/learn/fetch_with_size similarity index 100% rename from learn/fetch_with_size rename to W/learn/fetch_with_size diff --git a/learn/file_spec b/W/learn/file_spec similarity index 100% rename from learn/file_spec rename to W/learn/file_spec diff --git a/learn/file_string b/W/learn/file_string similarity index 100% rename from learn/file_string rename to W/learn/file_string diff --git a/learn/hugemigr b/W/learn/hugemigr similarity index 100% rename from learn/hugemigr rename to W/learn/hugemigr diff --git a/learn/imapbyhand b/W/learn/imapbyhand similarity index 100% rename from learn/imapbyhand rename to W/learn/imapbyhand diff --git a/learn/imapclient3xx_isUnconnected b/W/learn/imapclient3xx_isUnconnected similarity index 100% rename from learn/imapclient3xx_isUnconnected rename to W/learn/imapclient3xx_isUnconnected diff --git a/learn/imapclient3xx_skeleton_test b/W/learn/imapclient3xx_skeleton_test similarity index 100% rename from learn/imapclient3xx_skeleton_test rename to W/learn/imapclient3xx_skeleton_test diff --git a/learn/imapclient3xx_ssl b/W/learn/imapclient3xx_ssl similarity index 100% rename from learn/imapclient3xx_ssl rename to W/learn/imapclient3xx_ssl diff --git a/learn/imapclient_tls b/W/learn/imapclient_tls similarity index 100% rename from learn/imapclient_tls rename to W/learn/imapclient_tls diff --git a/learn/io_socket_get b/W/learn/io_socket_get similarity index 100% rename from learn/io_socket_get rename to W/learn/io_socket_get diff --git a/learn/memo b/W/learn/memo similarity index 100% rename from learn/memo rename to W/learn/memo diff --git a/learn/memory_consumption b/W/learn/memory_consumption similarity index 100% rename from learn/memory_consumption rename to W/learn/memory_consumption diff --git a/learn/message_string_raw b/W/learn/message_string_raw similarity index 100% rename from learn/message_string_raw rename to W/learn/message_string_raw diff --git a/learn/message_string_raw_pb b/W/learn/message_string_raw_pb similarity index 100% rename from learn/message_string_raw_pb rename to W/learn/message_string_raw_pb diff --git a/learn/mi2 b/W/learn/mi2 similarity index 100% rename from learn/mi2 rename to W/learn/mi2 diff --git a/learn/mi3 b/W/learn/mi3 similarity index 100% rename from learn/mi3 rename to W/learn/mi3 diff --git a/learn/rpm/imapsync.spec b/W/learn/rpm/imapsync.spec similarity index 100% rename from learn/rpm/imapsync.spec rename to W/learn/rpm/imapsync.spec diff --git a/learn/separator b/W/learn/separator similarity index 100% rename from learn/separator rename to W/learn/separator diff --git a/learn/splice_fetch b/W/learn/splice_fetch similarity index 100% rename from learn/splice_fetch rename to W/learn/splice_fetch diff --git a/learn/subscribe b/W/learn/subscribe similarity index 100% rename from learn/subscribe rename to W/learn/subscribe diff --git a/learn/uppercase_header b/W/learn/uppercase_header similarity index 100% rename from learn/uppercase_header rename to W/learn/uppercase_header diff --git a/lfo.htaccess b/W/lfo.htaccess similarity index 100% rename from lfo.htaccess rename to W/lfo.htaccess diff --git a/memo b/W/memo similarity index 100% rename from memo rename to W/memo diff --git a/patches/FAQ_ralph.patch b/W/patches/FAQ_ralph.patch similarity index 100% rename from patches/FAQ_ralph.patch rename to W/patches/FAQ_ralph.patch diff --git a/patches/imapsync--justcopy.patch b/W/patches/imapsync--justcopy.patch similarity index 100% rename from patches/imapsync--justcopy.patch rename to W/patches/imapsync--justcopy.patch diff --git a/patches/imapsync-1.139-ssl-authmech-authusing.patch b/W/patches/imapsync-1.139-ssl-authmech-authusing.patch similarity index 100% rename from patches/imapsync-1.139-ssl-authmech-authusing.patch rename to W/patches/imapsync-1.139-ssl-authmech-authusing.patch diff --git a/patches/imapsync-1.156-ssl-authusing.patch b/W/patches/imapsync-1.156-ssl-authusing.patch similarity index 100% rename from patches/imapsync-1.156-ssl-authusing.patch rename to W/patches/imapsync-1.156-ssl-authusing.patch diff --git a/patches/imapsync-1.217_tls_support.patch b/W/patches/imapsync-1.217_tls_support.patch similarity index 100% rename from patches/imapsync-1.217_tls_support.patch rename to W/patches/imapsync-1.217_tls_support.patch diff --git a/patches/imapsync-1.278.log_info_on_lost_connection.patch b/W/patches/imapsync-1.278.log_info_on_lost_connection.patch similarity index 100% rename from patches/imapsync-1.278.log_info_on_lost_connection.patch rename to W/patches/imapsync-1.278.log_info_on_lost_connection.patch diff --git a/patches/imapsync-1.337_tobit_V6.patch b/W/patches/imapsync-1.337_tobit_V6.patch similarity index 100% rename from patches/imapsync-1.337_tobit_V6.patch rename to W/patches/imapsync-1.337_tobit_V6.patch diff --git a/patches/imapsync-1.94-foldersizes.diff b/W/patches/imapsync-1.94-foldersizes.diff similarity index 100% rename from patches/imapsync-1.94-foldersizes.diff rename to W/patches/imapsync-1.94-foldersizes.diff diff --git a/patches/imapsync-acls-users b/W/patches/imapsync-acls-users similarity index 100% rename from patches/imapsync-acls-users rename to W/patches/imapsync-acls-users diff --git a/patches/imapsync-base64.patch b/W/patches/imapsync-base64.patch similarity index 100% rename from patches/imapsync-base64.patch rename to W/patches/imapsync-base64.patch diff --git a/patches/imapsync-buffersize.diff b/W/patches/imapsync-buffersize.diff similarity index 100% rename from patches/imapsync-buffersize.diff rename to W/patches/imapsync-buffersize.diff diff --git a/patches/imapsync-pb-acl.diff b/W/patches/imapsync-pb-acl.diff similarity index 100% rename from patches/imapsync-pb-acl.diff rename to W/patches/imapsync-pb-acl.diff diff --git a/patches/imapsync-readkey b/W/patches/imapsync-readkey similarity index 100% rename from patches/imapsync-readkey rename to W/patches/imapsync-readkey diff --git a/patches/imapsync-ssl.diff b/W/patches/imapsync-ssl.diff similarity index 100% rename from patches/imapsync-ssl.diff rename to W/patches/imapsync-ssl.diff diff --git a/patches/imapsync-ssl2.diff b/W/patches/imapsync-ssl2.diff similarity index 100% rename from patches/imapsync-ssl2.diff rename to W/patches/imapsync-ssl2.diff diff --git a/patches/imapsync-undef_arrayref.diff b/W/patches/imapsync-undef_arrayref.diff similarity index 100% rename from patches/imapsync-undef_arrayref.diff rename to W/patches/imapsync-undef_arrayref.diff diff --git a/patches/imapsync-yahoo b/W/patches/imapsync-yahoo similarity index 100% rename from patches/imapsync-yahoo rename to W/patches/imapsync-yahoo diff --git a/patches/imapsync.1.282.patch b/W/patches/imapsync.1.282.patch similarity index 100% rename from patches/imapsync.1.282.patch rename to W/patches/imapsync.1.282.patch diff --git a/patches/imapsync.1.282.patch2 b/W/patches/imapsync.1.282.patch2 similarity index 100% rename from patches/imapsync.1.282.patch2 rename to W/patches/imapsync.1.282.patch2 diff --git a/patches/imapsync.1.284.patch b/W/patches/imapsync.1.284.patch similarity index 100% rename from patches/imapsync.1.284.patch rename to W/patches/imapsync.1.284.patch diff --git a/patches/imapsync.WilliamHernandez.INBOX.INBOX b/W/patches/imapsync.WilliamHernandez.INBOX.INBOX similarity index 100% rename from patches/imapsync.WilliamHernandez.INBOX.INBOX rename to W/patches/imapsync.WilliamHernandez.INBOX.INBOX diff --git a/patches/imapsync.dave b/W/patches/imapsync.dave similarity index 100% rename from patches/imapsync.dave rename to W/patches/imapsync.dave diff --git a/patches/imapsync.diff b/W/patches/imapsync.diff similarity index 100% rename from patches/imapsync.diff rename to W/patches/imapsync.diff diff --git a/patches/imapsync.patch_rick_romero b/W/patches/imapsync.patch_rick_romero similarity index 100% rename from patches/imapsync.patch_rick_romero rename to W/patches/imapsync.patch_rick_romero diff --git a/patches/imapsync.syncuid.diff b/W/patches/imapsync.syncuid.diff similarity index 100% rename from patches/imapsync.syncuid.diff rename to W/patches/imapsync.syncuid.diff diff --git a/patches/imapsync_1.267_jari b/W/patches/imapsync_1.267_jari similarity index 100% rename from patches/imapsync_1.267_jari rename to W/patches/imapsync_1.267_jari diff --git a/patches/imapsync_Cvitkovich_pidfile_tmpfile b/W/patches/imapsync_Cvitkovich_pidfile_tmpfile similarity index 100% rename from patches/imapsync_Cvitkovich_pidfile_tmpfile rename to W/patches/imapsync_Cvitkovich_pidfile_tmpfile diff --git a/patches/imapsync_minsize b/W/patches/imapsync_minsize similarity index 100% rename from patches/imapsync_minsize rename to W/patches/imapsync_minsize diff --git a/patches/proxyauth-v2_1.366.patch b/W/patches/proxyauth-v2_1.366.patch similarity index 100% rename from patches/proxyauth-v2_1.366.patch rename to W/patches/proxyauth-v2_1.366.patch diff --git a/patches/proxyauth_1.366.patch b/W/patches/proxyauth_1.366.patch similarity index 100% rename from patches/proxyauth_1.366.patch rename to W/patches/proxyauth_1.366.patch diff --git a/paypal.shtml b/W/paypal.shtml similarity index 100% rename from paypal.shtml rename to W/paypal.shtml diff --git a/W/paypal_reply/memo b/W/paypal_reply/memo index 490e8ac..87232d5 100644 --- a/W/paypal_reply/memo +++ b/W/paypal_reply/memo @@ -1,6 +1,6 @@ #!/bin/sh -# $Id: memo,v 1.10 2012/08/10 22:25:31 gilles Exp gilles $ +# $Id: memo,v 1.11 2012/08/16 13:37:02 gilles Exp gilles $ echo paypal_bilan_todo @@ -28,7 +28,29 @@ Europe a un autre assujetti : Article 262 ter => Exoneration EOF } -echo paypal_bilan_tests_tva_2 +echo paypal_bilan_exportbnc +paypal_bilan_exportbnc() { +# DID output no diff between paypal_bilan_1.58 and 1.59 +( +#set -x +/g/public_html/imapsync/W/paypal_reply/paypal_bilan_1.58 --bnc --debug --debug_invoice --first_in 147 \ + --avoid_numbers '292 293 643 644 731 732 1093 1330 1331 1332 1333 1334 1652 1653' \ + /g/paypal/paypal_201?_??_complet.csv \ + > /g/var/paypal_bilan/tests/paypal_invoice.out1 2>&1 + +/g/public_html/imapsync/W/paypal_reply/paypal_bilan --exportbnc paypal_bnc.txt --bnc --debug --debug_invoice --first_in 147 \ + --avoid_numbers '292 293 643 644 731 732 1093 1330 1331 1332 1333 1334 1652 1653' \ + /g/paypal/paypal_201?_??_complet.csv \ + > /g/var/paypal_bilan/tests/paypal_invoice.out2 2>&1 + +echo diff /g/var/paypal_bilan/tests/paypal_invoice.out1 /g/var/paypal_bilan/tests/paypal_invoice.out2 + diff /g/var/paypal_bilan/tests/paypal_invoice.out1 /g/var/paypal_bilan/tests/paypal_invoice.out2 +) +} + + + +#echo paypal_bilan_tests_tva_2 paypal_bilan_tests_tva_2() { # DID output no diff between paypal_bilan_1.56 and 1.5? ( diff --git a/W/paypal_reply/paypal_bilan b/W/paypal_reply/paypal_bilan index 9cac50a..10b7a09 100755 --- a/W/paypal_reply/paypal_bilan +++ b/W/paypal_reply/paypal_bilan @@ -44,6 +44,8 @@ my $debug_invoice_utf8 ; my $first_invoice = 1 ; my $print_details = '' ; my $bnc = '' ; +my $exportbnc = '' ; + my $usdeur = 1.2981 ; my $invoices ; my %invoice_refund ; @@ -65,6 +67,7 @@ my $option_ret = GetOptions ( 'first_invoice=i' => \$first_invoice, 'print_details|details' => \$print_details, 'bnc' => \$bnc, + 'exportbnc=s' => \$exportbnc, 'usdeur=f' => \$usdeur, 'invoices=s' => \$invoices, 'write_invoices!' => \$write_invoices, @@ -159,8 +162,10 @@ my @invoice_canceled = sort { $a <=> $b } keys( %invoice_canceled ) ; my @invoice_suspended = sort { $a <=> $b } keys( %invoice_suspended ) ; my @invoice_refund = sort { $a <=> $b } keys( %invoice_refund ) ; + print( "\n", "=" x 60, "\n" ) if $bnc ; - + + print "USD banque $total_usd_received\n" ; print "USD invoice $total_usd_invoice\n" ; diff --git a/W/paypal_reply/paypal_bilan_1.56 b/W/paypal_reply/paypal_bilan_1.58 similarity index 97% rename from W/paypal_reply/paypal_bilan_1.56 rename to W/paypal_reply/paypal_bilan_1.58 index 446da29..9cac50a 100755 --- a/W/paypal_reply/paypal_bilan_1.56 +++ b/W/paypal_reply/paypal_bilan_1.58 @@ -1,6 +1,6 @@ #!/usr/bin/perl -# $Id: paypal_bilan,v 1.56 2012/07/16 21:57:51 gilles Exp gilles $ +# $Id: paypal_bilan,v 1.58 2012/08/11 00:01:46 gilles Exp gilles $ use strict; use warnings; @@ -13,7 +13,7 @@ use Test::More 'no_plan' ; die unless (utf8_supported_charset('ISO-8859-1')); -my $rcs = '$Id: paypal_bilan,v 1.56 2012/07/16 21:57:51 gilles Exp gilles $ ' ; +my $rcs = '$Id: paypal_bilan,v 1.58 2012/08/11 00:01:46 gilles Exp gilles $ ' ; $rcs =~ m/,v (\d+\.\d+)/ ; my $VERSION = ($1) ? $1: "UNKNOWN" ; @@ -103,10 +103,10 @@ foreach my $file ( @files ) { #print $action->{ Nom }, "\n" ; my( $Date, $Heure, $Fuseau_horaire, $Nom, $Type, $Etat, $Devise, $Montant, $Numero_davis_de_reception, $Solde, - $Pays, $Nom_Option_1, $Valeur_Option_1, $Hors_taxe, $Titre_de_l_objet ) + $Pays, $Nom_Option_1, $Valeur_Option_1, $Hors_taxe, $Titre_de_l_objet, $Nom_Option_2, $Option_2_Valeur ) = @action{ ( 'Date', 'Heure', 'Fuseau horaire', 'Nom', 'Type', 'Etat', 'Devise', 'Montant', "Numéro d'avis de réception", 'Solde', - 'Pays', 'Nom Option 1', 'Valeur Option 1', 'Hors taxe', "Titre de l'objet") } ; + 'Pays', 'Nom Option 1', 'Valeur Option 1', 'Hors taxe', "Titre de l'objet", 'Nom Option 2', 'Option 2 Valeur') } ; #print "$Nom\n" ; ( $Etat ) = @action{ ( 'Etat', ) } || @action{ ( 'État' ) } ; my $invoice = 'NONE' ; @@ -509,12 +509,14 @@ sub build_invoice { $De_l_adresse_email, $A_l_adresse_email, $N_de_transaction, $Titre_de_l_objet, $TVA, $Nom_Option_1, $Valeur_Option_1, $N_de_transaction_de_reference, $Adresse_1, $Adresse_2_district_quartier, $Ville, - $Etat_Province, $Code_postal, $Pays, $line_number, $line_csv, $file_csv ) + $Etat_Province, $Code_postal, $Pays, $line_number, $line_csv, $file_csv, + $Nom_Option_2, $Option_2_Valeur ) = @action{ ( 'Date', 'Heure', 'Nom', 'Type', 'Etat', 'Devise', 'Hors taxe', 'Commission', 'Net', "De l'adresse email", "A l'adresse email", 'N° de transaction', "Titre de l'objet", 'TVA', 'Nom Option 1', 'Valeur Option 1', 'Nº de transaction de référence', 'Adresse 1', 'Adresse 2/district/quartier', 'Ville', - 'Etat/Province/Région/Comté/Territoire/Préfecture/République', 'Code postal', 'Pays', 'line_number', 'line_csv', 'file_csv' ) } ; + 'Etat/Province/Région/Comté/Territoire/Préfecture/République', 'Code postal', 'Pays', 'line_number', 'line_csv', 'file_csv', + 'Nom Option 2', 'Option 2 Valeur' ) } ; my( $Etat_Province1 ) = @action{ ( 'Etat/Province/Région/Comté/Territoire/Préfecture/République' ) } ; my( $Etat_Province2 ) = @action{ ( 'État/Province/Région/Comté/Territoire/Préfecture/République' ) } ; @@ -609,6 +611,13 @@ sub build_invoice { #print "ZZZ $object_type ( $urlSrc, $urlExe )\n" ; my ( $Nom1 ) = cut( $Nom, 42 ) ; + + my $clientVAT = '' ; + + if ( ( 'VAT if professional in Europe' eq $Nom_Option_2 ) and $Option_2_Valeur ) { + $clientVAT = $Option_2_Valeur ; + } + my $tex_variables = qq{ %% Begin input from paypal_bilan $VERSION \\providecommand{\\invoiceNumber}{$invoice} @@ -620,7 +629,7 @@ sub build_invoice { \\providecommand{\\clientAdrD}{$clientAdrD} \\providecommand{\\clientAdrE}{$clientAdrE} \\providecommand{\\clientAdrF}{$clientAdrF} -\\providecommand{\\clientVAT}{} +\\providecommand{\\clientVAT}{$clientVAT} \\providecommand{\\invoiceDate}{$Date} \\providecommand{\\invoiceHour}{$Heure} @@ -1031,8 +1040,8 @@ sub tva_stuff { $priceTVA = 'néant (none)' ; $priceTTC = $priceHT ; $HTorTTC = 'HT' ; - $messageTVAFR = 'Exonération de TVA, articles 262 1-2 du Code Général des Impôts'; - $messageTVAEN = '(VAT tax-exempt, articles 262 1-2 French General Tax Code)'; + $messageTVAFR = 'Exonération de TVA, articles 262 1-2 et ter du Code Général des Impôts'; + $messageTVAEN = '(VAT tax-exempt, articles 262 1-2 and ter of French General Tax Code)'; } foreach my $price ( $priceHT, $priceTVA, $priceTTC, $priceTTCusd ) { #print "[$price]\n" ; diff --git a/W/paypal_reply/paypal_build_invoices b/W/paypal_reply/paypal_build_invoices index 518283d..3c7ef7e 100755 --- a/W/paypal_reply/paypal_build_invoices +++ b/W/paypal_reply/paypal_build_invoices @@ -28,7 +28,7 @@ set -x #/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 1575 /g/paypal/paypal_2012_04_complet.csv #/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 1654 /g/paypal/paypal_2012_05_complet.csv #/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 1743 /g/paypal/paypal_2012_06_complet.csv -/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 1824 /g/paypal/paypal_2012_07_complet.csv +#/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 1824 /g/paypal/paypal_2012_07_complet.csv /g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 1891 /g/paypal/paypal_2012_08_complet.csv : /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 147 /g/paypal/paypal_2010_11_complet.csv diff --git a/W/paypal_reply/paypal_run_laposte b/W/paypal_reply/paypal_run_laposte index b854efa..0af386f 100755 --- a/W/paypal_reply/paypal_run_laposte +++ b/W/paypal_reply/paypal_run_laposte @@ -1,6 +1,6 @@ #!/bin/sh -# $Id: paypal_run_laposte,v 1.4 2011/05/20 10:48:01 gilles Exp gilles $ +# $Id: paypal_run_laposte,v 1.5 2012/08/24 14:18:02 gilles Exp gilles $ set -e #set -x diff --git a/W/paypal_reply/paypal_send_invoices b/W/paypal_reply/paypal_send_invoices index 0549fc8..e698111 100755 --- a/W/paypal_reply/paypal_send_invoices +++ b/W/paypal_reply/paypal_send_invoices @@ -1,6 +1,6 @@ #!/bin/sh -# $Id: paypal_send_invoices,v 1.7 2011/07/14 12:31:44 gilles Exp gilles $ +# $Id: paypal_send_invoices,v 1.8 2012/08/24 14:36:18 gilles Exp gilles $ # usages: # sh paypal_send_invoices /g/var/paypal_invoices/147 @@ -26,18 +26,16 @@ send_invoice() { test -f facture_message_body.txt || { echo NO facture_message_body.txt ; return; } test -f email_address.txt || { echo NO email_address.txt ; return; } - email=${2:-`cat email_address_2.txt || cat email_address.txt`} + email=${2:-`cat email_address_2.txt 2>/dev/null || cat email_address.txt`} > facture_message_to.txt egrep '^To: ' facture_message_header.txt > /dev/null || echo "To: $email" > facture_message_to.txt cat facture_message_header.txt facture_message_to.txt facture_message_body.txt > facture_message.txt - more facture_message.txt - - echo '====== END of message ======' test -f "SENT_TO_$email" && { - echo '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' echo "!!! Already SENT_TO_$email" - echo '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!' + return } + more facture_message.txt + echo '====== END of message ======' mailq test -f "SENT_TO_$email" || acroread facture_imapsync-${invoice}.pdf& echo "Send this invoice ${invoice} to $email?" diff --git a/paypal_return.shtml b/W/paypal_return.shtml similarity index 83% rename from paypal_return.shtml rename to W/paypal_return.shtml index 176f8b8..1313ea7 100644 --- a/paypal_return.shtml +++ b/W/paypal_return.shtml @@ -5,7 +5,7 @@ imapsync download - + @@ -14,7 +14,7 @@ - + - - - -

imapsync support

I thank you for buying Imapsync support!

@@ -48,7 +45,7 @@ to view details of this transaction.

You will receive an invoice soon.

-

Now you can contact me (Gilles LAMIRAL) by email or phone

+

Now you can contact me (Gilles LAMIRAL) by email or phone

I thank you again for buying imapsync support, -I wish you successful imap transfers and I will help you until you reach this goal!

+I wish you successful imap transfers and I will help you until you reach this goal!

-

imapsync homepage

+

imapsync homepage

Gilles LAMIRAL
gilles.lamiral@laposte.net

@@ -78,7 +75,7 @@ gilles.lamiral@laposte.net

This document last modified on
-($Id: paypal_return_support.shtml,v 1.5 2011/08/03 00:57:39 gilles Exp gilles $) +($Id: paypal_return_support.shtml,v 1.6 2012/08/15 00:27:19 gilles Exp gilles $)

diff --git a/style.css b/W/style.css similarity index 100% rename from style.css rename to W/style.css diff --git a/test.bat b/W/test.bat old mode 100755 new mode 100644 similarity index 100% rename from test.bat rename to W/test.bat diff --git a/test2.bat b/W/test2.bat old mode 100755 new mode 100644 similarity index 76% rename from test2.bat rename to W/test2.bat index c53080d..e9242f9 --- a/test2.bat +++ b/W/test2.bat @@ -1,5 +1,5 @@ -REM $Id: test2.bat,v 1.9 2012/08/10 11:28:30 gilles Exp gilles $ +REM $Id: test2.bat,v 1.10 2012/08/29 10:43:25 gilles Exp gilles $ cd C:\msys\1.0\home\Admin\imapsync REM perl ./imapsync --host1 p --user1 tata --passfile1 secret.tata --host2 p --user2 titi --passfile2 secret.titi --delete2 --expunge2 --folder INBOX @@ -29,6 +29,11 @@ REM --host2 p --user2 dollar --password2 "$%%&<>|^"^" --justlogin REM imapsync --host1 p --user1 tata --passfile1 secret.tata ^ REM --host2 p --user2 equal --password2 "==lalala" --justlogin --debugimap2 +REM perl ./imapsync --host1 p --user1 tata --passfile1 secret.tata ^ +REM --host2 p --user2 titi --passfile2 secret.titi ^ +REM --folder INBOX.useuid --useuid --debugcache --delete2 + + perl ./imapsync --host1 p --user1 tata --passfile1 secret.tata ^ - --host2 p --user2 titi --passfile2 secret.titi ^ - --folder INBOX.useuid --useuid --debugcache --delete2 + --host2 imap.gmail.com --ssl2 --user2 gilles.lamiral@gmail.com --passfile2 secret.gilles_gmail ^ + --usecache --nofoldersizes --folder INBOX --regextrans2 "s(INBOX)([Gmail]/te*st)" diff --git a/test_exe.bat b/W/test_exe.bat old mode 100755 new mode 100644 similarity index 100% rename from test_exe.bat rename to W/test_exe.bat diff --git a/test_exe_2.bat b/W/test_exe_2.bat similarity index 100% rename from test_exe_2.bat rename to W/test_exe_2.bat diff --git a/tmp/cache/F1/F2/142_242 b/W/tmp/cache/F1/F2/142_242 similarity index 100% rename from tmp/cache/F1/F2/142_242 rename to W/tmp/cache/F1/F2/142_242 diff --git a/tmp/cache/F1/F2/143_243 b/W/tmp/cache/F1/F2/143_243 similarity index 100% rename from tmp/cache/F1/F2/143_243 rename to W/tmp/cache/F1/F2/143_243 diff --git a/tmp/cache/F1/F2/177_377 b/W/tmp/cache/F1/F2/177_377 similarity index 100% rename from tmp/cache/F1/F2/177_377 rename to W/tmp/cache/F1/F2/177_377 diff --git a/tmp/cache/F1/F2/177_777 b/W/tmp/cache/F1/F2/177_777 similarity index 100% rename from tmp/cache/F1/F2/177_777 rename to W/tmp/cache/F1/F2/177_777 diff --git a/tmp/cache/G1/G2/100_200 b/W/tmp/cache/G1/G2/100_200 similarity index 100% rename from tmp/cache/G1/G2/100_200 rename to W/tmp/cache/G1/G2/100_200 diff --git a/tmp/cache/G1/G2/142_242 b/W/tmp/cache/G1/G2/142_242 similarity index 100% rename from tmp/cache/G1/G2/142_242 rename to W/tmp/cache/G1/G2/142_242 diff --git a/tmp/cache/G1/G2/177_777 b/W/tmp/cache/G1/G2/177_777 similarity index 100% rename from tmp/cache/G1/G2/177_777 rename to W/tmp/cache/G1/G2/177_777 diff --git "a/tmp/cache/rr\\uee/142_242" "b/W/tmp/cache/rr\\uee/142_242" similarity index 100% rename from "tmp/cache/rr\\uee/142_242" rename to "W/tmp/cache/rr\\uee/142_242" diff --git "a/tmp/cache/rr\\uee/143_243" "b/W/tmp/cache/rr\\uee/143_243" similarity index 100% rename from "tmp/cache/rr\\uee/143_243" rename to "W/tmp/cache/rr\\uee/143_243" diff --git "a/tmp/cache/rr\\uee/177_377" "b/W/tmp/cache/rr\\uee/177_377" similarity index 100% rename from "tmp/cache/rr\\uee/177_377" rename to "W/tmp/cache/rr\\uee/177_377" diff --git "a/tmp/cache/rr\\uee/177_777" "b/W/tmp/cache/rr\\uee/177_777" similarity index 100% rename from "tmp/cache/rr\\uee/177_777" rename to "W/tmp/cache/rr\\uee/177_777" diff --git "a/tmp/tests/\\y" "b/W/tmp/tests/\\y" similarity index 100% rename from "tmp/tests/\\y" rename to "W/tmp/tests/\\y" diff --git a/tmp/tests/lala b/W/tmp/tests/lala similarity index 100% rename from tmp/tests/lala rename to W/tmp/tests/lala diff --git a/tmp/tests/lili b/W/tmp/tests/lili similarity index 100% rename from tmp/tests/lili rename to W/tmp/tests/lili diff --git a/tmp/tests/lolo b/W/tmp/tests/lolo similarity index 100% rename from tmp/tests/lolo rename to W/tmp/tests/lolo diff --git a/examples/archive_per_month b/examples/archive_per_month new file mode 100755 index 0000000..338efcf --- /dev/null +++ b/examples/archive_per_month @@ -0,0 +1,61 @@ +#!/bin/sh + +# $Id: archive_per_month,v 1.5 2012/08/12 16:41:22 gilles Exp gilles $ + +# Translate Jan to 01, Feb to 02 etc. +month_number() { + test X"$1" = X"Jan" && echo 01 && return + test X"$1" = X"Feb" && echo 02 && return + test X"$1" = X"Mar" && echo 03 && return + test X"$1" = X"Apr" && echo 04 && return + test X"$1" = X"May" && echo 05 && return + test X"$1" = X"Jun" && echo 06 && return + test X"$1" = X"Jul" && echo 07 && return + test X"$1" = X"Aug" && echo 08 && return + test X"$1" = X"Sep" && echo 09 && return + test X"$1" = X"Oct" && echo 10 && return + test X"$1" = X"Nov" && echo 11 && return + test X"$1" = X"Dec" && echo 12 && return + echo 00 +} + +# Calculates the last day of month +# Expect GNU date command + +last_day_of_year_month() { + year_ld=$1 + month_ld=$2 + + next_month_day_01=`date -d "$year_ld-$month_ld-15 next month" +%Y-%m-01` + #echo $next_month_day_1 + # last day is 1st day of next month minus 1 day + date -d "$next_month_day_01 -1 day" +%d +} + + +# Replace ... with standard options like --host1 --user1 --password1 --host2 --user2 --password2 +# Remove the echo at the beginning + +archive_year_month() { + year=$1 + month=$2 + + month_n=`month_number $month` + last_day=`last_day_of_year_month $year $month_n` + echo imapsync ... \ + --search "SENTSINCE 1-$month-$year SENTBEFORE $last_day-$month-$year" \ + --regextrans2 "s{.*}{Archive/$year/$month_n}" + +} + + +# +for year_archive in 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012; do + for month_archive in "Jan" "Feb" "Mar" "Apr" "May" "Jun" "Jul" "Aug" "Sep" "Oct" "Nov" "Dec"; do + archive_year_month $year_archive $month_archive + done +done + + +# End of $Id: archive_per_month,v 1.5 2012/08/12 16:41:22 gilles Exp gilles $ + diff --git a/file.txt b/examples/file.txt similarity index 98% rename from file.txt rename to examples/file.txt index 9d931a7..fcd8809 100644 --- a/file.txt +++ b/examples/file.txt @@ -1,27 +1,27 @@ -# Example file.txt for imapsync massive migration. -# -# ==== Windows ==== -# Thanks to http://ss64.com/nt/for_f.html for -# the Windows example of a for loop -# -# This file can be used on Windows with the following line in a batch -# FOR /F "tokens=1,2,3,4 delims=; eol=#" %%G IN (file.txt) DO imapsync --host1 imap.truc.org --user1 %%G --password1 %%H --host2 imap.trac.org --user2 %%I --password2 %%J -# -# A line beginning with # is a comment thanks to option Win32 eol=# -# Separator is character ; it can be changed by any character changing delims=; -# Each line contains 4 columns, columns are parameters for --user1 --password1 --user2 --password2 -# -# ==== Unix ==== -# This file can be used on Unix with the following line in a Bourne shell script -# { while IFS=';' read u1 p1 u2 p2; do imapsync --user1 "$u1" --password1 "$p1" --user2 "$u2" --password2 "$p2" ... ; done ; } < file.txt -# -# Separator is character ; it can be changed by any character changing IFS=';' -# Each line contains 4 columns, columns are parameters for --user1 --password1 --user2 --password2 -# -# Now the data example -user001_1;password001_1;user001_2;password001_2 -user002_1;password002_1;user002_2;password002_2 -user003_1;password003_1;user003_2;password003_2 -# Another comment blabla -user004_1;password004_1;user004_2;password004_2 -user005_1;password005_1;user005_2;password005_2 +# Example file.txt for imapsync massive migration. +# +# ==== Windows ==== +# Thanks to http://ss64.com/nt/for_f.html for +# the Windows example of a for loop +# +# This file can be used on Windows with the following line in a batch +# FOR /F "tokens=1,2,3,4 delims=; eol=#" %%G IN (file.txt) DO imapsync --host1 imap.truc.org --user1 %%G --password1 %%H --host2 imap.trac.org --user2 %%I --password2 %%J +# +# A line beginning with # is a comment thanks to option Win32 eol=# +# Separator is character ; it can be changed by any character changing delims=; +# Each line contains 4 columns, columns are parameters for --user1 --password1 --user2 --password2 +# +# ==== Unix ==== +# This file can be used on Unix with the following line in a Bourne shell script +# { while IFS=';' read u1 p1 u2 p2; do imapsync --user1 "$u1" --password1 "$p1" --user2 "$u2" --password2 "$p2" ... ; done ; } < file.txt +# +# Separator is character ; it can be changed by any character changing IFS=';' +# Each line contains 4 columns, columns are parameters for --user1 --password1 --user2 --password2 +# +# Now the data example +user001_1;password001_1;user001_2;password001_2 +user002_1;password002_1;user002_2;password002_2 +user003_1;password003_1;user003_2;password003_2 +# Another comment blabla +user004_1;password004_1;user004_2;password004_2 +user005_1;password005_1;user005_2;password005_2 diff --git a/imapsync_example.bat.txt b/examples/imapsync_example.bat.txt old mode 100755 new mode 100644 similarity index 100% rename from imapsync_example.bat.txt rename to examples/imapsync_example.bat.txt diff --git a/i2 b/i2 index 39074b5..97b6318 100755 --- a/i2 +++ b/i2 @@ -1,7 +1,7 @@ #!/bin/sh -# $Id: i2,v 1.2 2011/03/15 01:14:15 gilles Exp gilles $ +# $Id: i2,v 1.3 2012/08/12 23:15:15 gilles Exp gilles $ BASE=`dirname $0` -perl -I${BASE}/Mail-IMAPClient-2.2.9 ${BASE}/imapsync "$@" +perl -I${BASE}/W/Mail-IMAPClient-2.2.9 ${BASE}/imapsync "$@" diff --git a/i3 b/i3 index 5d1b01e..cf3a177 100755 --- a/i3 +++ b/i3 @@ -1,7 +1,7 @@ #!/bin/sh -# $Id: i3,v 1.9 2012/04/15 19:18:02 gilles Exp gilles $ +# $Id: i3,v 1.10 2012/08/12 23:15:15 gilles Exp gilles $ BASE=`dirname $0` -perl -I${BASE}/Mail-IMAPClient-3.31/lib ${BASE}/imapsync "$@" +perl -I${BASE}/W/Mail-IMAPClient-3.31/lib ${BASE}/imapsync "$@" diff --git a/imapsync b/imapsync index 76b2c2d..9899e22 100755 --- a/imapsync +++ b/imapsync @@ -20,7 +20,7 @@ Synchronise mailboxes between two imap servers. Good at IMAP migration. More than 44 different IMAP server softwares supported with success. -$Revision: 1.500 $ +$Revision: 1.504 $ =head1 SYNOPSIS @@ -515,7 +515,7 @@ Entries for imapsync: Feedback (good or bad) will often be welcome. -$Id: imapsync,v 1.500 2012/08/10 04:58:46 gilles Exp gilles $ +$Id: imapsync,v 1.504 2012/08/28 13:10:26 gilles Exp gilles $ =cut @@ -543,7 +543,7 @@ use Errno qw(EAGAIN EPIPE ECONNRESET); use File::Glob qw( :glob ) ; use IO::File; use Time::Local ; - +use Time::HiRes qw( time ) ; use Test::More 'no_plan'; eval { require 'usr/include/sysexits.ph' }; @@ -604,7 +604,7 @@ my( $h1_nb_msg_deleted, $h2_nb_msg_deleted, $timeout, - $timestart, $timeend, $timediff, + $timestart, $timestart_int, $timeend, $timediff, $timesize, $timebefore, $ssl1, $ssl2, $tls1, $tls2, @@ -626,14 +626,14 @@ my( $wholeheaderifneeded, %h1_msgs_copy_by_uid, $useuid, $h2_uidguess, $addheader, %h1, %h2, - $checkselectable, + $checkselectable, $checkmessageexists, ); # main program # global variables initialisation -$rcs = '$Id: imapsync,v 1.500 2012/08/10 04:58:46 gilles Exp gilles $ '; +$rcs = '$Id: imapsync,v 1.504 2012/08/28 13:10:26 gilles Exp gilles $ '; $total_bytes_transferred = 0; $total_bytes_skipped = 0; @@ -714,6 +714,7 @@ $usecache = 1 if ( $useuid and ( ! defined( $usecache ) ) ) ; $cacheaftercopy = 1 if ( $usecache and ( ! defined( $cacheaftercopy ) ) ) ; $checkselectable = defined( $checkselectable ) ? $checkselectable : 1 ; +$checkmessageexists = defined( $checkmessageexists ) ? $checkmessageexists : 1 ; print banner_imapsync(@argv_copy); @@ -890,6 +891,7 @@ my $imap1 = (); my $imap2 = (); $timestart = time( ); +$timestart_int = int( $timestart ) ; $timebefore = $timestart; $debugimap1 and print "Host1 connection\n"; @@ -1071,6 +1073,8 @@ delete_folders_in_2_not_in_1() if $delete2folders; # folder loop print "++++ Looping on each folder\n"; +my $begin_transfer_time = time ; + FOLDER: foreach my $h1_fold (@h1_folders_wanted) { last FOLDER if $imap1->IsUnconnected(); @@ -1899,8 +1903,8 @@ sub banner_imapsync { my @argv_copy = @_; my $banner_imapsync = join("", '$RCSfile: imapsync,v $ ', - '$Revision: 1.500 $ ', - '$Date: 2012/08/10 04:58:46 $ ', + '$Revision: 1.504 $ ', + '$Date: 2012/08/28 13:10:26 $ ', "\n",localhost_info(), "\n", "Command line used:\n", "$0 ", command_line_nopassword(@argv_copy), "\n", @@ -2307,7 +2311,7 @@ sub foldersizes { my $total_nb = 0 ; my $biggest = 0 ; - print "++++ Calculating sizes\n" ; + print "++++ Calculating sizes on $side\n" ; foreach my $folder ( @folders ) { my $stot = 0 ; my $nb_msgs = 0 ; @@ -2348,21 +2352,31 @@ sub foldersizes { $total_size += $stot ; $total_nb += $nb_msgs ; } - printf ( "Nb messages: %11s\n", $total_nb ) ; - printf ( "Total size: %11s bytes\n", $total_size ) ; - printf ( "Biggest message: %11s bytes\n", $biggest ) ; - printf ( "Time: %11s seconds\n", timenext( ) ) ; + printf ( "Nb messages: %11s messages\n", $total_nb ) ; + printf ( "Total size: %11s bytes (%s)\n", $total_size, bytes_display_string( $total_size ) ) ; + printf ( "Biggest message: %11s bytes (%s)\n", $biggest, bytes_display_string( $biggest ) ) ; + printf ( "Time spent: %11.1f seconds\n", timenext( ) ) ; } sub timenext { - my ($timenow, $timerel); + my ( $timenow, $timediff ) ; # $timebefore is global, beurk ! - $timenow = time; - $timerel = $timenow - $timebefore; - $timebefore = $timenow; - return($timerel); + $timenow = time ; + $timediff = $timenow - $timebefore ; + $timebefore = $timenow ; + return( $timediff ) ; } +sub timesince { + my $timeinit = shift ; + my ( $timenow, $timediff ) ; + $timenow = time ; + $timediff = $timenow - $timeinit ; + return( $timediff ) ; +} + + + sub tests_flags_regex { @@ -2629,10 +2643,10 @@ sub select_msgs { } if ( defined( $maxage ) ) { - @max = $imap->sentsince( $timestart - 86400 * $maxage ) ; + @max = $imap->sentsince( $timestart_int - 86400 * $maxage ) ; } if ( defined($minage ) ) { - @min = $imap->sentbefore( $timestart - 86400 * $minage ) ; + @min = $imap->sentbefore( $timestart_int - 86400 * $minage ) ; } SWITCH: { unless( defined( $minage ) ) { @msgs = @max ; last SWITCH } ; @@ -2727,7 +2741,7 @@ sub copy_message { do { print "SLEEP 5\n" and sleep 5 ; } if ( $debugsleep ) ; print "- msg $h1_fold/$h1_msg S[$h1_size] F[$h1_flags] I[$h1_idate] has RFC822.SIZE null!\n" if ( ! $h1_size ) ; - return( ) if not message_exists( $imap1, $h1_msg ) ; + return( ) if ( $checkmessageexists and not message_exists( $imap1, $h1_msg ) ) ; $string = $imap1->message_string($h1_msg); @@ -2802,10 +2816,15 @@ sub copy_message { if ( $new_id !~ m{^\d+$} ) { $new_id = lastuid( $imap2, $h2_fold, $h2_uidguess ) ; } - printf( "msg %s/%-19s copied to %s/%-10s\n", $h1_fold, "$h1_msg {$string_len}", $h2_fold, $new_id ); $h2_uidguess += 1 ; - $total_bytes_transferred += $h1_size; - $nb_msg_transferred += 1; + $total_bytes_transferred += $h1_size ; + $nb_msg_transferred += 1 ; + + my $time_spent = timesince( $begin_transfer_time ) ; + my $rate = bytes_display_string( $total_bytes_transferred / $time_spent ) ; + + printf( "msg %s/%-19s copied to %s/%-10s %.2f msgs/s %s/s\n", + $h1_fold, "$h1_msg {$string_len}", $h2_fold, $new_id, $nb_msg_transferred/$time_spent, $rate ); if ( $usecache and $cacheaftercopy and $new_id =~ m{^\d+$} ) { $debugcache and print "touch $cache_dir/${h1_msg}_$new_id\n" ; @@ -2956,21 +2975,21 @@ sub get_cache { sub tests_get_cache { ok( ! get_cache('/cache_no_exist'), 'get_cache: /cache_no_exist' ); - ok( ( ! -d 'tmp/cache/F1/F2' or rmtree( 'tmp/cache/F1/F2' )), 'get_cache: rmtree tmp/cache/F1/F2' ) ; - ok( mkpath( 'tmp/cache/F1/F2' ), 'get_cache: mkpath tmp/cache/F1/F2' ) ; + ok( ( ! -d 'W/tmp/cache/F1/F2' or rmtree( 'W/tmp/cache/F1/F2' )), 'get_cache: rmtree W/tmp/cache/F1/F2' ) ; + ok( mkpath( 'W/tmp/cache/F1/F2' ), 'get_cache: mkpath W/tmp/cache/F1/F2' ) ; my @test_files_cache = ( qw( - tmp/cache/F1/F2/100_200 - tmp/cache/F1/F2/101_201 - tmp/cache/F1/F2/120_220 - tmp/cache/F1/F2/142_242 - tmp/cache/F1/F2/143_243 - tmp/cache/F1/F2/177_277 - tmp/cache/F1/F2/177_377 - tmp/cache/F1/F2/177_777 - tmp/cache/F1/F2/155_255 + W/tmp/cache/F1/F2/100_200 + W/tmp/cache/F1/F2/101_201 + W/tmp/cache/F1/F2/120_220 + W/tmp/cache/F1/F2/142_242 + W/tmp/cache/F1/F2/143_243 + W/tmp/cache/F1/F2/177_277 + W/tmp/cache/F1/F2/177_377 + W/tmp/cache/F1/F2/177_777 + W/tmp/cache/F1/F2/155_255 ) ) ; - ok( touch( @test_files_cache ), 'get_cache: touch tmp/cache/F1/F2/...' ) ; + ok( touch( @test_files_cache ), 'get_cache: touch W/tmp/cache/F1/F2/...' ) ; # on cache: 100_200 101_201 142_242 143_243 177_277 177_377 177_777 155_255 @@ -2982,44 +3001,44 @@ sub tests_get_cache { my $msgs_all_2 = { 242 => '', 243 => '', 299 => '', 377 => '', 777 => '', 255 => '' } ; my( $c12, $c21 ) ; - ok( ( $c12, $c21 ) = get_cache( 'tmp/cache/F1/F2', $msgs_1, $msgs_2, $msgs_all_1, $msgs_all_2 ), 'get_cache: 02' ); + ok( ( $c12, $c21 ) = get_cache( 'W/tmp/cache/F1/F2', $msgs_1, $msgs_2, $msgs_all_1, $msgs_all_2 ), 'get_cache: 02' ); my $a1 = [ sort { $a <=> $b } keys %$c12 ] ; my $a2 = [ sort { $a <=> $b } keys %$c21 ] ; ok( 0 == compare_lists( [ 142, 143, 177 ], $a1 ), 'get_cache: 03' ); ok( 0 == compare_lists( [ 242, 243, 777 ], $a2 ), 'get_cache: 04' ); - ok( -f 'tmp/cache/F1/F2/142_242', 'get_cache: file kept 142_242'); - ok( -f 'tmp/cache/F1/F2/142_242', 'get_cache: file kept 143_243'); - ok( ! -f 'tmp/cache/F1/F2/100_200', 'get_cache: file removed 100_200'); - ok( ! -f 'tmp/cache/F1/F2/101_201', 'get_cache: file removed 101_201'); + ok( -f 'W/tmp/cache/F1/F2/142_242', 'get_cache: file kept 142_242'); + ok( -f 'W/tmp/cache/F1/F2/142_242', 'get_cache: file kept 143_243'); + ok( ! -f 'W/tmp/cache/F1/F2/100_200', 'get_cache: file removed 100_200'); + ok( ! -f 'W/tmp/cache/F1/F2/101_201', 'get_cache: file removed 101_201'); # test clean_cache executed $maxage = 2 ; - ok( touch(@test_files_cache), 'get_cache: touch tmp/cache/F1/F2/...' ) ; - ok( ( $c12, $c21 ) = get_cache('tmp/cache/F1/F2', $msgs_1, $msgs_2, $msgs_all_1, $msgs_all_2 ), 'get_cache: 02' ); - ok( -f 'tmp/cache/F1/F2/142_242', 'get_cache: file kept 142_242'); - ok( -f 'tmp/cache/F1/F2/142_242', 'get_cache: file kept 143_243'); - ok( ! -f 'tmp/cache/F1/F2/100_200', 'get_cache: file NOT removed 100_200'); - ok( ! -f 'tmp/cache/F1/F2/101_201', 'get_cache: file NOT removed 101_201'); + ok( touch(@test_files_cache), 'get_cache: touch W/tmp/cache/F1/F2/...' ) ; + ok( ( $c12, $c21 ) = get_cache('W/tmp/cache/F1/F2', $msgs_1, $msgs_2, $msgs_all_1, $msgs_all_2 ), 'get_cache: 02' ); + ok( -f 'W/tmp/cache/F1/F2/142_242', 'get_cache: file kept 142_242'); + ok( -f 'W/tmp/cache/F1/F2/142_242', 'get_cache: file kept 143_243'); + ok( ! -f 'W/tmp/cache/F1/F2/100_200', 'get_cache: file NOT removed 100_200'); + ok( ! -f 'W/tmp/cache/F1/F2/101_201', 'get_cache: file NOT removed 101_201'); # strange files #$debugcache = 1 ; $maxage = undef ; - ok( ( ! -d 'tmp/cache/rr\uee' or rmtree( 'tmp/cache/rr\uee' )), 'get_cache: rmtree tmp/cache/rr\uee' ) ; - ok( mkpath( 'tmp/cache/rr\uee' ), 'get_cache: mkpath tmp/cache/rr\uee' ) ; + ok( ( ! -d 'W/tmp/cache/rr\uee' or rmtree( 'W/tmp/cache/rr\uee' )), 'get_cache: rmtree W/tmp/cache/rr\uee' ) ; + ok( mkpath( 'W/tmp/cache/rr\uee' ), 'get_cache: mkpath W/tmp/cache/rr\uee' ) ; @test_files_cache = ( qw( - tmp/cache/rr\uee/100_200 - tmp/cache/rr\uee/101_201 - tmp/cache/rr\uee/120_220 - tmp/cache/rr\uee/142_242 - tmp/cache/rr\uee/143_243 - tmp/cache/rr\uee/177_277 - tmp/cache/rr\uee/177_377 - tmp/cache/rr\uee/177_777 - tmp/cache/rr\uee/155_255 + W/tmp/cache/rr\uee/100_200 + W/tmp/cache/rr\uee/101_201 + W/tmp/cache/rr\uee/120_220 + W/tmp/cache/rr\uee/142_242 + W/tmp/cache/rr\uee/143_243 + W/tmp/cache/rr\uee/177_277 + W/tmp/cache/rr\uee/177_377 + W/tmp/cache/rr\uee/177_777 + W/tmp/cache/rr\uee/155_255 ) ) ; - ok( touch(@test_files_cache), 'get_cache: touch strange tmp/cache/...' ) ; + ok( touch(@test_files_cache), 'get_cache: touch strange W/tmp/cache/...' ) ; # on cache: 100_200 101_201 142_242 143_243 177_277 177_377 177_777 155_255 # on live: @@ -3029,15 +3048,15 @@ sub tests_get_cache { $msgs_all_1 = { 120 => '', 142 => '', 143 => '', 144 => '', 177 => '' } ; $msgs_all_2 = { 242 => '', 243 => '', 299 => '', 377 => '', 777 => '', 255 => '' } ; - ok( ( $c12, $c21 ) = get_cache('tmp/cache/rr\uee', $msgs_1, $msgs_2, $msgs_all_1, $msgs_all_2), 'get_cache: strange path 02' ); + ok( ( $c12, $c21 ) = get_cache('W/tmp/cache/rr\uee', $msgs_1, $msgs_2, $msgs_all_1, $msgs_all_2), 'get_cache: strange path 02' ); $a1 = [ sort { $a <=> $b } keys %$c12 ] ; $a2 = [ sort { $a <=> $b } keys %$c21 ] ; ok( 0 == compare_lists( [ 142, 143, 177 ], $a1 ), 'get_cache: strange path 03' ); ok( 0 == compare_lists( [ 242, 243, 777 ], $a2 ), 'get_cache: strange path 04' ); - ok( -f 'tmp/cache/rr\uee/142_242', 'get_cache: strange path file kept 142_242'); - ok( -f 'tmp/cache/rr\uee/142_242', 'get_cache: strange path file kept 143_243'); - ok( ! -f 'tmp/cache/rr\uee/100_200', 'get_cache: strange path file removed 100_200'); - ok( ! -f 'tmp/cache/rr\uee/101_201', 'get_cache: strange path file removed 101_201'); + ok( -f 'W/tmp/cache/rr\uee/142_242', 'get_cache: strange path file kept 142_242'); + ok( -f 'W/tmp/cache/rr\uee/142_242', 'get_cache: strange path file kept 143_243'); + ok( ! -f 'W/tmp/cache/rr\uee/100_200', 'get_cache: strange path file removed 100_200'); + ok( ! -f 'W/tmp/cache/rr\uee/101_201', 'get_cache: strange path file removed 101_201'); } @@ -3115,28 +3134,28 @@ sub clean_cache { sub tests_clean_cache { - ok( ( ! -d 'tmp/cache/G1/G2' or rmtree( 'tmp/cache/G1/G2' )), 'clean_cache: rmtree tmp/cache/G1/G2' ) ; - ok( mkpath( 'tmp/cache/G1/G2' ), 'clean_cache: mkpath tmp/cache/G1/G2' ) ; + ok( ( ! -d 'W/tmp/cache/G1/G2' or rmtree( 'W/tmp/cache/G1/G2' )), 'clean_cache: rmtree W/tmp/cache/G1/G2' ) ; + ok( mkpath( 'W/tmp/cache/G1/G2' ), 'clean_cache: mkpath W/tmp/cache/G1/G2' ) ; my @test_files_cache = ( qw( - tmp/cache/G1/G2/100_200 - tmp/cache/G1/G2/101_201 - tmp/cache/G1/G2/120_220 - tmp/cache/G1/G2/142_242 - tmp/cache/G1/G2/143_243 - tmp/cache/G1/G2/177_277 - tmp/cache/G1/G2/177_377 - tmp/cache/G1/G2/177_777 - tmp/cache/G1/G2/155_255 + W/tmp/cache/G1/G2/100_200 + W/tmp/cache/G1/G2/101_201 + W/tmp/cache/G1/G2/120_220 + W/tmp/cache/G1/G2/142_242 + W/tmp/cache/G1/G2/143_243 + W/tmp/cache/G1/G2/177_277 + W/tmp/cache/G1/G2/177_377 + W/tmp/cache/G1/G2/177_777 + W/tmp/cache/G1/G2/155_255 ) ) ; - ok( touch(@test_files_cache), 'clean_cache: touch tmp/cache/G1/G2/...' ) ; + ok( touch(@test_files_cache), 'clean_cache: touch W/tmp/cache/G1/G2/...' ) ; - ok( -f 'tmp/cache/G1/G2/100_200', 'clean_cache: 100_200 before' ); - ok( -f 'tmp/cache/G1/G2/142_242', 'clean_cache: 142_242 before' ); - ok( -f 'tmp/cache/G1/G2/177_277', 'clean_cache: 177_277 before' ); - ok( -f 'tmp/cache/G1/G2/177_377', 'clean_cache: 177_377 before' ); - ok( -f 'tmp/cache/G1/G2/177_777', 'clean_cache: 177_777 before' ); - ok( -f 'tmp/cache/G1/G2/155_255', 'clean_cache: 155_255 before' ); + ok( -f 'W/tmp/cache/G1/G2/100_200', 'clean_cache: 100_200 before' ); + ok( -f 'W/tmp/cache/G1/G2/142_242', 'clean_cache: 142_242 before' ); + ok( -f 'W/tmp/cache/G1/G2/177_277', 'clean_cache: 177_277 before' ); + ok( -f 'W/tmp/cache/G1/G2/177_377', 'clean_cache: 177_377 before' ); + ok( -f 'W/tmp/cache/G1/G2/177_777', 'clean_cache: 177_777 before' ); + ok( -f 'W/tmp/cache/G1/G2/155_255', 'clean_cache: 155_255 before' ); my $cache = { 142 => 242, @@ -3155,38 +3174,38 @@ sub tests_clean_cache { } ; ok( clean_cache( \@test_files_cache, $cache, $all_1, $all_2 ), 'clean_cache: ' ) ; - ok( ! -f 'tmp/cache/G1/G2/100_200', 'clean_cache: 100_200 after' ); - ok( -f 'tmp/cache/G1/G2/142_242', 'clean_cache: 142_242 after' ); - ok( ! -f 'tmp/cache/G1/G2/177_277', 'clean_cache: 177_277 after' ); - ok( ! -f 'tmp/cache/G1/G2/177_377', 'clean_cache: 177_377 after' ); - ok( -f 'tmp/cache/G1/G2/177_777', 'clean_cache: 177_777 after' ); - ok( ! -f 'tmp/cache/G1/G2/155_255', 'clean_cache: 155_255 after' ); + ok( ! -f 'W/tmp/cache/G1/G2/100_200', 'clean_cache: 100_200 after' ); + ok( -f 'W/tmp/cache/G1/G2/142_242', 'clean_cache: 142_242 after' ); + ok( ! -f 'W/tmp/cache/G1/G2/177_277', 'clean_cache: 177_277 after' ); + ok( ! -f 'W/tmp/cache/G1/G2/177_377', 'clean_cache: 177_377 after' ); + ok( -f 'W/tmp/cache/G1/G2/177_777', 'clean_cache: 177_777 after' ); + ok( ! -f 'W/tmp/cache/G1/G2/155_255', 'clean_cache: 155_255 after' ); } sub tests_clean_cache_2 { - ok( ( ! -d 'tmp/cache/G1/G2' or rmtree( 'tmp/cache/G1/G2' )), 'clean_cache_2: rmtree tmp/cache/G1/G2' ) ; - ok( mkpath( 'tmp/cache/G1/G2' ), 'clean_cache_2: mkpath tmp/cache/G1/G2' ) ; + ok( ( ! -d 'W/tmp/cache/G1/G2' or rmtree( 'W/tmp/cache/G1/G2' )), 'clean_cache_2: rmtree W/tmp/cache/G1/G2' ) ; + ok( mkpath( 'W/tmp/cache/G1/G2' ), 'clean_cache_2: mkpath W/tmp/cache/G1/G2' ) ; my @test_files_cache = ( qw( - tmp/cache/G1/G2/100_200 - tmp/cache/G1/G2/101_201 - tmp/cache/G1/G2/120_220 - tmp/cache/G1/G2/142_242 - tmp/cache/G1/G2/143_243 - tmp/cache/G1/G2/177_277 - tmp/cache/G1/G2/177_377 - tmp/cache/G1/G2/177_777 - tmp/cache/G1/G2/155_255 + W/tmp/cache/G1/G2/100_200 + W/tmp/cache/G1/G2/101_201 + W/tmp/cache/G1/G2/120_220 + W/tmp/cache/G1/G2/142_242 + W/tmp/cache/G1/G2/143_243 + W/tmp/cache/G1/G2/177_277 + W/tmp/cache/G1/G2/177_377 + W/tmp/cache/G1/G2/177_777 + W/tmp/cache/G1/G2/155_255 ) ) ; - ok( touch(@test_files_cache), 'clean_cache_2: touch tmp/cache/G1/G2/...' ) ; + ok( touch(@test_files_cache), 'clean_cache_2: touch W/tmp/cache/G1/G2/...' ) ; - ok( -f 'tmp/cache/G1/G2/100_200', 'clean_cache_2: 100_200 before' ); - ok( -f 'tmp/cache/G1/G2/142_242', 'clean_cache_2: 142_242 before' ); - ok( -f 'tmp/cache/G1/G2/177_277', 'clean_cache_2: 177_277 before' ); - ok( -f 'tmp/cache/G1/G2/177_377', 'clean_cache_2: 177_377 before' ); - ok( -f 'tmp/cache/G1/G2/177_777', 'clean_cache_2: 177_777 before' ); - ok( -f 'tmp/cache/G1/G2/155_255', 'clean_cache_2: 155_255 before' ); + ok( -f 'W/tmp/cache/G1/G2/100_200', 'clean_cache_2: 100_200 before' ); + ok( -f 'W/tmp/cache/G1/G2/142_242', 'clean_cache_2: 142_242 before' ); + ok( -f 'W/tmp/cache/G1/G2/177_277', 'clean_cache_2: 177_277 before' ); + ok( -f 'W/tmp/cache/G1/G2/177_377', 'clean_cache_2: 177_377 before' ); + ok( -f 'W/tmp/cache/G1/G2/177_777', 'clean_cache_2: 177_777 before' ); + ok( -f 'W/tmp/cache/G1/G2/155_255', 'clean_cache_2: 155_255 before' ); my $cache = { 142 => 242, @@ -3209,12 +3228,12 @@ sub tests_clean_cache_2 { ok( clean_cache( \@test_files_cache, $cache, $all_1, $all_2 ), 'clean_cache_2: ' ) ; - ok( -f 'tmp/cache/G1/G2/100_200', 'clean_cache_2: 100_200 after' ); - ok( -f 'tmp/cache/G1/G2/142_242', 'clean_cache_2: 142_242 after' ); - ok( ! -f 'tmp/cache/G1/G2/177_277', 'clean_cache_2: 177_277 after' ); - ok( ! -f 'tmp/cache/G1/G2/177_377', 'clean_cache_2: 177_377 after' ); - ok( -f 'tmp/cache/G1/G2/177_777', 'clean_cache_2: 177_777 after' ); - ok( ! -f 'tmp/cache/G1/G2/155_255', 'clean_cache_2: 155_255 after' ); + ok( -f 'W/tmp/cache/G1/G2/100_200', 'clean_cache_2: 100_200 after' ); + ok( -f 'W/tmp/cache/G1/G2/142_242', 'clean_cache_2: 142_242 after' ); + ok( ! -f 'W/tmp/cache/G1/G2/177_277', 'clean_cache_2: 177_277 after' ); + ok( ! -f 'W/tmp/cache/G1/G2/177_377', 'clean_cache_2: 177_377 after' ); + ok( -f 'W/tmp/cache/G1/G2/177_777', 'clean_cache_2: 177_777 after' ); + ok( ! -f 'W/tmp/cache/G1/G2/155_255', 'clean_cache_2: 155_255 after' ); } @@ -3222,19 +3241,19 @@ sub tests_clean_cache_2 { sub tests_mkpath { my $long_path = "123456789/" x 30 ; - ok( (-d "tmp/tests/long/$long_path" or mkpath( "tmp/tests/long/$long_path" )), 'tests_mkpath: mkpath > 300 char' ) ; - ok( (-d "tmp/tests/long/$long_path" and rmtree( "tmp/tests/long/" )), 'tests_mkpath: rmtree > 300 char' ) ; + ok( (-d "W/tmp/tests/long/$long_path" or mkpath( "W/tmp/tests/long/$long_path" )), 'tests_mkpath: mkpath > 300 char' ) ; + ok( (-d "W/tmp/tests/long/$long_path" and rmtree( "W/tmp/tests/long/" )), 'tests_mkpath: rmtree > 300 char' ) ; ok( 1 == 1, 'tests_mkpath: 1 == 1' ) ; } sub tests_touch { - ok( (-d 'tmp/tests/' or mkpath( 'tmp/tests/' )), 'tests_touch: mkpath tmp/tests/' ) ; - ok( 1 == touch( 'tmp/tests/lala'), 'tests_touch: tmp/tests/lala') ; - ok( 1 == touch( 'tmp/tests/\y'), 'tests_touch: tmp/tests/\y') ; + ok( (-d 'W/tmp/tests/' or mkpath( 'W/tmp/tests/' )), 'tests_touch: mkpath W/tmp/tests/' ) ; + ok( 1 == touch( 'W/tmp/tests/lala'), 'tests_touch: W/tmp/tests/lala') ; + ok( 1 == touch( 'W/tmp/tests/\y'), 'tests_touch: W/tmp/tests/\y') ; ok( 0 == touch( '/aaa'), 'tests_touch: not /aaa') ; - ok( 1 == touch( 'tmp/tests/lili', 'tmp/tests/lolo'), 'tests_touch: 2 files') ; - ok( 0 == touch( 'tmp/tests/\y', '/aaa'), 'tests_touch: 2 files, 1 fails' ) ; + ok( 1 == touch( 'W/tmp/tests/lili', 'W/tmp/tests/lolo'), 'tests_touch: 2 files') ; + ok( 0 == touch( 'W/tmp/tests/\y', '/aaa'), 'tests_touch: 2 files, 1 fails' ) ; } @@ -3262,19 +3281,37 @@ sub cache_folder { my $sep1 = $h1_sep || '/'; my $sep2 = $h2_sep || '/'; - my $h1_fold_slash = convert_sep_to_slash( $h1_fold, $sep1 ); - my $h2_fold_slash = convert_sep_to_slash( $h2_fold, $sep2 ); - - return( "$cache_dir/$h1_fold_slash/$h2_fold_slash" ) ; + $h1_fold = convert_sep_to_slash( $h1_fold, $sep1 ) ; + $h2_fold = convert_sep_to_slash( $h2_fold, $sep2 ) ; + $h1_fold = filter_forbidden_characters( $h1_fold ) ; + $h2_fold = filter_forbidden_characters( $h2_fold ) ; + return( "$cache_dir/$h1_fold/$h2_fold" ) ; +} + +sub filter_forbidden_characters { + my $string = shift ; + + $string =~ s{[\Q*|?:"<>\E]}{_}g ; + return ( $string ) ; +} + +sub tests_filter_forbidden_characters { + + ok( 'a_b' eq filter_forbidden_characters( 'a_b' ), 'filter_forbidden_characters: a_b -> a_b' ) ; + ok( 'a_b' eq filter_forbidden_characters( 'a*b' ), 'filter_forbidden_characters: a*b -> a_b' ); + ok( 'a_b' eq filter_forbidden_characters( 'a|b' ), 'filter_forbidden_characters: a|b -> a_b' ); + ok( 'a_b' eq filter_forbidden_characters( 'a?b' ), 'filter_forbidden_characters: a?*b -> a_b' ); + ok( 'a_______b' eq filter_forbidden_characters( 'a*|?:"<>b' ), 'filter_forbidden_characters: a*|?:"<>b -> a_______b' ); + } sub convert_sep_to_slash { - my ($folder, $sep) = @_; + my ( $folder, $sep ) = @_ ; - $folder =~ s{\Q$sep\E}{/}g; - return($folder); + $folder =~ s{\Q$sep\E}{/}g ; + return( $folder ) ; } sub tests_convert_sep_to_slash { @@ -3368,15 +3405,15 @@ sub bytes_display_string { my ($bytes) = @_; if ($bytes < (1024 * 1024)) { - return sprintf("%.1f KiB", $bytes / 1024); + return sprintf("%.2f KiB", $bytes / 1024); } elsif ($bytes < (1024 * 1024 * 1024)) { - return sprintf("%.1f MiB", $bytes / (1024 * 1024)); + return sprintf("%.2f MiB", $bytes / (1024 * 1024)); } elsif ($bytes < (1024 * 1024 * 1024 * 1024)) { - return sprintf("%.1f GiB", $bytes / (1024 * 1024 * 1024)); + return sprintf("%.2f GiB", $bytes / (1024 * 1024 * 1024)); } elsif ($bytes < (1024 * 1024 * 1024 * 1024 * 1024)) { - return sprintf("%.1f TiB", $bytes / (1024 * 1024 * 1024 * 1024)); + return sprintf("%.2f TiB", $bytes / (1024 * 1024 * 1024 * 1024)); } else { - return sprintf("%.1f PiB", $bytes / (1024 * 1024 * 1024 * 1024 * 1024)); + return sprintf("%.2f PiB", $bytes / (1024 * 1024 * 1024 * 1024 * 1024)); } # if you have exabytes (EiB) of email to transfer, you have too much email } @@ -3398,7 +3435,7 @@ sub stats { print "++++ Statistics\n"; print "Transfer started on : $timestart_str\n"; print "Transfer ended on : $timeend_str\n"; - print "Transfer time : $timediff sec\n"; + printf( "Transfer time : %.1f sec\n", $timediff ) ; print "Messages transferred : $nb_msg_transferred "; print "(could be $nb_msg_skipped_dry_mode without dry mode)" if ($dry); print "\n"; @@ -3568,6 +3605,7 @@ sub get_options { "addheader!" => \$addheader, "exitwhenover=i" => \$exitwhenover, "checkselectable!" => \$checkselectable, + "checkmessageexists!" => \$checkmessageexists, ); $debug and print "get options: [$opt_ret]\n"; @@ -3757,7 +3795,7 @@ sub check_last_release { } sub imapsync_version { - my $rcs = '$Id: imapsync,v 1.500 2012/08/10 04:58:46 gilles Exp gilles $ '; + my $rcs = '$Id: imapsync,v 1.504 2012/08/28 13:10:26 gilles Exp gilles $ '; $rcs =~ m/,v (\d+\.\d+)/; my $VERSION = ($1) ? $1: "UNKNOWN"; return($VERSION); @@ -4594,6 +4632,7 @@ sub tests { tests_epoch( ) ; tests_add_header( ) ; tests_cache_dir_fix( ) ; + tests_filter_forbidden_characters( ) ; } } diff --git a/index.shtml b/index.shtml index 02b569f..f563a12 100644 --- a/index.shtml +++ b/index.shtml @@ -2,10 +2,10 @@ -Imapsync: an IMAP migration tool ( release <!--#exec cmd="cat VERSION"--> ) +Imapsync: an IMAP migration tool ( release <!--#exec cmd="cat ./VERSION"--> ) - + @@ -13,8 +13,8 @@ - - + + - - - - - - - - -
-imapsync logo - -

Welcome to the imapsync web site!

-
- - -

What is imapsync?

- -

imapsync software is a command line tool allowing incremental and -recursive imap transfers from one mailbox to another, both anywhere on the internet -or in your local network. -

- -

imapsync is useful for imap account migration or imap account backup. -

- -

imapsync is not adequate for maintaining two active imap accounts in synchronization -where the user plays independently on both sides. Use offlineimap -(written by John Goerzen) for this purpose. -

- - -

Who is the author?

- -

Gilles LAMIRAL
- Email: gilles.lamiral@laposte.net

- -

Good feedback is always welcome, bad feedback is often welcome.

- -

Where to talk about imapsync?

- -

A nice place to talk about imapsync is the public - imapsync mailing-list (see below section Mailing-List). -

- -

Latest release is imapsync - -

- -

Written on

- -

See ChangeLog to know what's new in details.

- -

New features since previous releases 1.383 and 1.398:

- - - - -

The next imapsync release should see:

- - - -

Buy imapsync source code

- -

-The Perl imapsync source code will run anywhere a Perl interpreter can run: any Unix, Linux, Windows, or Mac OS operating system. -

- -

Buy latest imapsync Perl source code for 30 EUR -

-

-30 EUR is about 40 USD, no problem to pay in USD with paypal: -

- - -
-

- -imapsync usage -
- - - - -

-
- -

You will receive a download link in few minutes (contact me if the delay is over a couple of hours).
-30 days money-back guarantee.

- -

Standalone imapsync.exe for win32

- -

Struggle free from source code and Perl installation by
-buying the latest win32 standalone imapsync.exe for 30 EUR

- -

-30 EUR is about 40 USD, no problem to pay in USD with paypal: -

- - -
-

- -imapsync usage -
- - - -

-
- -

You will receive a download link in few minutes (contact me if the delay is over a couple of hours).
-30 days money-back guarantee.

- - - -

Documentation

- -

Read the INSTALL file to know how to install imapsync on your system. -

- -

The README file has many tips to understand imapsync and succeed in your migration or backup. -

- -

The FAQ file presents Frequently Asked Questions (and not so frequently asked ones). -

- -

The TODO file list what may be coded or done in the future.
-See also the wanted section. -

- -

All the people I thank are in the CREDITS file. -

- -

What you can do with imapsync is listed in COPYING. -

- -

The imapsync mailing list

- -

- The public mailing-list may be the best way to get free support.
- You can write to the mailing-list even if you're not subscribed to it.
- In that case you will receive a confirmation message each time you post (to avoid spam). -

-

- To write on the mailing-list, the address is: - imapsync@linux-france.org
-

- -

- To subscribe, send a message to: - imapsync-subscribe@listes.linux-france.org
-

- -

- To unsubscribe, send a message to: - imapsync-unsubscribe@listes.linux-france.org
-

- -

- To contact the person in charge for the list: - imapsync-request@listes.linux-france.org
-

- -

- The list archives are available at - - http://linux-france.org/prj/imapsync_list/
- So consider that the list is public, anyone can see your post.
- Use a pseudonym or do not post to - this list if you want to stay private.
-

- -
-

Search in the imapsync list archives: - - - (change the keywords with your own request and press Enter) -

-
- -

-Thank you for your participation to the imapsync mailing-list! -

- - -

WANTED!

- -

I code new features and fix bugs for free when I have time and when I find it useful.
-If you really want a feature or a fix you can donate money and my next development time -will be to code it or fix it.
-

- -

On february 2011: 1 EUR ~ 1.3 USD.

- - -
-

- - - - -

-
- - -

Some features and their time/money to be done evaluation:

- - - - - - - - - - - - - - - -
DONEFeature Time guessedTime spentMoney receivedMoney needed
NoBackup to files 20 hours 60 min 0 $ 800 $
NoEfficient Gmail backup 20 hours 80 min 0 $ 800 $
YesAdd cache 10 hours 1310 min 400 $ 400 $
YesSpeedup 50% 10 hours 80 min 10 $ 400 $
Yes--delete2folders 3 hours 270 min 90 $ 0 $
YesNTLM auth 3 hours 300 min 15 $ 150 $
YesWin32 imapsync.exe 8 hours 520 min 45 $ 240 $
YesWin32 bug fixes various 370 min 100 $ 85 $
YesFix capability changes 1 hour 80 min 0 $ 40 $
YesLarge mailbox --maxage 4 hours 270 min 0 $ 160 $
Yesdkimap support 3 hours 120 min 0 $ 120 $
Nogratis from here 4 hours 0 min 0 $ 60000 $
- -

Lists of imap server software failures and success stories

- -

Let's start with reported failure stories over the past -(maybe new imapsync release can run successfully with them). -

- - - -

Now the long reported success stories list -([host1] means "source server", -[host2] means "destination server"): -

- - - -
-

- - Valid XHTML 1.0 Strict - - - - CSS Valide ! - - - - - -

- -
-

- - -This document last modified on -($Id: index.shtml,v 1.57 2011/02/22 00:53:54 gilles Exp $) -

- - -