
RCS file: RCS/imapsync,v
Working file: imapsync
head: 2.264
branch:
locks: strict
	gilles: 2.264
access list:
symbolic names:
keyword substitution: kv
total revisions: 1164;	selected revisions: 1164
description:
----------------------------
revision 2.264	locked by: gilles;
date: 2023/10/17 11:09:25;  author: gilles;  state: Exp;  lines: +12 -14
README part. --password1 and --user1 no more needed.
----------------------------
revision 2.263
date: 2023/10/15 20:13:55;  author: gilles;  state: Exp;  lines: +11 -11
Bugfix. tests_login_imap_oauth number of tests.
----------------------------
revision 2.262
date: 2023/10/14 10:17:53;  author: gilles;  state: Exp;  lines: +205 -146
Bugfix.  Moved Readonly $SSL_VERIFY_POLICY => IO::Socket::SSL::SSL_VERIFY_NONE above to make all ssl unit test pass.
Bugfix. Change oauth2/ directory path to oauth2/oauth2_gmail/ in unit tests.
Tests. Added tests to show the bug --oauthdirect without --user or without --password not reconnecting well.
Bugfix. --oauthdirect is ok to reconnect without --user nor --password
Bugfix. --oauthaccesstoken is is ok to reconnect without --password
Cosmetic changes.
2082 unit tests.
----------------------------
revision 2.261
date: 2023/09/27 11:26:09;  author: gilles;  state: Exp;  lines: +10 -10
Bugfix. typo on eleasecheck.
----------------------------
revision 2.260
date: 2023/09/19 23:49:37;  author: gilles;  state: Exp;  lines: +8 -8
Fakefix. Use Encode::find_encoding instead of find_encoding. Look at PAR::Packer -x needed even with -M Encode. Strange.
----------------------------
revision 2.259
date: 2023/09/18 19:57:26;  author: gilles;  state: Exp;  lines: +76 -15
temporary directory is --tmpdir or $HOME/tmp or current directory, in order if defined.
----------------------------
revision 2.258
date: 2023/09/11 12:27:09;  author: gilles;  state: Exp;  lines: +104 -127
Reviewed with Grammarly
----------------------------
revision 2.257
date: 2023/08/29 23:51:58;  author: gilles;  state: Exp;  lines: +16 -14
Bugfix. Docker context ignored --tmpdir https://github.com/imapsync/imapsync/issues/413
----------------------------
revision 2.256
date: 2023/08/29 23:03:06;  author: gilles;  state: Exp;  lines: +41 -23
Bugfix. Updated the README part to disambiguate the --ssl and --tls options.
        Both are SSL/TLS. --ssl is imaps. --tls is STARTTLS behavior.
----------------------------
revision 2.255
date: 2023/08/21 10:40:56;  author: gilles;  state: Exp;  lines: +48 -46
Bugfix. tests_pipemess() failed under Docker context. Not sure this fix the issue.
----------------------------
revision 2.254
date: 2023/08/20 21:41:09;  author: gilles;  state: Exp;  lines: +40 -44
Replaced most "-e '/Dockerfile'" with skip_docker( )
----------------------------
revision 2.253
date: 2023/08/18 20:29:32;  author: gilles;  state: Exp;  lines: +15 -15
Docker context detection is now /Dockerfile instead of /.dockerenv
----------------------------
revision 2.252
date: 2023/08/17 14:54:12;  author: gilles;  state: Exp;  lines: +31 -21
Bugfix. Made tests pass. tests_login_imap_starttls tests_compress_starttls on ks5 and docker context
----------------------------
revision 2.251
date: 2023/08/16 21:30:17;  author: gilles;  state: Exp;  lines: +243 -104
Bugfix. --password1 and --password2 are no longer required when --oauthaccesstoken1 and --oauthaccesstoken2 are used, respectively.
Bugfix. --user1 and --user2 are no longer required when --oauthdirect1 and --oauthdirect2 are used, respectively.
Enhancement. It is now possible to check login with one side. Example: imapsync --host1 test1.lamiral.info --user1 test1 --password1 secret1
----------------------------
revision 2.250
date: 2023/07/19 08:52:22;  author: gilles;  state: Exp;  lines: +99 -63
Security. Changed the default tmpdir to $HOME/tmp (instead of /tmp on Linux) CVE-2023-34204
  See https://nvd.nist.gov/vuln/detail/CVE-2023-34204
  See https://github.com/imapsync/imapsync/issues/399
  I did not changed the default in the CGI context because /var/tmp/imapsync_hash is written only if it doesn't exist
  and /var/tmp/imapsync_cgi/ is created under the supervision of an admin.
  and I am lazy to change all my hosts.

Refactoring. Changed sub random_string()
Added sub oauth2_code_verifier
Added sub oauth2_code_challenge
Began oauth2 integration.
----------------------------
revision 2.249
date: 2023/06/01 11:55:14;  author: gilles;  state: Exp;  lines: +98 -87
Made --tests pass under Windows
Cosmetics
----------------------------
revision 2.248
date: 2023/05/31 23:11:52;  author: gilles;  state: Exp;  lines: +9 -9
no more $IO::Socket::SSL::DEBUG = 4
----------------------------
revision 2.247
date: 2023/05/31 22:54:01;  author: gilles;  state: Exp;  lines: +79 -81
Made --tests pass on macosx
----------------------------
revision 2.246
date: 2023/05/31 21:36:11;  author: gilles;  state: Exp;  lines: +267 -113
made --tests pass under Docker context.
----------------------------
revision 2.245
date: 2023/05/30 17:53:34;  author: gilles;  state: Exp;  lines: +70 -70
Made --tests pass after ks6ipv6.lamiral.info is down
----------------------------
revision 2.244
date: 2023/04/27 11:14:39;  author: gilles;  state: Exp;  lines: +8 -8
commented "use IO::Socket::INET6 ;"
----------------------------
revision 2.243
date: 2023/04/25 08:05:58;  author: gilles;  state: Exp;  lines: +60 -14
CGI context. Now the logfile can only be a-zA-Z0-9_-
----------------------------
revision 2.242
date: 2023/04/16 17:04:48;  author: gilles;  state: Exp;  lines: +10 -10
Bugfix. Changed diskspace test with mkdir instead of touch
----------------------------
revision 2.241
date: 2023/04/16 14:55:49;  author: gilles;  state: Exp;  lines: +8 -8
2020 unit tests.
----------------------------
revision 2.240
date: 2023/04/16 14:52:58;  author: gilles;  state: Exp;  lines: +94 -13
Bugfix. CGI context. Exit with a "503 Service Unavailable" when no disk space is available.
----------------------------
revision 2.239
date: 2023/04/13 08:45:56;  author: gilles;  state: Exp;  lines: +8 -8
CGI context. Max load from 1.5 to 1
----------------------------
revision 2.238
date: 2023/04/06 14:00:33;  author: gilles;  state: Exp;  lines: +11 -11
tests_cpu_number: on petite (Linux) => 2
----------------------------
revision 2.237
date: 2023/04/06 12:34:33;  author: gilles;  state: Exp;  lines: +10 -10
Back to 4 memory imapsync memory footprints left to the host as a quit criterium, 1 GB.
----------------------------
revision 2.236
date: 2023/04/05 08:18:01;  author: gilles;  state: Exp;  lines: +9 -9
CGI context. Max load from 2 to 1.5
----------------------------
revision 2.235
date: 2023/03/30 09:03:44;  author: gilles;  state: Exp;  lines: +12 -12
Bugfix. Made --tests pass.
----------------------------
revision 2.234
date: 2023/03/30 08:34:06;  author: gilles;  state: Exp;  lines: +11 -11
CGI context. Load 2 per cpu instead of load 1 max per cpu.
CGI context. Memory threshold leaves 500 MB to the host instead of 1 GB.
----------------------------
revision 2.233
date: 2023/03/01 16:20:38;  author: gilles;  state: Exp;  lines: +9 -8
No ipv6 available on macstadium lent Mac mini G3D
----------------------------
revision 2.232
date: 2023/03/01 12:09:58;  author: gilles;  state: Exp;  lines: +11 -8
Comment about CGI memory threshold "leaves 4 memory imapsync memory footprints to the host, ie 1 GB free for anything else."
----------------------------
revision 2.231
date: 2023/01/24 22:23:42;  author: gilles;  state: Exp;  lines: +12 -12
moved load_modules()
----------------------------
revision 2.230
date: 2023/01/24 14:36:04;  author: gilles;  state: Exp;  lines: +190 -119
Bugfix. Reread oauth2 files upon disconnections
----------------------------
revision 2.229
date: 2022/09/14 18:08:24;  author: gilles;  state: Exp;  lines: +16 -16
Make pass "make linuxtests win32tests win64tests mactests"
----------------------------
revision 2.228
date: 2022/09/13 12:14:02;  author: gilles;  state: Exp;  lines: +10 -9
Doc. --oauthaccesstoken1 needs --password1 presence. This is a bug.
----------------------------
revision 2.227
date: 2022/07/28 15:59:38;  author: gilles;  state: Exp;  lines: +347 -112
Bugfix. Fixed memory measurement on MacOS and Win32 Win64
----------------------------
revision 2.226
date: 2022/07/15 12:02:47;  author: gilles;  state: Exp;  lines: +30 -26
1966 unit tests
----------------------------
revision 2.225
date: 2022/07/14 16:56:11;  author: gilles;  state: Exp;  lines: +14 -11
*** empty log message ***
----------------------------
revision 2.224
date: 2022/07/13 17:33:42;  author: gilles;  state: Exp;  lines: +8 -8
typo connexions connections
----------------------------
revision 2.223
date: 2022/07/03 10:39:30;  author: gilles;  state: Exp;  lines: +48 -11
Default is now like --noemailreport1 --noemailreport2, no final email report. Popular demand.
Added a stat value: memory footprint times time spent during the sync. Unity MiB * hour. Line "Memory consumption at the end".
----------------------------
revision 2.222
date: 2022/06/29 12:13:58;  author: gilles;  state: Exp;  lines: +9 -10
Remove --memorystress from CGI options.
----------------------------
revision 2.221
date: 2022/06/28 23:12:01;  author: gilles;  state: Exp;  lines: +72 -63
CGI context. Refuse to serve when the cpu load is greater than 1 per cpu. A load of 3.9 with 4 cores is ok.
----------------------------
revision 2.220
date: 2022/06/28 19:01:18;  author: gilles;  state: Exp;  lines: +8 -8
CGI context. Refuse to server when memory left is less than 1 GB.
----------------------------
revision 2.219
date: 2022/06/25 21:33:30;  author: gilles;  state: Exp;  lines: +24 -19
heavy load by cpu limit from 6 to 3. Because 6 is too big on ks6
----------------------------
revision 2.218
date: 2022/06/25 06:38:24;  author: gilles;  state: Exp;  lines: +12 -9
Typo. memory_consumption_all_pids_percent with only 2 decimals.
----------------------------
revision 2.217
date: 2022/06/25 06:16:42;  author: gilles;  state: Exp;  lines: +148 -52
CGI context. Bring back to exit on heavy load by cpu. limit is a load of 6 per core, roughly the number of processes running constantly per core.
----------------------------
revision 2.216
date: 2022/06/22 18:49:55;  author: gilles;  state: Exp;  lines: +9 -9
typo seconde second
----------------------------
revision 2.215
date: 2022/06/22 01:44:01;  author: gilles;  state: Exp;  lines: +34 -21
Added --exitonload option. Only available in CGI context for now.
----------------------------
revision 2.214
date: 2022/06/08 21:28:34;  author: gilles;  state: Exp;  lines: +11 -11
load_percent_threshold is now room for two average imapsync processes.
----------------------------
revision 2.213
date: 2022/05/20 11:57:22;  author: gilles;  state: Exp;  lines: +48 -33
Filtering buggy flags is now case insensitive. \Junk or \JUNK or \jUnK etc.
Refactoring. Added sub tests_filterbuggyflags()
----------------------------
revision 2.212
date: 2022/05/19 11:18:09;  author: gilles;  state: Exp;  lines: +67 -16
Bugfix. Do not crash when Proc::ProcessTable field pctmem does not exist.
----------------------------
revision 2.211
date: 2022/05/19 08:37:14;  author: gilles;  state: Exp;  lines: +10 -10
Last commit 2.210 did not pass the unit tests. Fixed.
----------------------------
revision 2.210
date: 2022/05/19 08:09:57;  author: gilles;  state: Exp;  lines: +10 -10
Added filtering \JUNK flag in cgi context or with --filterbuggyflags
----------------------------
revision 2.209
date: 2022/05/15 11:03:02;  author: gilles;  state: Exp;  lines: +37 -9
Enhancement. heavy_load_percent_threshold now based on memory_footprint_average_bytes 300 MB
----------------------------
revision 2.208
date: 2022/05/13 20:14:25;  author: gilles;  state: Exp;  lines: +8 -8
90%
----------------------------
revision 2.207
date: 2022/05/12 16:31:10;  author: gilles;  state: Exp;  lines: +21 -21
memory limit to quit from 100% to 50%. Quick fix.
----------------------------
revision 2.206
date: 2022/05/12 11:07:07;  author: gilles;  state: Exp;  lines: +139 -54
Added dependency. Perl module Proc::ProcessTable. Not mandatory anyway. For now.
CGI context. Exit when 100% of RAM memory is used by processes. Exit with status value 69 and message "EX_UNAVAILABLE: service unavailable".
Added the % of RAM used by all processes in the memory infi line.
----------------------------
revision 2.205
date: 2022/05/09 21:29:07;  author: gilles;  state: Exp;  lines: +264 -247
perlcritic. Change all "= shift ;" to " = shift @ARG ;"
----------------------------
revision 2.204
date: 2022/05/03 22:28:53;  author: gilles;  state: Exp;  lines: +34 -9
Do not report final emails when --dry or --justfolders
----------------------------
revision 2.203
date: 2022/04/26 22:57:46;  author: gilles;  state: Exp;  lines: +42 -17
Bugfix. Allow quota like: QUOTA "user-defined quota (konsoleH)" (STORAGE 988 48829 MESSAGE 20 20)
Enhancement. Added --memorystress to check memory crunching in normal run.
----------------------------
revision 2.202
date: 2022/04/18 23:40:20;  author: gilles;  state: Exp;  lines: +89 -20
CGI context. Do not append the log file name to ../list_all_logs_auto.txt when there is no parameters.
----------------------------
revision 2.201
date: 2022/04/09 08:45:27;  author: gilles;  state: Exp;  lines: +12 -12
Moved all getppid to mygetppid (it adds a comment on Windows, where ppid is too complicated to get.
----------------------------
revision 2.200
date: 2022/04/04 16:05:55;  author: gilles;  state: Exp;  lines: +14 -10
typo. "check the certificate server" => "check the server certificate."
----------------------------
revision 2.199
date: 2022/04/01 19:45:33;  author: gilles;  state: Exp;  lines: +15 -14
Enhancement. Added the local ip address for the imap connexions. It can help configuring firewalls to allow the imap source IP.
----------------------------
revision 2.198
date: 2022/04/01 11:13:01;  author: gilles;  state: Exp;  lines: +10 -12
Added SERVER_NAME SERVER_ADDR SERVER_ADMIN variables and values to the output.
----------------------------
revision 2.197
date: 2022/03/30 10:43:22;  author: gilles;  state: Exp;  lines: +29 -28
Bugfix. --tests --testslive was listing 0 folders.
Added message "Use --noemailreport1 to avoid it" after putting the email final report in INBOX.
----------------------------
revision 2.196
date: 2022/03/25 20:35:59;  author: gilles;  state: Exp;  lines: +120 -67
Bugfix. Dates were not displayed under Windows because POSIX::strftime %e is not portable.
Bugfix. Several other places where dates were wrong on Windows.
----------------------------
revision 2.195
date: 2022/03/24 10:00:09;  author: gilles;  state: Exp;  lines: +26 -29
Added warning "parsing headers of folder ... It can take time for huge folders. Be patient."
----------------------------
revision 2.194
date: 2022/03/17 11:04:16;  author: gilles;  state: Exp;  lines: +16 -15
Bugfix. --var HTTP_COOKIE=proximapsync_runs=31 was not working because of the second =
----------------------------
revision 2.193
date: 2022/03/15 11:30:02;  author: gilles;  state: Exp;  lines: +101 -105
Refactor. Deglobalized $debuglist $debugflags 
Refactor. Added sync->{ permanentflags2 }
----------------------------
revision 2.192
date: 2022/03/11 18:26:06;  author: gilles;  state: Exp;  lines: +88 -46
Bugfix. Do not allow --skipcrossduplicates and --usecache. Exit EX_USAGE 64
----------------------------
revision 2.191
date: 2022/03/08 10:55:21;  author: gilles;  state: Exp;  lines: +131 -48
Added --var to pass values from proximapsync for variables REMOTE_ADDR REMOTE_HOST HTTP_REFERER HTTP_USER_AGENT SERVER_SOFTWARE SERVER_PORT HTTP_COOKIE
----------------------------
revision 2.190
date: 2022/03/01 21:48:11;  author: gilles;  state: Exp;  lines: +31 -8
Bugfix. Do not turn on --delete2duplicates when --syncduplicates is on, unless --delete2duplicates is given.
----------------------------
revision 2.189
date: 2022/02/28 18:10:10;  author: gilles;  state: Exp;  lines: +9 -11
Upped ERRORS_MAX_CGI from 20 to 500
----------------------------
revision 2.188
date: 2022/02/26 22:43:55;  author: gilles;  state: Exp;  lines: +182 -100
Refactor. Changed setlogfile() to be usable for different logs by proximapsync.
----------------------------
revision 2.187
date: 2022/02/23 12:01:25;  author: gilles;  state: Exp;  lines: +26 -7
Documented why total sizes can differ even when the sync is perfect.
----------------------------
revision 2.186
date: 2022/02/22 22:39:50;  author: gilles;  state: Exp;  lines: +27 -21
Bugfix. Redirect STDERR to STDOUT in all cases, --log or --nolog
----------------------------
revision 2.185
date: 2022/02/11 21:36:18;  author: gilles;  state: Exp;  lines: +19 -11
Added option --emailreport1 and --emailreport2. On by default. Use --noemailreport1 and --noemailreport2 to avoid final emails reports in each INBOX.
----------------------------
revision 2.184
date: 2022/02/10 17:37:57;  author: gilles;  state: Exp;  lines: +91 -31
Added final report to source account also.
----------------------------
revision 2.183
date: 2022/02/06 13:14:33;  author: gilles;  state: Exp;  lines: +29 -29
Added folder name in the debug output of header identificators
----------------------------
revision 2.182
date: 2022/02/01 20:49:51;  author: gilles;  state: Exp;  lines: +10 -10
Bugfix. GMT is good but the tests had to be changed also...
----------------------------
revision 2.181
date: 2022/02/01 20:19:22;  author: gilles;  state: Exp;  lines: +23 -10
Bugfix. Use GMT in tests_email_report_message_id
Bugfix. Make the email report w3c validated. Crazy man!
----------------------------
revision 2.180
date: 2022/02/01 15:14:51;  author: gilles;  state: Exp;  lines: +373 -30
Enhancement. Append a final email report on account2 at the end of the synchronization. Will be optionnal soon.
----------------------------
revision 2.179
date: 2022/01/26 14:32:19;  author: gilles;  state: Exp;  lines: +134 -139
README reread, grammarly on it.
Added "Posta inviata" so \Sent with --automap
----------------------------
revision 2.178
date: 2022/01/12 21:28:37;  author: gilles;  state: Exp;  lines: +75 -13
Added tests_compress_ssl()
----------------------------
revision 2.177
date: 2021/12/23 20:38:44;  author: gilles;  state: Exp;  lines: +8 -8
Bugfix. 1849 -> 1848 unit tests
----------------------------
revision 2.176
date: 2021/12/23 20:19:04;  author: gilles;  state: Exp;  lines: +35 -23
Bugfix. memory consumption on Mac was not relevant. Use RSS instead of VSZ, on Mac only. Linux stays with VSZ.
----------------------------
revision 2.175
date: 2021/12/21 17:46:14;  author: gilles;  state: Exp;  lines: +23 -21
Bugix. Darwin, fixed loadavg tests, no more W/t/loadavg.out needed.
----------------------------
revision 2.174
date: 2021/12/14 15:51:58;  author: gilles;  state: Exp;  lines: +62 -17
Added advice for:
  ERR_APPEND_SIZE
  ERR_CONNECTION_FAILURE_HOST1 
  ERR_CONNECTION_FAILURE_HOST2 
  ERR_AUTHENTICATION_FAILURE_USER1
  ERR_AUTHENTICATION_FAILURE_USER2
----------------------------
revision 2.173
date: 2021/12/09 18:30:34;  author: gilles;  state: Exp;  lines: +61 -40
Bugfix. Made reconnect mechanism works with --oauthdirect1 --oauthdirect2 --oauthaccesstoken1 --oauthaccesstoken2
----------------------------
revision 2.172
date: 2021/12/07 18:19:42;  author: gilles;  state: Exp;  lines: +27 -17
Added some tests to tests_get_options_from_string() and tests_get_options_extra()
  I can not have the unknown options back with Getopt::Long::GetOptionsFromString(), just the unknown values, ie, caca but not --caca
----------------------------
revision 2.171
date: 2021/12/07 17:50:12;  author: gilles;  state: Exp;  lines: +14 -8
Added --ssl1 --ssl2 --tls1 --tls2 --compress1 --compress2 to get_options_from_string()
----------------------------
revision 2.170
date: 2021/12/07 17:19:44;  author: gilles;  state: Exp;  lines: +12 -8
Added --keepalive1 --keepalive2 --reconnectretry1 --reconnectretry2 in get_options_from_string()
----------------------------
revision 2.169
date: 2021/12/07 17:13:44;  author: gilles;  state: Exp;  lines: +101 -36
Added --keepalive1 and --keepalive2 options. On by default.
  See https://metacpan.org/pod/Mail::IMAPClient#Keepalive
  Use --nokeepalive1 and --nokeepalive2 to disable Keepalive.
----------------------------
revision 2.168
date: 2021/12/05 23:27:27;  author: gilles;  state: Exp;  lines: +29 -11
Added --debugflags --errorsmax --folder --timeout in options from file
----------------------------
revision 2.167
date: 2021/12/02 16:59:51;  author: gilles;  state: Exp;  lines: +9 -9
Moved the call to extra options after the chdir of the CGI context.
----------------------------
revision 2.166
date: 2021/12/02 15:23:37;  author: gilles;  state: Exp;  lines: +107 -9
Now read extra options on the first line of the file ./options_extra.txt if it is present and readable.
----------------------------
revision 2.165
date: 2021/11/30 20:27:38;  author: gilles;  state: Exp;  lines: +30 -11
cpu_time rounded with 2 decimals.
Added 4 tests when no compression is on.
----------------------------
revision 2.164
date: 2021/11/24 21:26:46;  author: gilles;  state: Exp;  lines: +12 -11
Compression no more on by default. Just to see.
----------------------------
revision 2.163
date: 2021/11/20 20:11:46;  author: gilles;  state: Exp;  lines: +8 -7
Bugfix. imapsync --version was buggy in docker context.
----------------------------
revision 2.162
date: 2021/11/20 10:16:33;  author: gilles;  state: Exp;  lines: +14 -12
Docker. Current working directory changed from /var/tmp to /var/tmp/uid_$EFFECTIVE_USER_ID
----------------------------
revision 2.161
date: 2021/11/19 18:17:48;  author: gilles;  state: Exp;  lines: +8 -8
Bugfix. inline doc mentioned always --nocompress1
----------------------------
revision 2.160
date: 2021/11/19 14:40:58;  author: gilles;  state: Exp;  lines: +10 -7
Added inline documentation about --nocompress1 and --nocompress2
----------------------------
revision 2.159
date: 2021/11/19 14:29:31;  author: gilles;  state: Exp;  lines: +113 -12
Dependency. Added use Compress::Zlib
Enhancement. Added compression in imap. On by default no matter the capability announced. Use --nocompress1 and --nocompress2 to turn it off.
----------------------------
revision 2.158
date: 2021/11/13 20:01:35;  author: gilles;  state: Exp;  lines: +13 -7
Added README help for --truncmess
----------------------------
revision 2.157
date: 2021/10/23 21:51:43;  author: gilles;  state: Exp;  lines: +61 -16
Refactor. Deglobalized $debugcontent. Added debugcontent() function.
1800 unit tests.
----------------------------
revision 2.156
date: 2021/10/12 13:36:36;  author: gilles;  state: Exp;  lines: +72 -71
Added comment for ERR_FLAGS "Many STORE errors with FLAGS. Retry with the option --noresyncflags"
Refactored errors_incr() and errors_listing()
Bugfix. errors_incr() existed with CATCH_ALL
----------------------------
revision 2.155
date: 2021/10/01 07:46:55;  author: gilles;  state: Exp;  lines: +9 -8
Like --useheader X-Gmail-Received --useheader Message-Id when --gmail1 --gmail2
----------------------------
revision 2.154
date: 2021/09/29 20:38:04;  author: gilles;  state: Exp;  lines: +8 -8
Bugfix. Added 'E&AwE-le&AwE-ments envoye&AwE-s' in possible_special
----------------------------
revision 2.153
date: 2021/09/29 13:56:15;  author: gilles;  state: Exp;  lines: +34 -12
Does not checknoabletosearch if --justfolders
When creating folder check if selectable and consider ok if selectable
----------------------------
revision 2.152
date: 2021/09/29 12:03:12;  author: gilles;  state: Exp;  lines: +362 -58
Added inline advice on error ERR_OVERQUOTA
Added inline advice on error ERR_TRANSFER_EXCEEDED
Renamed function bytes_display_string() bytes_display_string_bin() 
  bytes_display_string_bin converts bytes to human KiB MiB GiB TiB PiB
Added function bytes_display_string_dec() to convert bytes to human decimal KB MB GB TB PB (1000 base)
----------------------------
revision 2.151
date: 2021/09/08 10:34:25;  author: gilles;  state: Exp;  lines: +23 -18
Bugfix. load average on macosx was sometimes buggy. locale float 3,14 instead of 3.14
----------------------------
revision 2.150
date: 2021/08/08 12:10:51;  author: gilles;  state: Exp;  lines: +9 -10
Refactor. Deglobalized warn_release variable
----------------------------
revision 2.149
date: 2021/07/31 11:24:24;  author: gilles;  state: Exp;  lines: +7 -26
Removed --fast option.
----------------------------
revision 2.148
date: 2021/07/22 14:21:09;  author: gilles;  state: Exp;  lines: +10 -10
Bugfix. abort didn't do charset=UTF-8; same for heavy load 503 Service Unavailable
----------------------------
revision 2.147
date: 2021/07/22 13:13:50;  author: gilles;  state: Exp;  lines: +12 -12
Bugfix. The maximum number a pid can be is 2^22, not 2^32.
----------------------------
revision 2.146
date: 2021/07/22 12:48:21;  author: gilles;  state: Exp;  lines: +8 -8
1742 unit tests.
----------------------------
revision 2.145
date: 2021/07/22 12:45:31;  author: gilles;  state: Exp;  lines: +16 -13
Bugfix. Up the maximum number a pid can be. From 99999 to 2^32. See https://unix.stackexchange.com/questions/16883/what-is-the-maximum-value-of-the-process-id
----------------------------
revision 2.144
date: 2021/07/17 18:07:59;  author: gilles;  state: Exp;  lines: +13 -10
Just an experimental loaddelay forced to 0.
----------------------------
revision 2.143
date: 2021/07/12 19:45:44;  author: gilles;  state: Exp;  lines: +111 -15
Bugfix. Under docker context --version was buggy, too verbose.
----------------------------
revision 2.142
date: 2021/07/12 14:04:01;  author: gilles;  state: Exp;  lines: +17 -19
Removed that hard limit --maxsize 35_651_584 set by --gmail2 since CAPABILITY is used and good.
----------------------------
revision 2.141
date: 2021/07/06 02:59:19;  author: gilles;  state: Exp;  lines: +8 -8
cpu_time param
----------------------------
revision 2.140
date: 2021/07/05 20:14:18;  author: gilles;  state: Exp;  lines: +14 -10
Fixed perlcrit 4 severity 4 violations.
----------------------------
revision 2.139
date: 2021/07/04 21:03:28;  author: gilles;  state: Exp;  lines: +14 -14
Adapted to oauth2/generate_gmail_token
----------------------------
revision 2.138
date: 2021/07/01 08:40:50;  author: gilles;  state: Exp;  lines: +13 -10
Moved oauthgenerateaccess() call.
----------------------------
revision 2.137
date: 2021/07/01 08:13:52;  author: gilles;  state: Exp;  lines: +32 -10
Bugfix. imapsync did nothing with the previous change.
----------------------------
revision 2.136
date: 2021/06/30 23:16:13;  author: gilles;  state: Exp;  lines: +295 -176
Review the README part.
Added option --filterbuggyflags to filter the well known buggy flags that generate errors "BAD Invalid system flag" or "NO APPEND Invalid flag list".
1734 unit tests.
Some refactoring.
----------------------------
revision 2.135
date: 2021/06/29 20:38:40;  author: gilles;  state: Exp;  lines: +58 -46
Reviewed README section until flags options.
----------------------------
revision 2.134
date: 2021/06/29 12:14:49;  author: gilles;  state: Exp;  lines: +40 -14
Avoid unit tests on polarhome macosx where "ssl3_get_server_certificate:certificate verify failed". No clue to fix that.
----------------------------
revision 2.133
date: 2021/06/28 08:07:25;  author: gilles;  state: Exp;  lines: +13 -12
Fixed some unit tests for polarhome macosx
----------------------------
revision 2.132
date: 2021/06/26 23:19:40;  author: gilles;  state: Exp;  lines: +40 -17
Added tests to test cpu_number() on Windows MacOS
----------------------------
revision 2.131
date: 2021/06/25 16:20:38;  author: gilles;  state: Exp;  lines: +57 -13
Bugfix. cpu_number was accurate only on Linux. Added Freebsd
----------------------------
revision 2.130
date: 2021/06/25 11:11:03;  author: gilles;  state: Exp;  lines: +108 -36
Added percentage of all cpu in stats
----------------------------
revision 2.129
date: 2021/06/24 16:59:49;  author: gilles;  state: Exp;  lines: +8 -8
Removed a debug print
----------------------------
revision 2.128
date: 2021/06/24 16:54:00;  author: gilles;  state: Exp;  lines: +8 -8
1702 tests
----------------------------
revision 2.127
date: 2021/06/24 15:42:11;  author: gilles;  state: Exp;  lines: +46 -16
Added statistic line "CPU time and %cpu"
----------------------------
revision 2.126
date: 2021/06/24 09:37:47;  author: gilles;  state: Exp;  lines: +87 -33
Added --loglogfile option. Append ../list_all_logs_auto.txt with the logfile name. On by default in CGI context.
Some refactoring, file_to_array file_to_string functions.
----------------------------
revision 2.125
date: 2021/06/20 16:50:46;  author: gilles;  state: Exp;  lines: +66 -25
Do not check selectable folders for huge accounts with more than 152 folders. 98percentile of /X
----------------------------
revision 2.124
date: 2021/06/17 12:29:22;  author: gilles;  state: Exp;  lines: +8 -8
Testfix. Sometimes GMT is output UTC.
----------------------------
revision 2.123
date: 2021/06/17 11:56:20;  author: gilles;  state: Exp;  lines: +30 -27
CGI context. Sync duplicates by default in cgi context.
----------------------------
revision 2.122
date: 2021/06/16 19:36:21;  author: gilles;  state: Exp;  lines: +15 -17
Stats. Final line "Biggest message" was in fact "Biggest message" to be transferred. Now it is "Biggest message transferred".
----------------------------
revision 2.121
date: 2021/06/15 22:43:18;  author: gilles;  state: Exp;  lines: +150 -89
Refactor. Splited sub myGetOptions() into sub setvalfromcgikey sub setvalfromlist sub setvalfromhash sub setvalfromcheckbox. Not very clean but better than the huge old one.
----------------------------
revision 2.120
date: 2021/06/15 22:32:28;  author: gilles;  state: Exp;  lines: +54 -38
Change time presentation on ETA and in final stats. Example: Wednesday 16 June 2021-06-16 00:32:05 +0200 CEST
Added the timezone and full day
----------------------------
revision 2.119
date: 2021/06/06 10:21:34;  author: gilles;  state: Exp;  lines: +162 -109
Added localtimez function to replace localtime, date and time with the timezone added. Not replaced yet.
Remove a useless warning "File xxx.pid does not exist" in tail function.
Made oauth2 tests dependent on oauth2_string_for_oauthdirect.txt oauth2_access_token.txt presence.
Added info "Exiting because of --justbanner" with --justbanner
----------------------------
revision 2.118
date: 2021/05/31 22:18:16;  author: gilles;  state: Exp;  lines: +16 -11
In CGI context, the log directory is no longer ./LOG_imapsync/ but simply ./ It should fasten the searches and grep
----------------------------
revision 2.117
date: 2021/05/27 18:04:12;  author: gilles;  state: Exp;  lines: +20 -16
Load limit 3x => 6x
----------------------------
revision 2.116
date: 2021/05/21 16:41:12;  author: gilles;  state: Exp;  lines: +39 -53
load limit upped to 3
----------------------------
revision 2.115
date: 2021/05/05 23:41:12;  author: gilles;  state: Exp;  lines: +11 -8
Advantage of a file when using --oauthaccesstoken1 str
----------------------------
revision 2.114
date: 2021/05/05 19:03:24;  author: gilles;  state: Exp;  lines: +48 -21
Documented --oauthaccesstoken1 and --oauthdirect1 and the 2 sisters.
----------------------------
revision 2.113
date: 2021/05/03 20:47:18;  author: gilles;  state: Exp;  lines: +118 -35
Implemented --oauthaccesstoken1 and --oauthaccesstoken2
1691 unit tests
----------------------------
revision 2.112
date: 2021/04/30 17:55:05;  author: gilles;  state: Exp;  lines: +257 -248
Added --noabletosearch README
Removed trailing blanks, perlcrit "Found "\N{SPACE}" at the end of the line"
----------------------------
revision 2.111
date: 2021/04/30 07:40:41;  author: gilles;  state: Exp;  lines: +615 -408
Added options --oauthdirect1 and --oauthdirect2 
  to support OAUTH2 authentication.
  The parameter value is the direct string given to the XOAUTH2 imap command.
Added option  --syncduplicates to sync duplicates.

Added option --trylogin on by default. 
  After a login failure of any king, imapsync tries to login 
  with the LOGIN command. Use --notrylogin to avoid that.
 
Reduced sub login_imap() number of parameters from 19 to 10.

Added options --oauthaccesstoken1 and --oauthaccesstoken2, not implemented yet.

Removed old OAUTH1 support. I hope no one will be touched by this removal, if
  yes, I'll bring it back.
----------------------------
revision 2.110
date: 2021/03/28 17:34:29;  author: gilles;  state: Exp;  lines: +25 -16
--timeout can now be a float (was only integer). Same for --timeout1 --timeout2
Warning about a timeout by the webserver in CGI mode.
$timeout no longer a variable (global).
----------------------------
revision 2.109
date: 2021/03/13 19:39:37;  author: gilles;  state: Exp;  lines: +59 -25
Added message ""No log file because of option --nolog".
Added possibility of no logging in cgi context, with log=0 or log= in the parameters
Added possibility of float number for --simulong instead of integer.
1672 unit tests.
----------------------------
revision 2.108
date: 2021/02/25 10:35:33;  author: gilles;  state: Exp;  lines: +27 -23
Bugfix. In sub delete_messages_on_any, the uidexpunge_or_expunge call was
 always done with an empty array so no expunge was done there. 
 Fortunately, expunge was done elsewhere so this bug was not disastrous.
 There is functionnal tests to check expunge behaviour anyway.
----------------------------
revision 2.107
date: 2021/02/09 20:02:55;  author: gilles;  state: Exp;  lines: +9 -9
Back from Message-Id to Message-Id Received in cgisetcontext
----------------------------
revision 2.106
date: 2021/02/09 19:59:13;  author: gilles;  state: Exp;  lines: +222 -16
Added some tests in sub tests_regexmess to remove a buggy header on multi-lines not all starting with a blank.  's{X-Spam-Report:.*?\n(^[^\n]+:|^\r?\n)}{$1}xms'
----------------------------
revision 2.105
date: 2021/02/02 11:17:15;  author: gilles;  state: Exp;  lines: +30 -14
Added tests "Add a final \r\n if missing"  in sub tests_regexmess
----------------------------
revision 2.104
date: 2021/01/27 15:14:09;  author: gilles;  state: Exp;  lines: +76 -70
Added test to "Change 8bit characters in whole email to X characters" in sub tests_regexmess
----------------------------
revision 2.103
date: 2021/01/20 16:28:06;  author: gilles;  state: Exp;  lines: +46 -20
Removed the exit_clean call when "Can not go to tls encryption on" in sub login_imap()
1652 tests
----------------------------
revision 2.102
date: 2020/12/13 23:48:30;  author: gilles;  state: Exp;  lines: +43 -20
Bugfix. EXIT_ERR_APPEND_VIRUS had no message upon exit.
Bugfix. In --dry mode the final "Messages transferred : 0 (could be 1264 without dry mode)" is ok when the folders does not exist yet.
----------------------------
revision 2.101
date: 2020/12/08 23:47:13;  author: gilles;  state: Exp;  lines: +171 -40
Added EXIT_CONNECTION_FAILURE_HOST1 101 return code
Added EXIT_CONNECTION_FAILURE_HOST2 102 return code
Added EXIT_AUTHENTICATION_FAILURE_USER1 161 return code
Added EXIT_AUTHENTICATION_FAILURE_USER2 162 return code
Do both side login and authentication before exiting on falure.
----------------------------
revision 2.100
date: 2020/12/07 00:45:50;  author: gilles;  state: Exp;  lines: +24 -9
New numbering from 1.999 directly to 2.100 I want to avoid 1.1000 and sorting issues in directory listing.
Added option --dry1 it avoids to fetch the message on host1. --dry1 is on when --dry is on. It speeds up --dry very much.
----------------------------
revision 1.999
date: 2020/12/02 20:41:50;  author: gilles;  state: Exp;  lines: +69 -34
Added a section "How do you know a sync is finished and well done?"
When creating a directory, now the current directory is also printed.
  It helps when the directory created is relative.
Bugfix. resolv: imapsync.lamiral.info => 2001:41d0:2:84e0::1 (was 91.121.221.224)
----------------------------
revision 1.998
date: 2020/08/17 10:18:25;  author: gilles;  state: Exp;  lines: +302 -108
1638 regression tests.
Added option --abortbyfile to be able to be aborted by a file presence (context: webserver on windows)
Reviewed and fixed sub acls_sync(). Did not work and made bad things.
Added exit value EXIT_BY_FILE => 7
Added exit value EXIT_TRANSFER_EXCEEDED      => 118
----------------------------
revision 1.997
date: 2020/07/16 10:58:14;  author: gilles;  state: Exp;  lines: +20 -17
Gmail update
gmail12: maxbytespersecond 20_000 maxbytesafter 1_000_000_000
gmail1 : maxbytespersecond 40_000 maxbytesafter 3_000_000_000 (was 2_500_000_000)
gmail2 : maxbytespersecond 20_000 maxbytesafter 1_000_000_000
----------------------------
revision 1.996
date: 2020/06/19 09:53:38;  author: gilles;  state: Exp;  lines: +69 -20
Added exit 118 EXIT_TRANSFER_EXCEEDED when "Maximum bytes transferred reached" with option --exitwhenover
Added error type ERR_TRANSFER_EXCEEDED.
----------------------------
revision 1.995
date: 2020/06/17 18:55:01;  author: gilles;  state: Exp;  lines: +9 -8
Added exitwhenover as an option in cgi context.
----------------------------
revision 1.994
date: 2020/06/14 12:10:30;  author: gilles;  state: Exp;  lines: +76 -22
Bugfix. Fixed some "Exiting with return value  ()". Added ERR_NOTHING_REPORTED error and exit EXIT_CATCH_ALL ie 1 in case.
----------------------------
revision 1.993
date: 2020/06/12 09:10:20;  author: gilles;  state: Exp;  lines: +10 -8
Docfix. Fixed issue https://github.com/imapsync/imapsync/issues/213
Precision about --delete2duplicates
----------------------------
revision 1.992
date: 2020/05/29 12:14:53;  author: gilles;  state: Exp;  lines: +156 -34
Bugfix. fatal string causing "Wide character in subroutine entry"
----------------------------
revision 1.991
date: 2020/05/12 20:37:48;  author: gilles;  state: Exp;  lines: +86 -25
Bugfix. --checknoabletosearch was not adaptive.
Fix. tests sslheck now use test1.lamiral.info instead of imapsync.lamiral.info 
Fix. tests_resolv now use ks6ipv6.lamiral.info instead of ks2ipv6.lamiral.info
Bugfix. Better closing of logfile at the end in order to avoid in Apache error log "AH01215: print() on closed filehandle $logfile_handle"
----------------------------
revision 1.990
date: 2020/05/03 17:07:36;  author: gilles;  state: Exp;  lines: +7 -7
Bugfix. Forgot to map ERR_Host1_FETCH to EXIT_ERR_FETCH,
----------------------------
revision 1.989
date: 2020/05/03 17:07:17;  author: gilles;  state: Exp;  lines: +8 -7
*** empty log message ***
----------------------------
revision 1.988
date: 2020/04/29 21:52:20;  author: gilles;  state: Exp;  lines: +37 -8
Sanitize host1 and host2 values. Remove blanks and / characters.
----------------------------
revision 1.987
date: 2020/04/29 02:34:00;  author: gilles;  state: Exp;  lines: +253 -18
Added an analyse and classification of the errors encountered.
Most common error encountered is printed at the end.
Exit value 112 is now replaced by the most common error encountered exit value
113 is EXIT_OVERQUOTA
114 is EXIT_ERR_APPEND
115 is EXIT_ERR_FETCH
116 is EXIT_ERR_CREATE
117 is EXIT_ERR_SELECT
111 is EXIT_WITH_ERRORS ERR_UNCLASSIFIED
----------------------------
revision 1.986
date: 2020/04/26 11:05:55;  author: gilles;  state: Exp;  lines: +37 -36
Changed filter_forbidden_characters() to replace non-ascii and control characters and spaces by character _
----------------------------
revision 1.985
date: 2020/04/25 14:50:30;  author: gilles;  state: Exp;  lines: +48 -23
Added unit tests to prepare "Wide character in subroutine entry".
----------------------------
revision 1.984
date: 2020/04/22 10:35:44;  author: gilles;  state: Exp;  lines: +30 -15
Bugfix. Empty subject https://github.com/imapsync/imapsync/pull/216 added unit test regression.
----------------------------
revision 1.983
date: 2020/03/19 02:08:12;  author: gilles;  state: Exp;  lines: +96 -13
Filter flags \PRIORITY \READRCPT in cgi context.
Now check if SEARCH ALL works on both accounts and then add --noabletosearch if one can not. Use --nochecknoabletosearch to avoid that behavior.
----------------------------
revision 1.982
date: 2020/03/16 15:17:02;  author: gilles;  state: Exp;  lines: +60 -29
Rewrote tests in tests_msgs_from_maxmin() (same ones anyway)
----------------------------
revision 1.981
date: 2020/02/14 12:10:13;  author: gilles;  state: Exp;  lines: +18 -8
Bugfix. CGI not fatal with imapsync --tests
----------------------------
revision 1.980
date: 2020/01/18 20:37:27;  author: gilles;  state: Exp;  lines: +9 -9
Updated @regexflag in cgi context.
----------------------------
revision 1.979
date: 2020/01/14 22:26:11;  author: gilles;  state: Exp;  lines: +47 -30
Added regex --regexflag from /X analyse in cgi context.
----------------------------
revision 1.978
date: 2020/01/08 21:56:12;  author: gilles;  state: Exp;  lines: +11 -11
Added single quote ' filtering in filter_forbidden_characters()
----------------------------
revision 1.977
date: 2019/12/23 20:18:02;  author: gilles;  state: Exp;  lines: +10 -10
No tests_resolv(  ) since resolv is not really used and tests_resolv(  ) fails on mac (I do not have write to /etc/hosts)
----------------------------
revision 1.976
date: 2019/12/19 15:37:33;  author: gilles;  state: Exp;  lines: +16 -12
Moved tests tests_probe_imapssl  tests_mailimapclient_connect tests_resolv at the end.
----------------------------
revision 1.975
date: 2019/12/19 10:44:23;  author: gilles;  state: Exp;  lines: +21 -13
Commented the tests_kill* tests
Added a resolv petiteipv6.lamiral.info before check it (frequent failure)
----------------------------
revision 1.974
date: 2019/12/16 13:01:18;  author: gilles;  state: Exp;  lines: +18 -9
Enhancement, internal. Use Debug_fh to set where go the --debugimap outputs.
----------------------------
revision 1.973
date: 2019/12/15 00:27:10;  author: gilles;  state: Exp;  lines: +8 -8
Bugfix. Upgraded ks2 Dovecot and now logout in ssl does not cause failure
----------------------------
revision 1.972
date: 2019/12/14 23:45:12;  author: gilles;  state: Exp;  lines: +9 -9
Added -utf8 when requiring CGI. Hope it will allow utf8 characters in passwords.
----------------------------
revision 1.971
date: 2019/12/14 23:41:41;  author: gilles;  state: Exp;  lines: +8 -8
Bugfix. CGI context. charset was  charset=ISO-8859-1 in header (CGI.pm default). Now "text/plain; charset=UTF-8"
----------------------------
revision 1.970
date: 2019/12/09 23:09:05;  author: gilles;  state: Exp;  lines: +297 -259
Reread README part.
Change tests. ks2ipv6.lamiral.info replaced by petiteipv6.lamiral.info
1510 unit tests
----------------------------
revision 1.969
date: 2019/11/29 13:00:32;  author: gilles;  state: Exp;  lines: +9 -9
1509 unit tests
----------------------------
revision 1.968
date: 2019/11/29 12:42:13;  author: gilles;  state: Exp;  lines: +29 -19
Bugfix. binmode UTF-8 for log and output.
----------------------------
revision 1.967
date: 2019/11/27 20:41:34;  author: gilles;  state: Exp;  lines: +9 -9
Bugfix. Bad tests count under docker
----------------------------
revision 1.966
date: 2019/11/27 20:23:08;  author: gilles;  state: Exp;  lines: +10 -9
Commented test probe_imapssl: ks2ipv6.lamiral.info
----------------------------
revision 1.965
date: 2019/11/27 20:16:32;  author: gilles;  state: Exp;  lines: +13 -11
Removed some tests that take time and sometimes fail (ipv6 related)
----------------------------
revision 1.964
date: 2019/11/27 15:50:39;  author: gilles;  state: Exp;  lines: +52 -27
CGI context. Adaptation to a local http server webserver. pidfile and cgidir.
Added Encode Encode::IMAPUTF7 and MIME::Base64 modules versions.
Removed doublon "use MIME::Base64".
Bugfix. Make --tests pass on docker context and under root.
----------------------------
revision 1.963
date: 2019/11/25 12:38:44;  author: gilles;  state: Exp;  lines: +52 -18
Skip tests under Win Win64 and Mac that fail. ipv6 related or fork ones.
----------------------------
revision 1.962
date: 2019/11/22 09:51:29;  author: gilles;  state: Exp;  lines: +19 -9
Added dependencies:
* MIME::Base64
* Encode
Added test for Encode::find_encoding that fails with the binaries not cmpiled with perl -x
----------------------------
revision 1.961
date: 2019/11/19 19:45:02;  author: gilles;  state: Exp;  lines: +117 -47
Added module dependency to Encode::IMAPUTF7
Bugfix. Folders names with + characters must stay as they are.
Bugfix. When using --subfolder2 SUB --delete2folders, do not delete the folder SUB.
----------------------------
revision 1.960
date: 2019/10/31 23:08:18;  author: gilles;  state: Exp;  lines: +54 -7
Added test to remove header bad.
----------------------------
revision 1.959
date: 2019/10/07 21:21:45;  author: gilles;  state: Exp;  lines: +318 -92
Added tests:
tests_kill_zero()
tests_killpid_by_parent()
tests_killpid_by_brother()
tests_abort()

cgidir is . when used by Net::Server::HTTP

Bugfix. Added SSL_cipher_list => 'DEFAULT:!DH' to tests with ssl
Bugfix. PIDs can be negative under Windows.
Bugfix. --resynclabels was not on with --gmail1 --gmail2
1502 unit tests under Unix
----------------------------
revision 1.958
date: 2019/09/11 21:16:40;  author: gilles;  state: Exp;  lines: +40 -37
cgi context is now set on with env variables SERVER_SOFTWARE and SERVER_PORT
it is because Net::Server::HTTP does not set SERVER_SOFTWARE but SERVER_PORT
It is a preparation to a homemade web server to serve on imapsync as a cgi and
get free from Apache or a complicated web server stuff configuration.
----------------------------
revision 1.957
date: 2019/08/29 17:40:13;  author: gilles;  state: Exp;  lines: +34 -25
Bugfix. Do not compute a folder size if the folder does not exist. Happened with --skipemptyfolders
----------------------------
revision 1.956
date: 2019/08/02 20:18:52;  author: gilles;  state: Exp;  lines: +118 -55
Bugfix. Reviewed all exit_clean to include a final CR on the error message.
Bugfix. New foldersize tried to select non existent folder that caused a premature exit
when host2 account is mostly empty.
Bugfix. --justconnect did not show the line "IP address:"
----------------------------
revision 1.955
date: 2019/07/31 20:30:27;  author: gilles;  state: Exp;  lines: +69 -36
Bugfix in docker context. killing myself in docker context doesn't seem to work well, as well as sending signals several times.
So just install catch_exit with INT (ctr-c on terminals) and exits if still alive after killing myself.
----------------------------
revision 1.954
date: 2019/07/29 18:04:07;  author: gilles;  state: Exp;  lines: +19 -14
Bufix. In docker context, print "context detected" only with --debug. imapsync --version printed the release on the third line instead of the first.
----------------------------
revision 1.953
date: 2019/07/29 05:12:18;  author: gilles;  state: Exp;  lines: +9 -9
Bugfix. tests_imapsync_context under Docker bugfix.
----------------------------
revision 1.952
date: 2019/07/29 04:52:52;  author: gilles;  state: Exp;  lines: +8 -8
1477 regression tests
----------------------------
revision 1.951
date: 2019/07/29 04:40:48;  author: gilles;  state: Exp;  lines: +66 -9
Added context in --releasecheck user_agent. CGI or Docker or Standard.
----------------------------
revision 1.950
date: 2019/07/28 02:24:17;  author: gilles;  state: Exp;  lines: +604 -189
Folders sizes are now presented per folder from host1 and host2 as well as the differrences between them.
----------------------------
revision 1.949
date: 2019/07/18 03:44:00;  author: gilles;  state: Exp;  lines: +59 -32
Refactor. timenext() deglobalized. 
Added tests_timenext().
----------------------------
revision 1.948
date: 2019/07/17 16:51:50;  author: gilles;  state: Exp;  lines: +153 -128
Refactor. Moved main instructions into sub single_sync(). Goal is to prepare multiple different syncs.
----------------------------
revision 1.947
date: 2019/07/15 01:10:05;  author: gilles;  state: Exp;  lines: +119 -45
Bugfix. Count all fatal errors.
----------------------------
revision 1.946
date: 2019/07/09 18:01:42;  author: gilles;  state: Exp;  lines: +136 -48
Usability. Added the number of errors and the max number of errors allowed at the final line "Exiting with return value xx"
Deglobalized $foldersizes to $sync->{ foldersizes }
Usability. Added ETA at the beginning of a folder process.
1467 regression tests
----------------------------
revision 1.945
date: 2019/06/26 19:30:56;  author: gilles;  state: Exp;  lines: +151 -94
Proofread the documentation part, what will go to README.
The pod at the beginning.
----------------------------
revision 1.944
date: 2019/06/25 16:44:08;  author: gilles;  state: Exp;  lines: +8 -8
Bugfix. Readonly syntax. "Readonly my %EXIT_TXT => ("
----------------------------
revision 1.943
date: 2019/06/25 08:34:51;  author: gilles;  state: Exp;  lines: +47 -30
Usability. Added the error message text after "Exiting with return value xx". Example: Exiting with return value 16 (EXIT_AUTHENTICATION_FAILURE)
Usability. Added what function is called when installing a signal. Example: "kill -QUIT 19839 # special behavior: call to sub catch_exit"
----------------------------
revision 1.942
date: 2019/06/24 20:43:43;  author: gilles;  state: Exp;  lines: +51 -37
Bugfix. USR1 signal for toggle_sleep call was never installed.
Usability. Now --justfolders will activate --foldersizesatend
Enhancement. Added PROCESS_ID when "Tail -f finished."
Bugfix. The number of messages deleted was not accurate at all.
Usability. masked the warning "no header by parse_headers so taking whole header with BODY.PEEK[HEADER]" to --debug mode.
Usability. Moved the warning "no header found so adding our own" to --debug mode.
Tests. Added ETA simulation with --simulong (for the progress info on /X)
Bugfix. Change the longest line in --exchange2 and --office from 10500 to 10239. (\n inserted for those long lines)
Enhancement. --maxage and --minage can take float as value in order to filter with less than a day. (Need --noabletosearch also).
----------------------------
revision 1.941
date: 2019/06/04 22:55:24;  author: gilles;  state: Exp;  lines: +54 -19
Usability. Now "imapsync --host1 ks" or "imapsync --host2" is ok and do like a --justconnect on servers. Useful to cjeck rapidely a imap server.
----------------------------
revision 1.940
date: 2019/06/04 06:29:31;  author: gilles;  state: Exp;  lines: +14 -9
Added 'junk', 'Junk E-Mail', 'Junk Email' as possible_special of \Junk
Added 'Deleted Messages' as possible_special of \Trash
----------------------------
revision 1.939
date: 2019/05/27 21:58:33;  author: gilles;  state: Exp;  lines: +10 -9
Back to a test  Mail::IMAPClient 3.40 failed but  Mail::IMAPClient 3.42 succeed.
----------------------------
revision 1.938
date: 2019/05/27 18:45:06;  author: gilles;  state: Exp;  lines: +111 -33
CGI context. --addheader is on by default.
Added option --appendlimit xxxx in order to override the value got by APPENDLIMIT in CAPABILITY.
Added option --truncmess to allow transfer of too big messages. When you think it's better to have a truncated message than no message at all.
1453 regression tests.
----------------------------
revision 1.937
date: 2019/05/01 22:14:00;  author: gilles;  state: Exp;  lines: +328 -326
CGI context. Only Message-Id to identify messages, instead of Message-Id Received.
Fixed perl critic about blanks.
Fixed tests comments
----------------------------
revision 1.936
date: 2019/04/29 05:26:19;  author: gilles;  state: Exp;  lines: +26 -23
Bugfix. Do not tail when abort.
Usability. --testslive values can be overwritten like --testslive --user1 empty
           Same thing for --testslive6
----------------------------
revision 1.935
date: 2019/04/28 02:10:24;  author: gilles;  state: Exp;  lines: +293 -44
Added File::Tail dependency.
Added --tail option. Will do like a tail -f on the logfile of another imapsync with the same pidfile. 
    Good in CGI context. Maybe...
    We'll see. It was one of my first whishes for cgi behaviour
1441 unit tests.
----------------------------
revision 1.934
date: 2019/04/26 08:23:24;  author: gilles;  state: Exp;  lines: +134 -52
Added following options available in cgi context:
--subfolder1
--subfolder2
--justfolders
--justfoldersizes
--delete1
--delete2

CGI context. Added the equivalent command line parameters like:
Command line used, run by /usr/bin/perl:
/usr/lib/cgi-bin/imapsync --host1 test1.lamiral.info 
Usability. Turns off --automap when --subfolder1 or --subfolder2 is used.
----------------------------
revision 1.933
date: 2019/04/23 11:42:42;  author: gilles;  state: Exp;  lines: +47 -98
CGI context. Added default like --maxsize 1_000_000_000 (Out of memory prevention?)
Usability. maxsize is the minimum of --maxsize and APPENDLIMIT=xxx or each one if the other no exists.
----------------------------
revision 1.932
date: 2019/04/13 22:09:04;  author: gilles;  state: Exp;  lines: +93 -24
Added --sanitize to remove egding blanks on host1 user1 password1 etc.
--sanitize on by default. Use --noanitize to avoid it
----------------------------
revision 1.931
date: 2019/04/13 16:10:24;  author: gilles;  state: Exp;  lines: +109 -22
Added test tests_check_binary_embed_all_dyn_libs to detect non embedded dynamic libraries in binaries Darwin and Win32
----------------------------
revision 1.930
date: 2019/04/11 22:32:38;  author: gilles;  state: Exp;  lines: +467 -211
All exits are now done with a specific return code related to the error causing the exit.
Removed sub die_clean()
die_clean() calls replaced by exit_clean() calls
----------------------------
revision 1.929
date: 2019/04/08 09:14:13;  author: gilles;  state: Exp;  lines: +425 -300
Bug fix. With --gmail1 or --gmail2 do not sync [Gmail]/All Mail if it is not requested.
Bug fix. When asked to terminate by a signal, kill myself by the signal instead of an exit call.
         Applied Martin Cracauer's advice on https://www.cons.org/cracauer/sigint.html 
         "Proper handling of SIGINT/SIGQUIT" 
         I hope it fixes the not always working double-ctrl-c to end the sync.
         See bug report https://github.com/imapsync/imapsync/issues/142
----------------------------
revision 1.928
date: 2019/03/28 11:12:44;  author: gilles;  state: Exp;  lines: +648 -317
Added --subfolder1 Foo/Bar option in order to restore a backup made with --subfolder2 Foo/Bar
  --folderrec Foo/Bar is imply by --subfolder1 Foo/Bar because it's the most common purpose.
Deglobalized $debug @regextrans2 $sep1 $sep2 $fixslash2 
Added --resynclabels to resync the Gmail labels X-GM-LABELS
Bugfix. --synclabels now create sublabels with --subfolder2
Bugfix. --subfolder2 Pf2/Sub2 and --subfolder2 Sub2 perform the same when Pf2 is the --prefix2
1336 non-regression tests
----------------------------
revision 1.927
date: 2019/03/22 14:45:55;  author: gilles;  state: Exp;  lines: +9 -8
Active --resynclabels when --gmail1 --gmail2
----------------------------
revision 1.926
date: 2019/03/22 14:06:38;  author: gilles;  state: Exp;  lines: +283 -88
Call abort() before simulong() to be able to abort a long simulong.
Bugfix. --synclabels --subfolder2 create sublabels only and not a mixture.
Enhancement. Added --resynclabels
1286 non-regression tests
----------------------------
revision 1.925
date: 2019/03/03 12:25:02;  author: gilles;  state: Exp;  lines: +8 -8
1268 tests
----------------------------
revision 1.924
date: 2019/03/03 12:22:37;  author: gilles;  state: Exp;  lines: +50 -27
Tolerate more load. Double the threshold. accept load at 2 per core instead of 1 per core
----------------------------
revision 1.923
date: 2019/03/03 12:00:05;  author: gilles;  state: Exp;  lines: +29 -20
Moved cgiload( $sync ) in order to log exites on heavy load
----------------------------
revision 1.922
date: 2019/02/26 13:03:58;  author: gilles;  state: Exp;  lines: +43 -35
Fixed tests to pass under the docker image
----------------------------
revision 1.921
date: 2019/02/18 10:21:03;  author: gilles;  state: Exp;  lines: +10 -8
Bugfix. Errors of APPEND were not counted as missing messages on host2!
----------------------------
revision 1.920
date: 2019/02/09 15:45:31;  author: gilles;  state: Exp;  lines: +37 -33
Better "Extra arguments found" error message, added "or some misspelling options"
----------------------------
revision 1.919
date: 2019/02/09 14:20:41;  author: gilles;  state: Exp;  lines: +74 -32
Added authmech X-MASTERAUTH. To be used for Kerio with --authmech1 X-MASTERAUTH or --authmech2 X-MASTERAUTH
Patch from https://github.com/imapsync/imapsync/pull/53/files
----------------------------
revision 1.918
date: 2019/02/07 12:16:28;  author: gilles;  state: Exp;  lines: +79 -44
Fixed test since macosx.polarhome.com can not do ipv6 these days.
Allow --tests --testslive for cover analyse
----------------------------
revision 1.917
date: 2019/02/06 12:13:44;  author: gilles;  state: Exp;  lines: +279 -110
Added --addheader description in the README part.
Bugfix --debugssl 0 was impossible and equivalent to --debugssl 1
Deglobalized $justfolders now $sync->{ justfolders }
Deglobalized %h2_folders_of_md5 it's now $sync->{ h2_folders_of_md5 }
Bugfix. Now split the deletion of messages in several chunks (--split)
Added stat "Messages found in host1 not in host2"
Added stat "Messages found in host2 not in host1"
Removed stat "Total bytes duplicate hostX"
Removed stat "Total bytes error"
Added stat "Load end is"
Added comments on final stat about messages in 1 not in 2
Added comments on final stat about messages in 2 not in 1
Added comment on final stat about unidentified messages
1264 unit tests.
----------------------------
revision 1.916
date: 2019/01/05 14:45:10;  author: gilles;  state: Exp;  lines: +550 -470
Added missing "Entering tests_..." and "Leaving  tests_..." in tests_* subroutines.
Some perlcritic fixes.
----------------------------
revision 1.915
date: 2019/01/04 12:39:56;  author: gilles;  state: Exp;  lines: +12 -15
Remove the unit test $imap->new() $imap->connect() because IO::Socket::IP kills us on this.
----------------------------
revision 1.914
date: 2019/01/03 04:38:10;  author: gilles;  state: Exp;  lines: +10 -10
unit test revised for match_a_pid_number()
----------------------------
revision 1.913
date: 2019/01/03 04:31:11;  author: gilles;  state: Exp;  lines: +9 -8
A pid can be up to 99999 on FreeBSD
----------------------------
revision 1.912
date: 2019/01/03 04:18:54;  author: gilles;  state: Exp;  lines: +14 -14
Added prints in sub remove_pidfile_not_running() in order to debug bad behavior on freeBSD
----------------------------
revision 1.911
date: 2019/01/03 02:52:43;  author: gilles;  state: Exp;  lines: +29 -11
Added --sigprint HUP in order to allow some asynchronous prints in CGI mode and avoid timeouts from browser
----------------------------
revision 1.910
date: 2018/12/25 18:20:48;  author: gilles;  state: Exp;  lines: +77 -38
Added --addheader suggestion at the final stats.
Added a counter of crossduplicates on host2, presented on final stats.
----------------------------
revision 1.909
date: 2018/12/09 21:23:54;  author: gilles;  state: Exp;  lines: +8 -8
Typo. loose lose
----------------------------
revision 1.908
date: 2018/11/20 13:22:07;  author: gilles;  state: Exp;  lines: +80 -39
Played with IO::Prompt and IO::Prompter to remove <STDIN> perl critic. Failed...
Deglobalized $passfile1 and $passfile2
----------------------------
revision 1.907
date: 2018/11/16 10:08:11;  author: gilles;  state: Exp;  lines: +142 -135
Localized %SIG
Fixed Host1 Host2 prints to be more homogene
----------------------------
revision 1.906
date: 2018/11/08 18:37:18;  author: gilles;  state: Exp;  lines: +120 -47
Added tests_operators_and_exclam_precedence()
Added tests_teelaunch()
Added tests_logfileprepa()
----------------------------
revision 1.905
date: 2018/10/22 17:28:02;  author: gilles;  state: Exp;  lines: +10 -9
Added IO::Socket::IP in the list of modules versions.
----------------------------
revision 1.904
date: 2018/10/19 11:57:24;  author: gilles;  state: Exp;  lines: +157 -59
1238 unit tests
Refactored appendlimit() to use Mail::IMAPClient::capability like the API. No hack from internal $imap->{ APPENDLIMIT }
With --office1 option, folder "Files" is excluded because it's a "special" folder. Like --exclude "^Files$". Unless --noexclude is used.
With --office2 option, folder "Files" on host1 is renamed like --f1f2 "Files=Files_renamed_by_imapsync". Unless --nof1f2 is used.
----------------------------
revision 1.903
date: 2018/10/06 09:16:57;  author: gilles;  state: Exp;  lines: +9 -9
--noskipcrossduplicates with --gmail12
----------------------------
revision 1.902
date: 2018/10/05 19:50:23;  author: gilles;  state: Exp;  lines: +12 -10
Added --folderlast '[Gmail]/All Mail' within --gmail12
----------------------------
revision 1.901
date: 2018/10/03 23:49:51;  author: gilles;  state: Exp;  lines: +815 -412
Removed --maxsize 25_000_000 from --gmail2 because now it's get from APPENDLIMIT in CAPABILITY (and it is currently 35651584, greater than 25_000_000)
Moved opening { in all sub to next line.
----------------------------
revision 1.900
date: 2018/10/03 23:17:11;  author: gilles;  state: Exp;  lines: +16 -16
Deglobalized $maxsize
----------------------------
revision 1.899
date: 2018/10/03 22:50:23;  author: gilles;  state: Exp;  lines: +332 -14
Added automatic --maxsize from CAPABILITY  APPENDLIMIT=xxxx (Gmail)
----------------------------
revision 1.898
date: 2018/09/28 14:12:21;  author: gilles;  state: Exp;  lines: +89 -29
Added --maxsize 35_651_584 with --gmail2 
(Should me replaced by automatic APPEND_LIMIT in CAPABILITY). Soon.
Added --exclude '^Files$' with --office2
----------------------------
revision 1.897
date: 2018/09/19 14:54:26;  author: gilles;  state: Exp;  lines: +96 -74
Deglobalized $delete1, $delete2, $delete2duplicates, $expunge2, $uidexpunge2
Started sub tests_uidexpunge_or_expunge() sub uidexpunge_or_expunge()
----------------------------
revision 1.896
date: 2018/09/19 11:51:17;  author: gilles;  state: Exp;  lines: +81 -60
Deletions on host1 are done by batch during a resync.
----------------------------
revision 1.895
date: 2018/09/13 17:38:53;  author: gilles;  state: Exp;  lines: +97 -87
Refactor. Deglobarized variable
  * $exitwhenover,
  * $total_bytes_skipped
  * $nb_msg_skipped
----------------------------
revision 1.894
date: 2018/09/11 13:59:54;  author: gilles;  state: Exp;  lines: +19 -14
Commented test for @regexflag = ( 's/\\Flagged/X/g' ) since \F is new and was a bug anyway.
----------------------------
revision 1.893
date: 2018/09/11 09:09:34;  author: gilles;  state: Exp;  lines: +89 -75
Bugfix. --exchange1 and --exchange2 were not options! No one complained...
Added inline explanations for --office1 --office2 --exchange1 --exchange2 (what they set and how to unset)
Added --noregexmess to avoid the regexmess setting with --office2 and --exchange2 (wrap long lines >= 10500 char)
Added --noregexflag to avoid the regexflag set by exchange2 (remove \Flagged flag)
Bugfix. The regex to remove flag \Flagged was wrong. It worked because of another filter run after...
----------------------------
revision 1.892
date: 2018/09/04 04:04:34;  author: gilles;  state: Exp;  lines: +9 -9
--skipcrossduplicates activated with --gmail1 --gmail2
----------------------------
revision 1.891
date: 2018/09/04 03:28:09;  author: gilles;  state: Exp;  lines: +175 -123
Enhancement. Added option --synclabels to sync Gmail labels. It should speed up Gmail to Gmail syncs. 
  --synclabels applies only during a copy of a message for now. resyncing labels will be coded later.
----------------------------
revision 1.890
date: 2018/09/01 21:45:41;  author: gilles;  state: Exp;  lines: +117 -114
Refactoring. Replaced $imap1 and $imap2 by $sync->{imap1} and $sync->{imap2}
----------------------------
revision 1.889
date: 2018/08/31 01:02:06;  author: gilles;  state: Exp;  lines: +19 -7
Applied https://github.com/imapsync/imapsync/issues/95
Thanks jh1995!
----------------------------
revision 1.888
date: 2018/08/29 11:02:59;  author: gilles;  state: Exp;  lines: +9 -9
Gives CGI.pm release.
Calls memory_consumption_of_pids_win32() with Cygwin (https://github.com/imapsync/imapsync/pull/22)
----------------------------
revision 1.887
date: 2018/08/23 19:10:44;  author: gilles;  state: Exp;  lines: +11 -10
--maxsleep override $MAX_SLEEP in gmail*() subroutines.
Default  $sync->{ sigignore } to empty list.
----------------------------
revision 1.886
date: 2018/08/06 15:02:51;  author: gilles;  state: Exp;  lines: +28 -11
Added mygetppid because getppid is not available on Windows.
Removed --nosubscribed since it is not coded and useless anyway.
----------------------------
revision 1.885
date: 2018/07/07 04:14:26;  author: gilles;  state: Exp;  lines: +8 -8
Sheband uses env now. Fed up to change freebsd /usr/local/bin/perl
----------------------------
revision 1.884
date: 2018/07/07 03:40:54;  author: gilles;  state: Exp;  lines: +18 -15
Added PPID info where PID is printed.
----------------------------
revision 1.883
date: 2018/07/03 03:55:03;  author: gilles;  state: Exp;  lines: +32 -8
Added freebsd support for loadavg and cpu_cores
----------------------------
revision 1.882
date: 2018/05/05 21:10:43;  author: gilles;  state: Exp;  lines: +8 -8
typo
----------------------------
revision 1.881
date: 2018/05/05 20:43:36;  author: gilles;  state: Exp;  lines: +96 -61
proofread the doc part. ispell on README.
----------------------------
revision 1.880
date: 2018/05/05 12:44:21;  author: gilles;  state: Exp;  lines: +26 -21
Splitted sub usage() with call to sub mypod2usage(). Crit level 4 on open/close not far away.
----------------------------
revision 1.879
date: 2018/04/20 13:02:13;  author: gilles;  state: Exp;  lines: +20 -13
Back to `` because of backtick() does not work always on Darwin
----------------------------
revision 1.878
date: 2018/04/19 00:51:45;  author: gilles;  state: Exp;  lines: +76 -40
Perlcrit. Removed the select in teelaunch()
Perlcrit. *STDERR change is now localized.
Perlcrit. Hard 'LOG_imapsync' is now $DEFAULT_LOGDIR
Proxy mode. Log file will be named with a suffix "_remote.txt" 
Refactor. sub logfile() is deglobalized. (removed $debug lines)
----------------------------
revision 1.877
date: 2018/04/18 22:00:46;  author: gilles;  state: Exp;  lines: +31 -13
Changed sub myprint and sub myprintf in order to suppress the select in teelaunch
----------------------------
revision 1.876
date: 2018/04/18 03:02:32;  author: gilles;  state: Exp;  lines: +20 -17
Bugfix. ARRAY ref not defined with --subscribed
----------------------------
revision 1.875
date: 2018/04/18 02:27:18;  author: gilles;  state: Exp;  lines: +32 -25
Refactor. $tmpdir unglobalized
Win32. No USR1 on Windows so skip signals tests on Win32
----------------------------
revision 1.874
date: 2018/04/18 00:46:46;  author: gilles;  state: Exp;  lines: +53 -40
Perlcrit. Use IPC::Open3::open3 instead of backticks  ``
----------------------------
revision 1.873
date: 2018/04/17 00:24:54;  author: gilles;  state: Exp;  lines: +9 -9
Added SERVER_SOFTWARE
Added SERVER_PORT
----------------------------
revision 1.872
date: 2018/04/16 23:10:03;  author: gilles;  state: Exp;  lines: +17 -11
Bugfix to pass --tests under root user.
----------------------------
revision 1.871
date: 2018/04/13 18:00:06;  author: gilles;  state: Exp;  lines: +71 -12
Added toggle sleep from 2s to 0s with signal USR1
----------------------------
revision 1.870
date: 2018/04/08 17:25:54;  author: gilles;  state: Exp;  lines: +46 -46
Changed gilles.lamiral@laposte.net => gilles@lamiral.info
----------------------------
revision 1.869
date: 2018/04/08 17:21:15;  author: gilles;  state: Exp;  lines: +29 -30
https://imapsync.lamiral.info/ instead of http://imapsync.lamiral.info/ in ID support-url
Removed uname info from banner, adder ram info.
Change utf8 char Â° to nb in tests summary
----------------------------
revision 1.868
date: 2018/04/03 01:55:24;  author: gilles;  state: Exp;  lines: +13 -12
Renamed total_ram_memory() =>  ram_memory_info()
----------------------------
revision 1.867
date: 2018/04/03 00:35:58;  author: gilles;  state: Exp;  lines: +21 -18
Refactor. sub under_cgi_context() uses $mysync.
----------------------------
revision 1.866
date: 2018/03/29 04:58:11;  author: gilles;  state: Exp;  lines: +10 -9
Changed inline signal message
----------------------------
revision 1.865
date: 2018/03/29 04:50:26;  author: gilles;  state: Exp;  lines: +98 -86
Moved the inline help "I am asked to stop immediately" after the final stats.
Tidied up sub myGetOptions()
----------------------------
revision 1.864
date: 2018/03/28 21:33:28;  author: gilles;  state: Exp;  lines: +12 -18
Before tidy up sub myGetOptions
----------------------------
revision 1.863
date: 2018/03/28 16:57:22;  author: gilles;  state: Exp;  lines: +10 -8
Added inline advice to resync after an end commanded by a TERM or QUIT signal.
----------------------------
revision 1.862
date: 2018/03/28 14:48:37;  author: gilles;  state: Exp;  lines: +21 -20
Reduced the loadavg ingo in the header status in CGI context.
Added the hostname in in the header status in CGI context.
----------------------------
revision 1.861
date: 2018/03/27 03:04:03;  author: gilles;  state: Exp;  lines: +41 -48
Refactor. Use of debugmemory() 
Moved the hostname printing at first line. The goal is for clarity when in proxy mode.
Added free RAM info in the banner
Added free RAM and total RAM in the status in CGI context.
----------------------------
revision 1.860
date: 2018/03/26 21:14:01;  author: gilles;  state: Exp;  lines: +97 -67
Reviewed tests_get_options_cgi(), renamed to tests_get_options_cgi_context()
Reviewed tests_get_options
----------------------------
revision 1.859
date: 2018/03/22 12:55:34;  author: gilles;  state: Exp;  lines: +13 -8
Bugfix. Predeclare $sync->{folder} as ARRAY ref. $sync->{folder} = [] ;
----------------------------
revision 1.858
date: 2018/03/21 07:53:26;  author: gilles;  state: Exp;  lines: +14 -11
Refactoring. Deglobalized $justconnect
----------------------------
revision 1.857
date: 2018/03/21 07:40:12;  author: gilles;  state: Exp;  lines: +80 -31
Refactor. Changed how --f1f2 is handled. Was a hash, now a list.
----------------------------
revision 1.856
date: 2018/03/20 02:24:52;  author: gilles;  state: Exp;  lines: +31 -19
Refactoring. Deglobalized @folder
----------------------------
revision 1.855
date: 2018/03/19 14:15:53;  author: gilles;  state: Exp;  lines: +18 -21
Refactoring. Deglobalized $addheader
Refactoring. Deglobalized $justlogin
----------------------------
revision 1.854
date: 2018/03/19 13:45:31;  author: gilles;  state: Exp;  lines: +32 -25
Unglobalized $version
Unglobalized $releasecheck
Added sub debugmemory()
----------------------------
revision 1.853
date: 2018/03/12 13:43:11;  author: gilles;  state: Exp;  lines: +9 -9
Back to default signals. INT => reconnect. TERM or QUIT => stats and exit. (cgicontext ignored TERM)
----------------------------
revision 1.852
date: 2018/03/12 03:11:04;  author: gilles;  state: Exp;  lines: +132 -29
Added --sigexit; For example --sigexit QUIT --sigexit TERM to exit when receiving QUIT or TERM signals.
Added --sigreconnect. For example --sigreconnect INT to reconnect to both imap servers when receiving INT signal.
Added --sigignore. For example --sigignore TERM to "ignore" the TERM signal. In fact print stats during the sync.
Default is like:  --sigexit QUIT --sigexit TERM --sigreconnect INT 

Added sub sig_install() to install any behavior with any signal (the ones actually received in Unix).
Number of tests with --tests is 1137
----------------------------
revision 1.851
date: 2018/03/04 15:19:04;  author: gilles;  state: Exp;  lines: +10 -10
Inline help. Clarified --errorsmax inline help.
----------------------------
revision 1.850
date: 2018/02/21 04:15:32;  author: gilles;  state: Exp;  lines: +66 -41
Option --abort now creates a log too, in order to see if imapsync ends by signal come from --abort or something else.
----------------------------
revision 1.849
date: 2018/02/18 18:45:36;  author: gilles;  state: Exp;  lines: +14 -10
Added \t\r\n characters replaced by _ in sub filter_forbidden_characters()
----------------------------
revision 1.848
date: 2018/02/07 00:58:59;  author: gilles;  state: Exp;  lines: +50 -28
Cleaned up --releasecheck stuff.
Clarified SSL_VERIFY_NONE default.
----------------------------
revision 1.847
date: 2017/12/18 11:04:26;  author: gilles;  state: Exp;  lines: +56 -33
Bugfix. Fixed sub epoch() to allow that kind of silly INTERNALDATE 00-Jan-0000 00:00:00 +0000
(Thanks to IBM Domino...)
Added inline documentation about --releasecheck and --noreleasecheck
Default upstream is still --releasecheck. Just a line to change to have --noreleasecheck by default (as before)
Bugfix. --releasecheck on was hardcoded in cgi context. Now it depends on the default behavior chosen.
Bug pending. Still have to fix --releasecheck on with --help
----------------------------
revision 1.846
date: 2017/11/30 02:00:12;  author: gilles;  state: Exp;  lines: +34 -12
Added sub memory_stress
Added sub tests_memory_stress
memory_stress() crunch 3/4 of the RAM. 
tests_memory_stress() is the associated test.
----------------------------
revision 1.845
date: 2017/11/28 23:36:43;  author: gilles;  state: Exp;  lines: +51 -29
Added --noresyncflags     : Do not resync flags for already transfered messages.
May be useful when a user has already started to play with its host2 account.
----------------------------
revision 1.844
date: 2017/11/16 14:38:38;  author: gilles;  state: Exp;  lines: +107 -43
Crit. Removed 4 "Warnings disabled". crit level 4
----------------------------
revision 1.843
date: 2017/11/05 22:23:57;  author: gilles;  state: Exp;  lines: +38 -30
Added --nocheckfoldersexist ( Default is like --checkfoldersexist )
----------------------------
revision 1.842
date: 2017/10/30 18:47:37;  author: gilles;  state: Exp;  lines: +246 -115
Refactoring. Removed global variables $h1_prefix and $h2_prefix
Bugfix. cpu_number() returns always an integer >= 1.
----------------------------
revision 1.841
date: 2017/10/27 12:37:39;  author: gilles;  state: Exp;  lines: +55 -41
Detect extra arguments. Meaning usually a quoting issue in the command line, options not well parsed.
----------------------------
revision 1.840
date: 2017/10/22 14:28:00;  author: gilles;  state: Exp;  lines: +9 -9
No limitssssss
----------------------------
revision 1.839
date: 2017/10/04 17:50:29;  author: gilles;  state: Exp;  lines: +132 -39
In case the pidfile already exists, remove it if no process match its content.
Do nothing if the pidfile doesn't content a pid number 0<pid<65536
----------------------------
revision 1.838
date: 2017/09/22 08:12:49;  author: gilles;  state: Exp;  lines: +28 -12
Added Polska to possible_special (not for all).
Started sub tests_write_pidfile()
----------------------------
revision 1.837
date: 2017/09/20 20:14:14;  author: gilles;  state: Exp;  lines: +42 -19
Usability. More verbose with ssl probing.
----------------------------
revision 1.836
date: 2017/09/05 16:14:53;  author: gilles;  state: Exp;  lines: +189 -182
Reread the README part. Changed order, rewrote some parts, added options.
----------------------------
revision 1.835
date: 2017/09/03 04:11:31;  author: gilles;  state: Exp;  lines: +53 -92
Reviewed the pod part that goes to README
----------------------------
revision 1.834
date: 2017/08/31 04:14:04;  author: gilles;  state: Exp;  lines: +18 -15
Some crit level 4 fixed.
----------------------------
revision 1.833
date: 2017/08/31 01:58:57;  author: gilles;  state: Exp;  lines: +9 -305
Removed sub usage_old()
----------------------------
revision 1.832
date: 2017/08/31 01:47:48;  author: gilles;  state: Exp;  lines: +285 -127
Rewrote sub usage() and use Pod::Usage now.
Dependency added: Pod::Usage
ID on by default now. Use --noid to avoid it.
Splited sub tests_mailimapclient_connect() to put pure ipv6 test in sub tests_mailimapclient_connect_bug() which is not 
run with --tests
Added some warning in --testsunit when sub called do not exist.
----------------------------
revision 1.831
date: 2017/08/27 01:52:48;  author: gilles;  state: Exp;  lines: +17 -14
Updated from OPTIONS file
----------------------------
revision 1.830
date: 2017/08/27 01:27:49;  author: gilles;  state: Exp;  lines: +35 -35
Inline help to remove sslcheck
----------------------------
revision 1.829
date: 2017/08/23 12:40:10;  author: gilles;  state: Exp;  lines: +14 -12
Bugfix. Fixed guess \ separator.
----------------------------
revision 1.828
date: 2017/08/22 22:06:27;  author: gilles;  state: Exp;  lines: +10 -10
Syntax fix
----------------------------
revision 1.827
date: 2017/08/22 22:04:38;  author: gilles;  state: Exp;  lines: +12 -12
Increased gmail1 maxbytespersecond to 40_000
Increased gmail2 maxbytespersecond to 20_000
----------------------------
revision 1.826
date: 2017/08/22 21:55:26;  author: gilles;  state: Exp;  lines: +13 -11
Added \ separator guess. List is now . / \\ and \
----------------------------
revision 1.825
date: 2017/07/26 19:05:56;  author: gilles;  state: Exp;  lines: +19 -10
Skip ipv6 tests on cuillere.
Skip a connect in void context on macosx polarhome, it stalls.
----------------------------
revision 1.824
date: 2017/07/24 08:04:18;  author: gilles;  state: Exp;  lines: +22 -21
Better output for failed tests.
----------------------------
revision 1.823
date: 2017/07/21 23:55:17;  author: gilles;  state: Exp;  lines: +53 -20
Better output in sub tests_mailimapclient_connect()
----------------------------
revision 1.822
date: 2017/07/20 23:22:08;  author: gilles;  state: Exp;  lines: +11 -11
Bugfix. --skipmess could not work most of the time.
----------------------------
revision 1.821
date: 2017/07/18 00:16:43;  author: gilles;  state: Exp;  lines: +24 -26
Bugfix. Guess prefix '' even when there is no folders.
----------------------------
revision 1.820
date: 2017/07/11 12:12:49;  author: gilles;  state: Exp;  lines: +14 -14
loadavg on Win32 => 0 => unknown.
----------------------------
revision 1.819
date: 2017/07/07 23:21:45;  author: gilles;  state: Exp;  lines: +70 -27
Added --testslive6 to check ipv6 connectivity
----------------------------
revision 1.818
date: 2017/07/06 03:06:36;  author: gilles;  state: Exp;  lines: +42 -27
Removed from --tests call to:
  tests_imapsping()
  tests_tcpping()
  tests_resolv()
  tests_resolvrev()
----------------------------
revision 1.817
date: 2017/07/05 21:58:42;  author: gilles;  state: Exp;  lines: +30 -22
--ipv4 is now synonim of --inet4
--ipv6 is now synonim of --inet6
----------------------------
revision 1.816
date: 2017/07/05 14:50:28;  author: gilles;  state: Exp;  lines: +101 -16
Added dependency use IO::Socket::INET6
Added sub probe_imapssl(). Not use yet. Will replace imapsping()
----------------------------
revision 1.815
date: 2017/06/27 16:45:20;  author: gilles;  state: Exp;  lines: +10 -10
MAX_SLEEP 30 => 2
----------------------------
revision 1.814
date: 2017/06/26 22:50:41;  author: gilles;  state: Exp;  lines: +213 -66
Added raw LIST folders.
Added IP print of both hosts, using peerhost().
Added sub resolv() and others but not using them for now.
Still a problem with IPv6 on port 143 only, 993 with ssl is ok. "Invalid argument" when connecting.
 Solved with Mail::IMAPClient patched like this:
  use IO::Socket::INET6 instead of IO::Socket::INET
----------------------------
revision 1.813
date: 2017/05/24 17:46:13;  author: gilles;  state: Exp;  lines: +93 -38
Added --maxsleep in order to avoid timeouts with --maxbytespersecond and --maxmessagespersecond
Default is like --maxsleep 30 
30 seconds sleeping at max.
----------------------------
revision 1.812
date: 2017/05/23 21:12:37;  author: gilles;  state: Exp;  lines: +10 -10
941 unit tests.
----------------------------
revision 1.811
date: 2017/05/23 21:10:12;  author: gilles;  state: Exp;  lines: +24 -24
Sync also messages with no internal date.
No blanks in automatic logfile name.
----------------------------
revision 1.810
date: 2017/05/02 18:46:30;  author: gilles;  state: Exp;  lines: +10 -10
Fixed a test in tests_umask_str() in order to pass it on Darwin
----------------------------
revision 1.809
date: 2017/05/02 18:34:34;  author: gilles;  state: Exp;  lines: +45 -45
Isolated bad tests in notmatch() and match(): q{} against q{}, so commented now.
----------------------------
revision 1.808
date: 2017/05/02 17:35:25;  author: gilles;  state: Exp;  lines: +160 -75
Better tests ending in exe in case of failure (was 0 I do not know why, a PAR bug)
Report which tests failed at the end of tests.
----------------------------
revision 1.807
date: 2017/04/28 13:43:07;  author: gilles;  state: Exp;  lines: +30 -25
testsunit() isolated.
----------------------------
revision 1.806
date: 2017/04/28 09:50:40;  author: gilles;  state: Exp;  lines: +81 -31
Added --testsunit in order to run any unit test individualy from the command line.
Several --testsunit are allowed. Example:
  imapsync --testsunit tests_true --testsunit tests_always_fail
----------------------------
revision 1.805
date: 2017/04/27 13:04:58;  author: gilles;  state: Exp;  lines: +50 -40
Added test to mkpath with trailing dots foo... in folder name for --usecache.
It does not fail.
----------------------------
revision 1.804
date: 2017/04/27 00:39:51;  author: gilles;  state: Exp;  lines: +10 -10
Fix number of fake test on Win32.
----------------------------
revision 1.803
date: 2017/04/26 17:52:34;  author: gilles;  state: Exp;  lines: +123 -119
Perl crit fixes:
* $! $OS_ERROR
* $@ $EVAL_ERROR
many others.
----------------------------
revision 1.802
date: 2017/04/25 16:13:33;  author: gilles;  state: Exp;  lines: +231 -229
crit about blanks
----------------------------
revision 1.801
date: 2017/04/24 20:51:00;  author: gilles;  state: Exp;  lines: +116 -75
Bugfix. logfile must not have / from user1 and user2.
----------------------------
revision 1.800
date: 2017/04/24 13:51:44;  author: gilles;  state: Exp;  lines: +19 -18
Bugfix. passfile1 passfile2 failure only if used!
----------------------------
revision 1.799
date: 2017/04/24 12:47:34;  author: gilles;  state: Exp;  lines: +20 -10
Check passfile exist before reading it and exit on failure.
----------------------------
revision 1.798
date: 2017/04/24 02:41:46;  author: gilles;  state: Exp;  lines: +61 -29
Make all tests run on MSWin32, either success or skip
----------------------------
revision 1.797
date: 2017/04/23 13:35:47;  author: gilles;  state: Exp;  lines: +353 -23
Moved /etc/imapsync.hash to $CGI_HASHFILE   => '/var/tmp/imapsync_hash'
Added note( 'Entering ...' ) and note( 'Leaving ...' ) to all tests_...() functions
----------------------------
revision 1.796
date: 2017/04/23 12:25:22;  author: gilles;  state: Exp;  lines: +115 -28
Added umask setting to 0077 in cgi context.
----------------------------
revision 1.795
date: 2017/04/22 13:01:28;  author: gilles;  state: Exp;  lines: +55 -16
Refactor. Replaced hard cgi context test $ENV{SERVER_SOFTWARE} by function call to under_cgi_context()
----------------------------
revision 1.794
date: 2017/04/15 16:59:24;  author: gilles;  state: Exp;  lines: +10 -10
871 unit tests
----------------------------
revision 1.793
date: 2017/04/15 16:56:06;  author: gilles;  state: Exp;  lines: +136 -54
Tests should pass under nobody in /var/tmp/ now.
----------------------------
revision 1.792
date: 2017/04/05 03:06:42;  author: gilles;  state: Exp;  lines: +22 -22
Added GMT setting to test setlogfile()
----------------------------
revision 1.791
date: 2017/04/05 02:27:50;  author: gilles;  state: Exp;  lines: +26 -9
Added docker context in order to be run under nobody without permission issues.
----------------------------
revision 1.790
date: 2017/04/04 11:27:09;  author: gilles;  state: Exp;  lines: +10 -10
Added 'Objets envoy&AOk-s' for --automap
----------------------------
revision 1.789
date: 2017/03/24 22:44:11;  author: gilles;  state: Exp;  lines: +11 -9
Fix issue "SSL routines:ssl3_check_cert_and_algorithm:dh key too small" with 
http://stackoverflow.com/questions/36417224/openssl-dh-key-too-small-error
SSL_cipher_list => 'DEFAULT:!DH'
----------------------------
revision 1.788
date: 2017/03/20 23:26:26;  author: gilles;  state: Exp;  lines: +10 -10
852 unit tests
----------------------------
revision 1.787
date: 2017/03/20 23:23:39;  author: gilles;  state: Exp;  lines: +130 -84
Added --maxbytesafter in order to start --maxbytespersecond limitation only after --maxbytesafter amount of data transferred
----------------------------
revision 1.786
date: 2017/03/20 03:32:12;  author: gilles;  state: Exp;  lines: +44 -39
Bugfix. Abort on heavy load was not working because of load_and_delay strictly needed 4 arguments
----------------------------
revision 1.785
date: 2017/03/14 18:06:38;  author: gilles;  state: Exp;  lines: +12 -10
No systematic NOP!
----------------------------
revision 1.784
date: 2017/03/14 17:51:48;  author: gilles;  state: Exp;  lines: +120 -30
Changed abandon points (last FOLDER) to reconnection points.
----------------------------
revision 1.783
date: 2017/03/13 06:22:43;  author: gilles;  state: Exp;  lines: +24 -90
Removed Mail::IMAPClient ads!
----------------------------
revision 1.782
date: 2017/03/13 01:20:24;  author: gilles;  state: Exp;  lines: +486 -384
Added --domino1 --domino2 to facilitate Domino options setting.
Added password setting via environment variables IMAPSYNC_PASSWORD1 IMAPSYNC_PASSWORD2
----------------------------
revision 1.781
date: 2017/03/09 12:50:07;  author: gilles;  state: Exp;  lines: +30 -22
Usability. No more "... says it has NO CAPABILITY for AUTHENTICATE LOGIN"
----------------------------
revision 1.780
date: 2017/03/09 11:00:05;  author: gilles;  state: Exp;  lines: +54 -20
Added --office1 --office2 to load simplify sync from and to office 365 (parameters from the FAQ.d/FAQ.Exchange.txt)
----------------------------
revision 1.779
date: 2017/03/07 13:05:02;  author: gilles;  state: Exp;  lines: +85 -65
Removed most of the perlcrit  (Severity: 3) Regular expression without "/x" flag
----------------------------
revision 1.778
date: 2017/03/02 00:22:59;  author: gilles;  state: Exp;  lines: +125 -83
Fixed some perlcrit level 4
----------------------------
revision 1.777
date: 2017/03/01 01:25:58;  author: gilles;  state: Exp;  lines: +20 -16
Added memory_available
----------------------------
revision 1.776
date: 2017/02/28 22:58:38;  author: gilles;  state: Exp;  lines: +89 -68
Added tests_not_long_imapsync_version_public()
----------------------------
revision 1.775
date: 2017/02/17 01:54:27;  author: gilles;  state: Exp;  lines: +27 -23
loadavg on Win32
----------------------------
revision 1.774
date: 2017/02/15 12:55:50;  author: gilles;  state: Exp;  lines: +40 -25
Bugfix. $tls1 and $tls2 vs $mysync->{tls1} $mysync->{tls2} somewhere
----------------------------
revision 1.773
date: 2017/02/14 23:21:05;  author: gilles;  state: Exp;  lines: +155 -41
Splited loadavg() in 3 calls loadavg_windows() loadavg_darwin() loadavg_linux()
Bugfix. Output "Load is" was not complete, miss the important 3 load values!
----------------------------
revision 1.772
date: 2017/02/01 01:31:22;  author: gilles;  state: Exp;  lines: +14 -14
Bugfix. Output Load is was inacurate
----------------------------
revision 1.771
date: 2017/01/31 22:10:51;  author: gilles;  state: Exp;  lines: +10 -10
Bugfix. gmail2() had bad regextrans2
----------------------------
revision 1.770
date: 2017/01/29 21:48:44;  author: gilles;  state: Exp;  lines: +52 -45
Added $imap1->reconnect in case getting metadata from host2 is too long and host1 timesout.
Bugfix. getoption uses $mysync not $sync
----------------------------
revision 1.769
date: 2017/01/28 05:54:43;  author: gilles;  state: Exp;  lines: +60 -61
Removed global $dry and $dry_message => $sync->{dry} $sync->{dry_message}
----------------------------
revision 1.768
date: 2017/01/19 06:12:02;  author: gilles;  state: Exp;  lines: +12 -11
Bugfix. CGI context a newline was bad in  $sync->{loadavg}
----------------------------
revision 1.767
date: 2017/01/19 05:53:02;  author: gilles;  state: Exp;  lines: +11 -10
use Net::Ping instead of just require.
----------------------------
revision 1.766
date: 2017/01/19 05:29:42;  author: gilles;  state: Exp;  lines: +12 -12
sslcheck localhost => imapsync.lamiral.info
----------------------------
revision 1.765
date: 2017/01/19 05:16:42;  author: gilles;  state: Exp;  lines: +10 -10
806 unit tests
----------------------------
revision 1.764
date: 2017/01/19 05:12:17;  author: gilles;  state: Exp;  lines: +184 -59
Added --sslcheck and made it on by default. Use --nosslcheck to unset it.
--sslcheck checks ssl port 993 and turn on ssl if it is open.
----------------------------
revision 1.763
date: 2017/01/19 00:49:43;  author: gilles;  state: Exp;  lines: +10 -10
792 unit tests
----------------------------
revision 1.762
date: 2017/01/19 00:46:30;  author: gilles;  state: Exp;  lines: +113 -90
--showpasswords now show also passwords with --debugimap
Load does not generate Perl warnings on Win32
----------------------------
revision 1.761
date: 2017/01/17 06:08:49;  author: gilles;  state: Exp;  lines: +12 -9
debug for --gmail1 --gmail2
----------------------------
revision 1.760
date: 2017/01/17 04:43:51;  author: gilles;  state: Exp;  lines: +90 -11
Added --gmail1 --gmail2 --gmail12 to simplify gmail syncs. It sets parameters from the FAQ --ssl --host etc.
Allow parameters passed by POST.
----------------------------
revision 1.759
date: 2017/01/16 13:20:57;  author: gilles;  state: Exp;  lines: +10 -10
Bugfix. Add / after CGI_TMPDIR_TOP
----------------------------
revision 1.758
date: 2017/01/15 19:34:42;  author: gilles;  state: Exp;  lines: +71 -26
Splitted get_options(). Now call either get_options_cgi() or get_options_cmd()
I applied David M advice, remove all but what is safe in the context.
----------------------------
revision 1.757
date: 2017/01/12 10:33:47;  author: gilles;  state: Exp;  lines: +10 -10
nb tests
----------------------------
revision 1.756
date: 2017/01/12 10:14:32;  author: gilles;  state: Exp;  lines: +175 -154
tmpdir is cgidir in cgi context. different for each account couple (host,user,pass).
----------------------------
revision 1.755
date: 2017/01/12 03:25:42;  author: gilles;  state: Exp;  lines: +28 -22
Now goes to TLS if STARTTLS is in CAPABILITY and ssl is off and notls is not there.
----------------------------
revision 1.754
date: 2017/01/11 06:43:05;  author: gilles;  state: Exp;  lines: +11 -14
*** empty log message ***
----------------------------
revision 1.753
date: 2017/01/11 04:59:22;  author: gilles;  state: Exp;  lines: +280 -80
Added load average from /proc/loadavg
Added abort if load is too heavy in cgi context.
----------------------------
revision 1.752
date: 2017/01/10 00:48:45;  author: gilles;  state: Exp;  lines: +13 -13
timestart with milliseconds.
----------------------------
revision 1.751
date: 2017/01/09 06:57:00;  author: gilles;  state: Exp;  lines: +30 -36
Added milliseconds in logfile name since in cgi context several runs is possible in one second.
----------------------------
revision 1.750
date: 2017/01/05 13:47:10;  author: gilles;  state: Exp;  lines: +57 -36
Added /dist/ link in releasecheck.
Added tests_check_last_release(  )
Made check_last_release() testable.
----------------------------
revision 1.749
date: 2017/01/05 03:18:01;  author: gilles;  state: Exp;  lines: +10 -10
*** empty log message ***
----------------------------
revision 1.748
date: 2017/01/05 01:48:34;  author: gilles;  state: Exp;  lines: +166 -109
Added cookie imapsync_runs in cgi context.
Refactor. $host1 $user1 $password1 $host2 $user2 $password2 under $sync now.
Added output() to delay some output in cgi context.
----------------------------
revision 1.747
date: 2016/12/24 15:38:49;  author: gilles;  state: Exp;  lines: +152 -26
Added sub rand32()
Added sub createhashfileifneeded() 
Added sub hashsync()
Added sub hashsynclocal()
Temporary dir different for each individual sync but same dir if same parameters host1 host2 user1 user2 password1 password2
----------------------------
revision 1.746
date: 2016/12/19 20:14:37;  author: gilles;  state: Exp;  lines: +81 -23
Extracted the $cgi object creation from sub myGetOptions()
Started sub tests_get_options_cgi()
Added tests to sub tests_get_options()
----------------------------
revision 1.745
date: 2016/12/14 23:12:37;  author: gilles;  state: Exp;  lines: +102 -41
Refactoring. get_options( @ARGV ) uses @ARGV as a parameter.
Refactoring. sub get_options() only gets options (use to add stuff about their values).
Refactoring. What was in sub get_options() has gone into sub after_get_options()
Refactoring. sub unsetunsafe(  ) is now sub sub setcgicontext( ) and has more settings.
Bugfix. sub ask_for_password used <> which could open remaining options from @ARGS. Uses now <STDIN>
Refactoring. Use Getopt::Long::GetOptionsFromArray() instead of Getopt::Long::GetOptions()
Added test sub tests_get_options()
Refactoring. Added sub printenv() extracted code from sub get_options()
----------------------------
revision 1.744
date: 2016/12/13 13:04:21;  author: gilles;  state: Exp;  lines: +105 -106
Removed local package Imapsync::Getopt::Long
----------------------------
revision 1.743
date: 2016/12/12 11:43:46;  author: gilles;  state: Exp;  lines: +60 -18
Added --abort option to terminate a previous call still running. Useful in remote context, ie online.
----------------------------
revision 1.742
date: 2016/12/07 16:17:10;  author: gilles;  state: Exp;  lines: +25 -11
Added --simulong int. To simulate a long response in web context.
----------------------------
revision 1.741
date: 2016/11/22 21:27:43;  author: gilles;  state: Exp;  lines: +10 -10
Now print " could not append ( Subject:[$subject], Date:[$h1_date], Size:[$h1_size] ) " whn append fails.
----------------------------
revision 1.740
date: 2016/11/17 15:05:01;  author: gilles;  state: Exp;  lines: +10 -10
Print always permanentflags info. Was only in debug mode.
----------------------------
revision 1.739
date: 2016/11/03 20:31:10;  author: gilles;  state: Exp;  lines: +87 -36
Added sub tests_match(  ).
Changed name sub tests_dontmatch(  ) => tests_notmatch(  )
710 tests noregression.
----------------------------
revision 1.738
date: 2016/11/01 10:11:31;  author: gilles;  state: Exp;  lines: +115 -59
--expunge --expunge1 are pure aliases now (don't know why they were distinct).
----------------------------
revision 1.737
date: 2016/10/11 12:40:59;  author: gilles;  state: Exp;  lines: +16 -16
blanks
----------------------------
revision 1.736
date: 2016/10/10 21:02:49;  author: gilles;  state: Exp;  lines: +3215 -3215
all tabs converted to spaces. By notepad++
----------------------------
revision 1.735
date: 2016/10/10 20:48:53;  author: gilles;  state: Exp;  lines: +21 -21
crit fix. open my
----------------------------
revision 1.734
date: 2016/10/10 14:05:09;  author: gilles;  state: Exp;  lines: +60 -60
Renamed sub is_valid_directory() to do_valid_directory()
Rewrote modulesversion() tp avoid no strict 'refs' usage.
  use a closure instead
----------------------------
revision 1.733
date: 2016/10/09 21:38:44;  author: gilles;  state: Exp;  lines: +166 -184
Some crit fixes.
----------------------------
revision 1.732
date: 2016/09/29 20:56:35;  author: gilles;  state: Exp;  lines: +106 -106
Small perlcritics.
----------------------------
revision 1.731
date: 2016/09/29 12:24:56;  author: gilles;  state: Exp;  lines: +32 -26
Added --noabletosearch1 --noabletosearch2; Still support --noabletosearch, which turn on both --noabletosearch1 --noabletosearch2
----------------------------
revision 1.730
date: 2016/09/17 14:30:45;  author: gilles;  state: Exp;  lines: +32 -28
Variable $delete is now $delete1 
Change doc --delete => --delete1
--delete still supported, --delete1 and --delete are aliases.
----------------------------
revision 1.729
date: 2016/09/12 06:24:07;  author: gilles;  state: Exp;  lines: +16 -14
typo.
----------------------------
revision 1.728
date: 2016/08/30 11:38:30;  author: gilles;  state: Exp;  lines: +11 -11
Typo
----------------------------
revision 1.727
date: 2016/08/19 10:30:36;  author: gilles;  state: Exp;  lines: +53 -110
Bugfix. Fall back separator to / even when host has no mailbox at all.
Usability. Better warning about default ssl SSL_VERIFY_NONE
----------------------------
revision 1.726
date: 2016/08/16 21:32:35;  author: gilles;  state: Exp;  lines: +19 -19
Changed "Checking --regexflag --skipmess --regexmess --maxlinelengthcmd --pipemess commands" with a space string instead of an empty one. Because pipemess() now fails when output is empty.
----------------------------
revision 1.725
date: 2016/08/16 00:01:48;  author: gilles;  state: Exp;  lines: +122 -83
Some perl critics.
----------------------------
revision 1.724
date: 2016/08/13 11:04:06;  author: gilles;  state: Exp;  lines: +362 -150
Refactor. No more global $pidfile, $pidfilelocking, $nb_errors, $errorsdump, @errors_log. 
Refactor. Changed exit_clean. From exit_clean( 0 ) to  exit_clean( $sync, $EX_OK ) ;
Refactor. Changed errors_incr. From errors_incr( $error ) to errors_incr( $sync, $error ).
Refactor. From stats(  ) to stats( $sync ).
Added constants:
 * $EXIT_WITH_ERRORS_MAX
 * $EXIT_BY_SIGNAL
 * $EXIT_WITH_ERRORS
 * $EXIT_PID_FILE_ALREADY_EXIST
 * $INTERVAL_TO_EXIT
----------------------------
revision 1.723
date: 2016/07/29 21:57:03;  author: gilles;  state: Exp;  lines: +12 -11
Force Unconnected state with Ctrl-c.
----------------------------
revision 1.722
date: 2016/07/29 21:14:11;  author: gilles;  state: Exp;  lines: +20 -12
Added sub debugsleep()
Changed --debugsleep to take a float parameter. --debugsleep 4.5 add a sleep of 4.5 seconds every folder and before every copied message.
----------------------------
revision 1.721
date: 2016/07/29 17:25:00;  author: gilles;  state: Exp;  lines: +57 -29
Do reconnections when hit by a signal Ctrl-c, aka INT signal.
2 consecutive Ctrl-c within 1 second then exit the program.
----------------------------
revision 1.720
date: 2016/07/29 15:01:38;  author: gilles;  state: Exp;  lines: +324 -225
Some Perl critics "not one of the allowed literal values". Now still 188 violations of ValuesAndExpressions::ProhibitMagicNumbers.
----------------------------
revision 1.719
date: 2016/07/25 19:27:47;  author: gilles;  state: Exp;  lines: +229 -152
Change some print to myprint.
Fixed some perlcritic level 4 & 5
sub pipemess now abort on empty message generated.
sub pipemess prints stderr
----------------------------
revision 1.718
date: 2016/07/20 10:45:51;  author: gilles;  state: Exp;  lines: +21 -13
Added --inet4 to force AF_INET connextion in ssl mode.
Added --inet6 too to force AF_INET6 in ssl mode. Might be useless.
----------------------------
revision 1.717
date: 2016/07/13 14:05:20;  author: gilles;  state: Exp;  lines: +130 -57
Started tests_message_for_host2()
Added cyrillic for hard part --automap
--pipemess test with pipe (cat|cat)
--pipemess tests with arrors
----------------------------
revision 1.716
date: 2016/07/12 09:02:25;  author: gilles;  state: Exp;  lines: +209 -81
Added full mocked tests to sub tests_delete1emptyfolders(). Test::MockObject is really helpful!
Changed pipemess() to return both message and stderr output, in list context. Scalar context stays the same, for now.
Added list context tests to tests_pipemess()
----------------------------
revision 1.715
date: 2016/07/05 21:17:48;  author: gilles;  state: Exp;  lines: +10 -10
Removed from errors list "ignoring folder because it is not in host1 whole folders list". Too hard too.
----------------------------
revision 1.714
date: 2016/07/05 21:12:23;  author: gilles;  state: Exp;  lines: +10 -10
Remove "not selectable" folders from the errors list. Too hard.
----------------------------
revision 1.713
date: 2016/07/05 12:50:35;  author: gilles;  state: Exp;  lines: +21 -18
Added "ignoring folder" in the errors list.
----------------------------
revision 1.712
date: 2016/06/30 01:35:02;  author: gilles;  state: Exp;  lines: +202 -21
Added option --delete1emptyfolders ; 8 hours to write it.
Added module dependency Test::MockObject for some tests. Only require for now.
----------------------------
revision 1.711
date: 2016/06/22 20:23:33;  author: gilles;  state: Exp;  lines: +10 -10
Removed a useless debug output
----------------------------
revision 1.710
date: 2016/06/22 14:47:23;  author: gilles;  state: Exp;  lines: +28 -27
Perlcritic fixes. ValuesAndExpressions::ProhibitMagicNumbers some 3 and is_a_release_number tests.
----------------------------
revision 1.709
date: 2016/06/22 11:32:40;  author: gilles;  state: Exp;  lines: +58 -37
Perlcritic fixes. ValuesAndExpressions::ProhibitMagicNumbers -1 => $LAST or $MINUS_ONE.
----------------------------
revision 1.708
date: 2016/06/22 10:32:45;  author: gilles;  state: Exp;  lines: +193 -192
Perlcritic fixes. ProhibitParensWithBuiltins, Last ones.
----------------------------
revision 1.707
date: 2016/06/18 00:37:24;  author: gilles;  state: Exp;  lines: +64 -81
Perlcritic fixes. ProhibitParensWithBuiltins, exists() => exists. But not all. Need to examine precedence with not or and etc.
Uncommented call to $test_builder->reset(  ) Don't know why it was commented but it was bad for knowing tests go wrong.
----------------------------
revision 1.706
date: 2016/06/17 13:34:09;  author: gilles;  state: Exp;  lines: +13 -13
Sugar. "return (" => "return("
----------------------------
revision 1.705
date: 2016/06/17 13:28:23;  author: gilles;  state: Exp;  lines: +422 -422
Replaced all print( calls by myprint( calls.
It prepares better output handling, I hope.
----------------------------
revision 1.704
date: 2016/06/17 13:25:16;  author: gilles;  state: Exp;  lines: +36 -36
Replaced smyprintf by mysprintf
----------------------------
revision 1.703
date: 2016/06/17 13:12:09;  author: gilles;  state: Exp;  lines: +700 -697
Perlcritic fixes. Rmoved parentheses, ProhibitParensWithBuiltins, for defined|scalar|push|keys|unshift|uc
but added parentheses to print.
Replaced printf by myprintf
Replaced sprinf by smyprintf.
----------------------------
revision 1.702
date: 2016/06/15 22:43:35;  author: gilles;  state: Exp;  lines: +495 -495
Fixed perl critic 458 violations of ValuesAndExpressions::ProhibitInterpolationOfLiterals. "Useless interpolation of literal string". 2 left but critic bugs on them. "\1foo" is not '\1foo' but critic suggests equality.
----------------------------
revision 1.701
date: 2016/06/12 23:39:04;  author: gilles;  state: Exp;  lines: +812 -812
Fixed perlcritic "Don't use whitespace at the end of lines". Was 627 violations of CodeLayout::ProhibitTrailingWhitespace. Now 0. For now...
----------------------------
revision 1.700
date: 2016/06/12 20:55:25;  author: gilles;  state: Exp;  lines: +33 -33
Fixed perlcritic latest ouble-sigil dereference $$foo => ${ $ffo } and $#$foo => $#{ $foo }
----------------------------
revision 1.699
date: 2016/06/12 19:51:52;  author: gilles;  state: Exp;  lines: +29 -29
Fixed perlcritic Double-sigil dereference @$foo => @{ $foo }
----------------------------
revision 1.698
date: 2016/06/12 19:39:15;  author: gilles;  state: Exp;  lines: +33 -36
Fixed perlcritic %$foo => %{ $ff }
Double-sigil dereference
----------------------------
revision 1.697
date: 2016/06/12 18:42:18;  author: gilles;  state: Exp;  lines: +53 -24
Perl critic fixes. 10 x "Unnamed numeric literals make code less maintainable.". use Readonly to fix them.
----------------------------
revision 1.696
date: 2016/06/09 23:42:34;  author: gilles;  state: Exp;  lines: +201 -201
Fixed perlcritic 'Quotes used with a string containing no non-whitespace characters'.
"" or '' => q{}
" " or ' ' => q{ }
----------------------------
revision 1.695
date: 2016/06/09 18:17:14;  author: gilles;  state: Exp;  lines: +15 -10
Check connected state in sub create_folder().
----------------------------
revision 1.694
date: 2016/06/08 21:01:15;  author: gilles;  state: Exp;  lines: +43 -17
Added patch: [imapsync/imapsync] Update XOAUTH2 support to work with Google's newer .json files (#68).
----------------------------
revision 1.693
date: 2016/06/07 21:13:03;  author: gilles;  state: Exp;  lines: +38 -28
CGI loaded when needed only.
In CGI mode, Remove all content in unsafe evalued options.
In CGI mode, help solving permission issues.
----------------------------
revision 1.692
date: 2016/05/25 16:34:15;  author: gilles;  state: Exp;  lines: +11 -11
Small typo
----------------------------
revision 1.691
date: 2016/05/24 20:56:34;  author: gilles;  state: Exp;  lines: +25 -18
Fixed -1 false output for big account %d => %s in printf.
Wrote and use getpwuid_any_os. getpwuid breaks on Windows.
----------------------------
revision 1.690
date: 2016/05/14 21:21:56;  author: gilles;  state: Exp;  lines: +33 -23
*** empty log message ***
----------------------------
revision 1.689
date: 2016/05/09 17:58:11;  author: gilles;  state: Exp;  lines: +155 -20
Started to be CGI compatible.
Started  package Imapsync::Getopt::Long.
----------------------------
revision 1.688
date: 2016/03/27 22:56:47;  author: gilles;  state: Exp;  lines: +11 -11
Check return code of message_to_file in sub message_for_host2.
----------------------------
revision 1.687
date: 2016/03/24 20:39:33;  author: gilles;  state: Exp;  lines: +10 -10
Replaced message_string() call by message_to_file() and won 1x again.
Now imapsync crunches only 2x biggest message size in memory.
----------------------------
revision 1.686
date: 2016/03/24 20:21:57;  author: gilles;  state: Exp;  lines: +27 -27
Changed append_message_on_host2() to pass message string by reference.
Memory usage passed from 5x to 3x. 3x remains from underlying Mail::IMAPClient module in Mail::IMAPClient::message_string()
----------------------------
revision 1.685
date: 2016/03/24 17:02:13;  author: gilles;  state: Exp;  lines: +65 -35
Added memory debug in order to decrease the 5x message size in memory.
----------------------------
revision 1.684
date: 2016/03/17 08:35:03;  author: gilles;  state: Exp;  lines: +24 -16
Bugfix. No more warning about  "Use of uninitialized value $sockargs[7] in join or string at"
in ssl or tls mode.  Was due to "'SSL_version' => undef".
----------------------------
revision 1.683
date: 2016/03/07 02:41:11;  author: gilles;  state: Exp;  lines: +22 -10
Added --sslargs1 in documentation.
----------------------------
revision 1.682
date: 2016/03/01 00:47:54;  author: gilles;  state: Exp;  lines: +16 -11
*** empty log message ***
----------------------------
revision 1.681
date: 2016/02/04 03:34:49;  author: gilles;  state: Exp;  lines: +12 -13
Bugfix. Syntax error!
----------------------------
revision 1.680
date: 2016/02/04 02:11:32;  author: gilles;  state: Exp;  lines: +25 -27
Bugfix. Added --expungeaftereach in sub delete_message_on_host1().
Usability. Added "use --noexpungeaftereach to speed up" if --delete is used.
----------------------------
revision 1.679
date: 2016/01/25 01:57:54;  author: gilles;  state: Exp;  lines: +11 -11
Bugfix. "Can't use an undefined value as a HASH reference at /usr/bin/imapsync line 1247."
----------------------------
revision 1.678
date: 2016/01/21 19:47:02;  author: gilles;  state: Exp;  lines: +14 -21
README part check.
----------------------------
revision 1.677
date: 2016/01/19 14:55:06;  author: gilles;  state: Exp;  lines: +295 -289
help message easier to copy in README part.
----------------------------
revision 1.676
date: 2016/01/16 05:30:00;  author: gilles;  state: Exp;  lines: +282 -77
Changed basic option list by --help output.
----------------------------
revision 1.675
date: 2016/01/06 01:10:05;  author: gilles;  state: Exp;  lines: +11 -9
Added --errorsmax in --help message.
----------------------------
revision 1.674
date: 2015/12/28 18:31:06;  author: gilles;  state: Exp;  lines: +17 -10
Added --debugssl int. Default is like --debugssl 1 (Only print out errors).
----------------------------
revision 1.673
date: 2015/12/26 02:00:05;  author: gilles;  state: Exp;  lines: +141 -145
Added --timeout1
Added --timeout2 (--timeout still available to set both with the same value)
Added --sslargs1 to pass any ssl parameter for host1 connection.
Added --sslargs2 to pass any ssl parameter for host2 connection.
Example --sslargs1 SSL_verify_mode=1 --sslargs1 SSL_version=SSLv3
Removed --allow3xx option.
----------------------------
revision 1.672
date: 2015/12/10 10:23:49;  author: gilles;  state: Exp;  lines: +9 -8
Added require Encode::Byte to solve "The locale codeset (cp1252) isn't one that perl can decode" on Win32.
----------------------------
revision 1.671
date: 2015/12/09 03:22:46;  author: gilles;  state: Exp;  lines: +48 -47
Added env_proxy call in sub xoauth2() to read proxy settings from environment variable without  PERL_LWP_ENV_PROXY=1
----------------------------
revision 1.670
date: 2015/12/03 02:36:41;  author: gilles;  state: Exp;  lines: +11 -12
Bugfix. logfile missed user2.
----------------------------
revision 1.669
date: 2015/12/03 02:03:53;  author: gilles;  state: Exp;  lines: +138 -83
--logdir --logfile now compatible with old --logfile alone. tests cases.
----------------------------
revision 1.668
date: 2015/12/02 13:23:22;  author: gilles;  state: Exp;  lines: +94 -86
Fixed some perlcritics.
----------------------------
revision 1.667
date: 2015/11/30 02:44:12;  author: gilles;  state: Exp;  lines: +156 -60
--automap implemented.
Added --justautomap to see what will happen with --automap and --f1f2 options.
----------------------------
revision 1.666
date: 2015/11/23 14:56:56;  author: gilles;  state: Exp;  lines: +50 -19
Doc fix. --logfile path inline and in usage().
Added require JSON::WebToken::Crypt::RSA and Crypt::OpenSSL::RSA to a good build on Win32.
Tested OAUTH2 on windows. Works.
Bug fix. Changed "Host1: checking all wanted folders exist" not efficient algorythm
  to allow a 2.4 million folders account. Yes, some people have this...
----------------------------
revision 1.665
date: 2015/11/06 00:45:35;  author: gilles;  state: Exp;  lines: +29 -9
Made quota wrnings, quota human usable.
----------------------------
revision 1.664
date: 2015/11/04 18:09:22;  author: gilles;  state: Exp;  lines: +362 -323
Back to require IO::Socket::SSL;
instead of use.

Reformated the usage output.
Added --f1f2    str1=str2 : Force folder str1 to be synced to str2.
--f1f2 overrides any automap mapping and any regextrans2
----------------------------
revision 1.663
date: 2015/10/03 23:59:27;  author: gilles;  state: Exp;  lines: +12 -9
Bugfix. Return with previous Debug when no quota available.
----------------------------
revision 1.662
date: 2015/10/03 22:14:37;  author: gilles;  state: Exp;  lines: +84 -24
Added quota_extract_storage_limit_in_bytes()
Added quota_extract_storage_current_in_bytes()
----------------------------
revision 1.661
date: 2015/09/28 15:36:41;  author: gilles;  state: Exp;  lines: +18 -19
Better prints.
----------------------------
revision 1.660
date: 2015/09/28 14:18:10;  author: gilles;  state: Exp;  lines: +21 -15
IMAP output as an early stage of quota and ID.
----------------------------
revision 1.659
date: 2015/09/21 22:47:50;  author: gilles;  state: Exp;  lines: +107 -29
Better ID format sent. Order terms like in thr RFC.
Added imapsync_id_github, in case.
----------------------------
revision 1.658
date: 2015/09/19 08:56:07;  author: gilles;  state: Exp;  lines: +8 -8
RCS date in id.
----------------------------
revision 1.657
date: 2015/09/19 08:26:04;  author: gilles;  state: Exp;  lines: +206 -77
Started to use global $sync-> in order to reduce number of parameters in routines.
----------------------------
revision 1.656
date: 2015/09/13 16:11:07;  author: gilles;  state: Exp;  lines: +46 -24
Some perlcritic fixes.
----------------------------
revision 1.655
date: 2015/09/11 01:57:51;  author: gilles;  state: Exp;  lines: +15 -12
Bugfix testing automap.
----------------------------
revision 1.654
date: 2015/09/11 01:23:42;  author: gilles;  state: Exp;  lines: +121 -76
Added --automap to implement rfc6154. Turned on by default.
Use --noautomap to avoid it.
----------------------------
revision 1.653
date: 2015/09/05 21:35:56;  author: gilles;  state: Exp;  lines: +27 -25
IO::Socket::SSL mandatory to run.
SSL_VERIFY_NONE in --ssl and --tls
----------------------------
revision 1.652
date: 2015/08/28 14:59:59;  author: gilles;  state: Exp;  lines: +8 -8
"Initial difference" -> "Start difference"
----------------------------
revision 1.651
date: 2015/08/18 22:35:05;  author: gilles;  state: Exp;  lines: +8 -8
fixed xoauth2 calls.
----------------------------
revision 1.650
date: 2015/08/16 00:42:58;  author: gilles;  state: Exp;  lines: +28 -28
Changed some output, added Host1: or Host2 at the begining of line.
----------------------------
revision 1.649
date: 2015/08/10 03:10:15;  author: gilles;  state: Exp;  lines: +7 -7
576 tests.
----------------------------
revision 1.648
date: 2015/08/10 02:58:21;  author: gilles;  state: Exp;  lines: +99 -39
Added guess_prefix() and guess_separator()
Guess prefixes and separators instead of forcing the user to find them.
----------------------------
revision 1.647
date: 2015/08/07 04:35:15;  author: gilles;  state: Exp;  lines: +33 -20
Added folders counting outputs.
----------------------------
revision 1.646
date: 2015/08/07 00:07:39;  author: gilles;  state: Exp;  lines: +16 -6
Added sub imap_utf7_encode( ). Not used.
----------------------------
revision 1.645
date: 2015/07/31 14:48:11;  author: gilles;  state: Exp;  lines: +11 -11
Better outpout in login_imap()
----------------------------
revision 1.644
date: 2015/07/17 01:22:52;  author: gilles;  state: Exp;  lines: +9 -7
Added NOOP in --dry mode during fake APPEND.
----------------------------
revision 1.643
date: 2015/06/24 01:01:00;  author: gilles;  state: Exp;  lines: +17 -10
Added --fetch_hash_set "1:*" to permit Mail2World success.
Need a patched Mail::IMAPClient 3.35 in sub fetch_hash()
See https://rt.cpan.org/Public/Bug/Display.html?id=105456
----------------------------
revision 1.642
date: 2015/05/11 01:07:37;  author: gilles;  state: Exp;  lines: +9 -6
Added JSON::WebToken in modules list.
----------------------------
revision 1.641
date: 2015/05/09 17:52:27;  author: gilles;  state: Exp;  lines: +27 -128
Replaced imap servers software list by a link to the web list.
Added option --subfolder2 SUB Move whole host1 folders hierarchy under folder SUB.
----------------------------
revision 1.640
date: 2015/05/05 01:03:34;  author: gilles;  state: Exp;  lines: +18 -12
No folders sizes if --justfolders, unless really wanted.
----------------------------
revision 1.639
date: 2015/04/16 19:33:59;  author: gilles;  state: Exp;  lines: +7 -7
*** empty log message ***
----------------------------
revision 1.638
date: 2015/04/09 22:47:24;  author: gilles;  state: Exp;  lines: +19 -11
No warning about messages when --dry --justfolders together.
----------------------------
revision 1.637
date: 2015/04/01 01:36:37;  author: gilles;  state: Exp;  lines: +9 -9
Bugfix. Win32 regression with long_path_2_prefix test. Was too long.
----------------------------
revision 1.636
date: 2015/03/31 14:54:41;  author: gilles;  state: Exp;  lines: +107 -65
Added errors dump. By default. Use --noerrorsdump to avoid it.
Added --errorsmax switch. Default is like --errorsmax 50. Exit after 50 errors encountered.
----------------------------
revision 1.635
date: 2015/03/30 07:36:08;  author: gilles;  state: Exp;  lines: +19 -15
Changed basic example to a working one with test1.lamiral.info
----------------------------
revision 1.634
date: 2015/03/25 02:10:56;  author: gilles;  state: Exp;  lines: +10 -7
Bugfix. Remove tmp files upon failure as well.
----------------------------
revision 1.633
date: 2015/03/25 01:14:36;  author: gilles;  state: Exp;  lines: +96 -73
IO::Socket::SSL not mandatory. (Sometimes hard to install).
Bugfix. SKIP sections for Unix or Windows tests. Removed no_plan. 561 non-regression tests.
----------------------------
revision 1.632
date: 2015/03/23 23:29:16;  author: gilles;  state: Exp;  lines: +16 -6
Added tests_live_result() call at the end of --livetests
----------------------------
revision 1.631
date: 2015/03/23 00:04:04;  author: gilles;  state: Exp;  lines: +52 -41
README part review.
----------------------------
revision 1.630
date: 2015/03/20 03:07:59;  author: gilles;  state: Exp;  lines: +93 -52
Bugfix. Made --tests succeed on Windows. At least at home.
----------------------------
revision 1.629
date: 2015/03/19 03:43:24;  author: gilles;  state: Exp;  lines: +10 -16
Usability. Better output of folders excluded by --exclude and folders included by --include
----------------------------
revision 1.628
date: 2015/03/19 03:03:28;  author: gilles;  state: Exp;  lines: +80 -38
Bugfix. tests_imapsync_basename only check substring imapsync in the command name used.
Feature. Added --maxlinelengthcmd that will be called upon when a line over --maxlinelength is detected. --maxlinelengthcmd 'reformime -r7' on Linux.
----------------------------
revision 1.627
date: 2015/03/16 15:55:57;  author: gilles;  state: Exp;  lines: +34 -21
Added --testslive
----------------------------
revision 1.626
date: 2015/03/15 02:52:43;  author: gilles;  state: Exp;  lines: +20 -20
Update tests_skipmess()
----------------------------
revision 1.625
date: 2015/03/14 00:32:41;  author: gilles;  state: Exp;  lines: +31 -15
Bugfix. New disarmreadreceipts was buggy in IMAP. Fixed. \r in the beginning.
----------------------------
revision 1.624
date: 2015/03/13 02:05:12;  author: gilles;  state: Exp;  lines: +41 -18
Searching for "deep recursion" with skipmess on "Partial" messages. Not found.
----------------------------
revision 1.623
date: 2015/03/12 16:33:59;  author: gilles;  state: Exp;  lines: +21 -6
Made check folders exist on host1 independent of checkselectable.
----------------------------
revision 1.622
date: 2015/03/12 16:28:38;  author: gilles;  state: Exp;  lines: +24 -11
Bugfix. --folderfirst and --folderlast generated an error when their value folder does not exist. Existence is checked.
----------------------------
revision 1.621
date: 2015/03/12 10:40:11;  author: gilles;  state: Exp;  lines: +86 -21
Bugfix --disarmreadreceipts last fix was a bad one. In IMAP \n is \r\n.
Added error handling for --pipemess
Adapted tests for "Content-Type: Message/Partial" --slipmess
----------------------------
revision 1.620
date: 2015/03/10 04:07:33;  author: gilles;  state: Exp;  lines: +141 -10
Bugfix. --disarmreadreceipts used to change Disposition-Notification-To in the body when not available in the header. Now never changed in the body in all cases.
----------------------------
revision 1.619
date: 2015/03/10 03:13:30;  author: gilles;  state: Exp;  lines: +301 -22
Use \x00 as a separator to detect --delete 2, instead of Â¤.
Added tests for --skipmess, especially for header "Content-Type: Message/Partial"
Bug detected --disarmreadreceipts isn't correct. Added tests and fix in tests.
Added tests in tests_regexmess(). Disposition-Notification-To: better handled.
----------------------------
revision 1.618
date: 2015/03/07 04:38:59;  author: gilles;  state: Exp;  lines: +261 -205
Added --pipemess in order to pass all message to an external filter tool like "reformime -r7".
----------------------------
revision 1.617
date: 2015/03/04 01:09:50;  author: gilles;  state: Exp;  lines: +18 -19
Link to http://www.imap.org/ changed to archive.org.
----------------------------
revision 1.616
date: 2015/03/02 23:14:42;  author: gilles;  state: Exp;  lines: +86 -10
Added xoauth2 support. Thanks to Joaquin Lopez.
----------------------------
revision 1.615
date: 2015/03/01 23:26:10;  author: gilles;  state: Exp;  lines: +76 -46
Fixed tests with "header_line_normalize: remove last blanks".
Remove the last blanks ( Gmail bug ) to identify message with headers.
Term::ReadKey and IO::Socket::SSL now in use statements instead of require (so they became mandatory).
Change list of use pragmas order to facilitate reading.
----------------------------
revision 1.614
date: 2015/02/22 22:43:16;  author: gilles;  state: Exp;  lines: +90 -46
Added inline help.
About --nofoldersizes, foldernames listings, --passfile1 --passfile2.
Change usage order.
----------------------------
revision 1.613
date: 2015/02/22 01:08:51;  author: gilles;  state: Exp;  lines: +23 -10
Fixed issue with 1282658400 and logfile() by and system upgrade. Looks like Ubuntu 10.4 was buggy.
----------------------------
revision 1.612
date: 2015/02/03 23:20:51;  author: gilles;  state: Exp;  lines: +17 -13
Fixed tests_logfile() when TZ is not mine.
  Works for epoch 0 but found a difference for 1282658400
----------------------------
revision 1.611
date: 2015/02/02 16:14:43;  author: gilles;  state: Exp;  lines: +18 -18
Started inline help; talk about options everywhere it means and help to lean imapsync.
Change default useheader. Now it is really like  --useheader "Message-Id" --useheader "Received"
HMailServer replies two lines with --useheader "Message-Id" --useheader "Message-ID" in older releases.
----------------------------
revision 1.610
date: 2015/01/20 12:07:30;  author: gilles;  state: Exp;  lines: +21 -15
Bugfix in imap_utf7_decode() + must not be escaped.
----------------------------
revision 1.609
date: 2014/11/28 17:06:53;  author: gilles;  state: Exp;  lines: +14 -8
Bugfix. --skipmess was not skipping.
----------------------------
revision 1.608
date: 2014/11/28 16:47:29;  author: gilles;  state: Exp;  lines: +95 -12
Added --skipmess to skip messages matching a regex.
Example --skipmess 'm/[\x80-ff]/'
----------------------------
revision 1.607
date: 2014/11/14 16:25:06;  author: gilles;  state: Exp;  lines: +46 -40
Added several checks if IsUnconnected. Goal avoid imap commands while disconnected.
----------------------------
revision 1.606
date: 2014/11/14 14:49:13;  author: gilles;  state: Exp;  lines: +16 -13
Added total size transferred after each message copied.
Added number of total to be synced as a denominator dddd after each message copied, nnn/dddd, where nnn is the number of messages copied.
----------------------------
revision 1.605
date: 2014/11/11 00:00:37;  author: gilles;  state: Exp;  lines: +40 -10
Bugfix. On Windows file path with brackets [] are special. [a] must be written [[]a[]]
----------------------------
revision 1.604
date: 2014/11/08 00:29:26;  author: gilles;  state: Exp;  lines: +36 -9
Added --skipemptyfolders to skip empty host1 folders. They are not created on host2.
----------------------------
revision 1.603
date: 2014/11/07 22:06:33;  author: gilles;  state: Exp;  lines: +26 -26
Typo from previous save with gedit and Â¤
----------------------------
revision 1.602
date: 2014/11/07 21:57:57;  author: gilles;  state: Exp;  lines: +82 -19
Added utf8 output for folder names that use special characters in utf7imap
----------------------------
revision 1.601
date: 2014/10/28 10:48:07;  author: gilles;  state: Exp;  lines: +22 -22
Moved foldersizes call after folders lists print.
----------------------------
revision 1.600
date: 2014/10/27 10:41:52;  author: gilles;  state: Exp;  lines: +8 -8
Remove /x from regex applied with --include and --exclude. Blanks no longer have to be explicit with \ or [ ].
----------------------------
revision 1.599
date: 2014/10/26 23:42:12;  author: gilles;  state: Exp;  lines: +14 -10
Added help usage for --nomixfolders
----------------------------
revision 1.598
date: 2014/10/21 00:27:07;  author: gilles;  state: Exp;  lines: +20 -7
Added tests to check --regextrans2 's,(.*),\L$1,'
Exchange issue with folders with same name and --delete2.
----------------------------
revision 1.597
date: 2014/10/06 10:48:26;  author: gilles;  state: Exp;  lines: +12 -11
Changed --nomixdiffcasefolders to --nomixfolders.
Bugfix. --nomixdiffcasefolders was not parsed in command line so it did not work.
----------------------------
revision 1.596
date: 2014/09/04 17:17:36;  author: gilles;  state: Exp;  lines: +11 -6
Added --logfile in help output.
Added --nolog   in help output.
----------------------------
revision 1.595
date: 2014/09/01 19:39:16;  author: gilles;  state: Exp;  lines: +7 -7
Changed output, no examine anymore, only select.
----------------------------
revision 1.594
date: 2014/08/16 22:40:02;  author: gilles;  state: Exp;  lines: +14 -9
Fixed "imapsync doesn't see created folders in stats phase". Second time.
----------------------------
revision 1.593
date: 2014/07/08 11:19:43;  author: gilles;  state: Exp;  lines: +18 -7
Added --nomixdiffcasefolders to avoid merging folders that are considered different on host1 but the same on destination host2 because of case sensitivities and insensitivities.
----------------------------
revision 1.592
date: 2014/05/22 10:03:17;  author: gilles;  state: Exp;  lines: +23 -12
Bugfix. Make TLS works with last IO::Socket::SSL default value (SSL_verify_mode => 'SSL_VERIFY_NONE') in tls.
----------------------------
revision 1.591
date: 2014/05/22 01:32:52;  author: gilles;  state: Exp;  lines: +30 -19
Bugfix. IO::Tee and Open3 in backstic() were incompatible.
FailedBugFix. Tried to fix Tls issue "ERROR: Unable to start TLS: SSL connect attempt failed with unknown error error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed at c:/strawberry/perl/site/lib/Mail/IMAPClient.pm line 455." No success.
----------------------------
revision 1.590
date: 2014/05/20 23:07:14;  author: gilles;  state: Exp;  lines: +12 -6
Added option --disarmreadreceipts to fix resending read receipts with Exchange as host2.
----------------------------
revision 1.589
date: 2014/05/20 21:35:16;  author: gilles;  state: Exp;  lines: +93 -37
Added logging by default in subdirectory LOG_imapsync/.
Added option --log. --log is on by default. --nolog to disable logging.
Added option --logfile. Default is like LOG_imapsync/YYYY_MM_DD_HH_MM_SS_user2.txt
where YYYY_MM_DD_HH_MM_SS is the current date and time like 2014_05_20_23_45_10
Use IO::Tee Perl module for logging.
Fixed bug when creating folders on host2 with sep2 to \\ (Lotus Notes).
Updated the code to easily switch on --noreleasecheck by default.
----------------------------
revision 1.588
date: 2014/05/15 10:36:10;  author: gilles;  state: Exp;  lines: +18 -11
Added FTGate support (no EXAMINE).
----------------------------
revision 1.587
date: 2014/05/09 17:03:27;  author: gilles;  state: Exp;  lines: +14 -7
Typo when advising about prefix.
Easy way to switch releasecheck of by default.
----------------------------
revision 1.586
date: 2014/04/10 16:02:39;  author: gilles;  state: Exp;  lines: +9 -7
Just a test for good_date and pop2imap
----------------------------
revision 1.585
date: 2014/02/17 15:24:34;  author: gilles;  state: Exp;  lines: +39 -34
Warn syncing messges will not be simulated when --dry mode is on and folder  on host2 does not exist yet.
Try to get folder size when a folder on host2 has the same name but with a different case like OLD_MAIL -> old_mail. Avoid "does not exist" output.
----------------------------
revision 1.584
date: 2014/02/05 00:40:59;  author: gilles;  state: Exp;  lines: +77 -50
Debug. Print separator given by NAMESPACE even when --sep1 oe --sep2 is used.
Debug. Prints prefix given by NAMESPACE even when --prefix1 or --prefix2 is used.
(Preparation for advising not to use --prefix unless suggested)
----------------------------
revision 1.583
date: 2014/02/04 03:04:35;  author: gilles;  state: Exp;  lines: +15 -11
Bug fix. --ssl1 --tls2 was buggy because of default SSL_VERIFY_PEER. "Can not go to tls encryption on [localhost]:Unable to start TLS: Cannot determine peer hostname for verificationerror:00000000:lib(0):func(0):reason(0)"
----------------------------
revision 1.582
date: 2014/01/24 01:43:19;  author: gilles;  state: Exp;  lines: +20 -12
Bugfix. Check if going to tls is ok, exit otherwise with explicit error message.
Thanks to Dennis Schridde for reporting this ugly bug.
----------------------------
revision 1.581
date: 2014/01/15 02:42:06;  author: gilles;  state: Exp;  lines: +41 -15
Added --debugmaxlinelength
Added --minmaxlinelength to select messages with long lines only.
----------------------------
revision 1.580
date: 2013/12/25 02:52:36;  author: gilles;  state: Exp;  lines: +51 -27
Added --skipcrossduplicates to avoid copying messages that are already copied in another folder.
Added --debugcrossduplicates to print which messages (UIDs) are skipped with --skipcrossduplicates (and in what other folders they are).
----------------------------
revision 1.579
date: 2013/12/18 13:53:19;  author: gilles;  state: Exp;  lines: +9 -8
--maxmessagespersecond, value can be float like 3.2
----------------------------
revision 1.578
date: 2013/12/17 02:14:09;  author: gilles;  state: Exp;  lines: +73 -9
Added --maxbytespersecond to limit byte transfer rate.
Added --maxmessagespersecond to limit messages tranfer rate (office365 throttle limitation).
----------------------------
revision 1.577
date: 2013/12/05 05:57:51;  author: gilles;  state: Exp;  lines: +28 -10
Added tests to play with win32 \\?\C:\TEMP syntax and try to solve long path bug.
----------------------------
revision 1.576
date: 2013/11/19 14:37:24;  author: gilles;  state: Exp;  lines: +19 -14
Added --debugmemory option that prints memory consumption after each message is copied.
----------------------------
revision 1.575
date: 2013/11/06 13:55:38;  author: gilles;  state: Exp;  lines: +12 -7
Do not append message if the fetch failed.
----------------------------
revision 1.574
date: 2013/10/28 16:22:04;  author: gilles;  state: Exp;  lines: +16 -8
Added --create_folder_old in case users want the old behavior of create_folder().
----------------------------
revision 1.573
date: 2013/10/28 14:44:10;  author: gilles;  state: Exp;  lines: +48 -7
Bugfix. Applied patch for create_folder() and nested folders. Thanks to Erik Torsner.
----------------------------
revision 1.572
date: 2013/10/27 02:04:01;  author: gilles;  state: Exp;  lines: +13 -8
Bug fix. Final statistics were avoided for newly created folders.
----------------------------
revision 1.571
date: 2013/10/25 14:34:27;  author: gilles;  state: Exp;  lines: +58 -20
Added --folderfirst <string> : Sync this folder first. --folderfirst "Work"
Added --folderlast  <string> : Sync this folder last. --folderlast "[Gmail]/All Mail"
--folderlast  <string> : then this one, etc.
----------------------------
revision 1.570
date: 2013/10/25 12:52:02;  author: gilles;  state: Exp;  lines: +7 -7
--delete2foldersonly Junk example.
----------------------------
revision 1.569
date: 2013/10/16 21:58:17;  author: gilles;  state: Exp;  lines: +125 -39
Fixed bug on Windows with --tmpdir "E:\TEMP". The colon was badly converted to _, ending with "E_\TEMP".
The fix also automatically moves the old cache to the new one if the new does not exist yet.
Fix. Example for --delete2foldersonly "/Junk$/" in help message.
----------------------------
revision 1.568
date: 2013/09/28 02:43:51;  author: gilles;  state: Exp;  lines: +25 -13
Bug fix. On Win32 trailing blanc in cache dir name raized an error. Blanc now move to underscore _.
----------------------------
revision 1.567
date: 2013/09/18 20:38:10;  author: gilles;  state: Exp;  lines: +8 -7
Fixed a warning when RFC822.SIZE is null or undef.
----------------------------
revision 1.566
date: 2013/09/13 13:23:41;  author: gilles;  state: Exp;  lines: +11 -12
Added --authmech EXTERNAL. Not tested yet.
----------------------------
revision 1.565
date: 2013/09/13 01:16:20;  author: gilles;  state: Exp;  lines: +8 -6
Fusemail success.
RackSpace success.
----------------------------
revision 1.564
date: 2013/08/18 19:28:47;  author: gilles;  state: Exp;  lines: +114 -22
Adapted behavior for allowing --maxdate --mindate with --noabletosearch. Use internat date instead of Date: header.
----------------------------
revision 1.563
date: 2013/08/16 00:59:30;  author: gilles;  state: Exp;  lines: +8 -7
Added QQMail success.
----------------------------
revision 1.562
date: 2013/08/16 00:41:48;  author: gilles;  state: Exp;  lines: +38 -16
Speed fix. Does not resync the flags when flags on host2 do not respect RFC. \Seen -> \SEEN. imapsync detects this as same flag.
Atmail 6.x [host1] success.
Fix for QQMail IMAP4Server. With --noabletosearch the previous fetch with 1:999999 is replaced by an uidnext request.
----------------------------
revision 1.561
date: 2013/08/09 23:49:23;  author: gilles;  state: Exp;  lines: +15 -8
Added --timeout in the --help output.
Default timeout is 120 seconds now (was nothing by imapsync, 600 with underlying modules).
----------------------------
revision 1.560
date: 2013/08/09 23:06:04;  author: gilles;  state: Exp;  lines: +7 -7
Added --addheader suggestion for messages with no header found.
----------------------------
revision 1.559
date: 2013/08/06 11:33:53;  author: gilles;  state: Exp;  lines: +7 -7
Apply same treatment to --delete2duplicates as --delete2. If --uidexpunge2 can be done, do it, else do --expunge2 (unless --nouidexpunge2 or --noexpunge2).
----------------------------
revision 1.558
date: 2013/08/03 01:13:37;  author: gilles;  state: Exp;  lines: +18 -16
Bugfix. SSL_version was not well treated.
----------------------------
revision 1.557
date: 2013/08/01 19:28:09;  author: gilles;  state: Exp;  lines: +7 -7
Bugfix. max_line_length('a') was wrong.
----------------------------
revision 1.556
date: 2013/08/01 00:10:03;  author: gilles;  state: Exp;  lines: +42 -28
Added --ssl1_SSL_version ssl2_SSL_version option to change default SSL_version.
For example --ssl2_SSL_version SSLv3 fix connection to cmail.cmich.edu on Windows.
Fixed a warning about regex with \E on Perl >= 5.16
----------------------------
revision 1.555
date: 2013/07/23 11:41:10;  author: gilles;  state: Exp;  lines: +7 -6
Fix warning for extract_header()
----------------------------
revision 1.554
date: 2013/07/22 01:23:12;  author: gilles;  state: Exp;  lines: +7 -7
typo - when error printed.
----------------------------
revision 1.553
date: 2013/07/22 01:18:30;  author: gilles;  state: Exp;  lines: +9 -7
Bug fix. Header lines can contain \r\n.
----------------------------
revision 1.552
date: 2013/07/22 00:51:52;  author: gilles;  state: Exp;  lines: +74 -11
Added "Subject: lala" when line length exceeds maxlinelength to help ti find what are those messages. Added also size, flags and internal date.
----------------------------
revision 1.551
date: 2013/07/19 14:05:50;  author: gilles;  state: Exp;  lines: +698 -650
Added option --maxlinelength to skip messages whose max line length is over a number of bytes.
----------------------------
revision 1.550
date: 2013/07/19 00:13:22;  author: gilles;  state: Exp;  lines: +1029 -585
Added success Domino 8.5.2
Added option --messageidnodomain to fix Mailenable bug changing the domain part of Message-Id header, and avoid duplicates
Added option --syncflagsaftercopy to fix Mailenable bug not getting the flags with the APPEND.
Added back the banner of IMAP servers, ie, the first line given after the connection established.
Added --fixInboxINBOX, turned on by default, to map automatically Inbox INBOX folder names.
IMAP server removing consecutive spaces on the header part doesn't generate duplicates (MailEnable does that).
Better output of mailbox sizes in human style (could be 1024.00 Kib, now it is 1.000 Mib). Changed bytes_display_string().
Option --debugflags now prints flags on first sync (the copy) and also the PERMANENTFLAGS outpout.
Fixed nearly 200 perlcritic at level 3, all level 4. Still 5 eval "" at level 5 and 12 critics at level 3.
----------------------------
revision 1.549
date: 2013/07/06 01:09:03;  author: gilles;  state: Exp;  lines: +81 -11
Fixed two bugs coming from adding return(  ) at the end of functions.
Added tests to remove Disposition-Notification-To: header with regexmess:.
----------------------------
revision 1.548
date: 2013/07/04 02:25:05;  author: gilles;  state: Exp;  lines: +247 -201
Removed all perlcritic severity 4. Still 5 critics at severity 5.
98 critics severity 4 fixed.
----------------------------
revision 1.547
date: 2013/07/03 01:24:34;  author: gilles;  state: Exp;  lines: +11 -8
DBOX 2.41 success.
Kerio 8 success.
----------------------------
revision 1.546
date: 2013/07/02 03:49:32;  author: gilles;  state: Exp;  lines: +14 -8
Fixed IO::Socket::IP bug on Win32?
Removed SSL::DEBUG
Added "copying.." in dry mode.
----------------------------
revision 1.545
date: 2013/06/06 20:43:56;  author: gilles;  state: Exp;  lines: +27 -125
Rmoved sub starttls()
Removed sub myconnect()
Removed sub RawSocket2()
Applied patch from Jim Klimov to handle proxyauth failures
----------------------------
revision 1.544
date: 2013/06/02 23:36:16;  author: gilles;  state: Exp;  lines: +25 -24
Remove myconnect() use. Replaced by $imap->connect()
Removed sub Split add in Mail::IMAPClient
----------------------------
revision 1.543
date: 2013/05/22 01:22:03;  author: gilles;  state: Exp;  lines: +12 -7
SSL_verify_mode 0 to avoid warning about Man-In-The-Middle.
----------------------------
revision 1.542
date: 2013/05/06 08:30:35;  author: gilles;  state: Exp;  lines: +7 -7
Syntax with "" fix.
----------------------------
revision 1.541
date: 2013/05/06 07:10:29;  author: gilles;  state: Exp;  lines: +111 -74
Started perlcritic corrections. Left 4 eval at level 5.
----------------------------
revision 1.540
date: 2013/04/22 11:05:51;  author: gilles;  state: Exp;  lines: +11 -982
Removed old 2.2.9 Mail::IMAPClient patch stuff.
----------------------------
revision 1.539
date: 2013/04/22 00:54:22;  author: gilles;  state: Exp;  lines: +12 -12
Fixed require namespace with uri_escape() calls.
----------------------------
revision 1.538
date: 2013/04/22 00:46:54;  author: gilles;  state: Exp;  lines: +94 -9
Added XOAUTH authentication. Thanks to Eduardo Bortoluzzi Junior.
----------------------------
revision 1.537
date: 2013/04/19 06:59:17;  author: gilles;  state: Exp;  lines: +9 -9
MDaemon 9.6.5, Surgemail 6.3d-72
----------------------------
revision 1.536
date: 2013/04/17 14:33:12;  author: gilles;  state: Exp;  lines: +7 -7
Added --delete1 as an alias for --delete
----------------------------
revision 1.535
date: 2013/04/17 12:47:58;  author: gilles;  state: Exp;  lines: +42 -33
Updated README part.
----------------------------
revision 1.534
date: 2013/04/16 15:31:50;  author: gilles;  state: Exp;  lines: +26 -17
Added --search1 and --search2 to allow different searches on each host.
----------------------------
revision 1.533
date: 2013/04/10 12:03:39;  author: gilles;  state: Exp;  lines: +8 -6
Comment in select_msgs()
----------------------------
revision 1.532
date: 2013/04/10 08:33:52;  author: gilles;  state: Exp;  lines: +11 -9
Fixed Scott issue again. Was not enough.
----------------------------
revision 1.531
date: 2013/04/09 08:10:38;  author: gilles;  state: Exp;  lines: +7 -7
Fixed Scott issue, took long time (all messages list) even with --useuid --delete --nousecache --maxage 1
----------------------------
revision 1.530
date: 2013/04/09 08:00:54;  author: gilles;  state: Exp;  lines: +13 -14
Clarified select_msgs() a little.
----------------------------
revision 1.529
date: 2013/03/29 14:32:26;  author: gilles;  state: Exp;  lines: +14 -12
Phil patch.
----------------------------
revision 1.528
date: 2013/03/29 03:12:45;  author: gilles;  state: Exp;  lines: +60 -21
Applied Phil patch.
----------------------------
revision 1.527
date: 2013/03/29 01:15:05;  author: gilles;  state: Exp;  lines: +10 -8
Mail2World Server
Zarafa Gateway
----------------------------
revision 1.526
date: 2013/02/27 22:40:45;  author: gilles;  state: Exp;  lines: +9 -7
Apple Server
Zarafa server
----------------------------
revision 1.525
date: 2013/02/05 12:52:10;  author: gilles;  state: Exp;  lines: +9 -9
Typo synchronise -> synchronize.
----------------------------
revision 1.524
date: 2013/01/31 20:41:29;  author: gilles;  state: Exp;  lines: +8 -7
Small fix in help message.
\\D
----------------------------
revision 1.523
date: 2013/01/31 14:12:21;  author: gilles;  state: Exp;  lines: +118 -99
Reorganized the --help message.
----------------------------
revision 1.522
date: 2013/01/28 02:50:49;  author: gilles;  state: Exp;  lines: +13 -13
Printing info with several host1 folder going to one host2 folder is in --debug mode now.
----------------------------
revision 1.521
date: 2013/01/23 07:48:01;  author: gilles;  state: Exp;  lines: +7 -7
Speed. --nocheckmessageexists is activated by default since --checkmessageexists often slow down transfers too much.
----------------------------
revision 1.520
date: 2013/01/23 07:41:48;  author: gilles;  state: Exp;  lines: +103 -30
Fix. Removed reference to DWTFPL since license is NOLIMIT now.
License file is LICENSE now, no longer COPYING.
Fix. Handle the case where several folders on host1 go to one folder on host2 with --delete2 option.
     The bug was imapsync was copying messages and deleting them on next folder.
----------------------------
revision 1.519
date: 2012/12/31 09:51:40;  author: gilles;  state: Exp;  lines: +11 -9
Usability fix. --foldersizesatend is on if --foldersizes is on. Off if --nofoldersizesatend
----------------------------
revision 1.518
date: 2012/12/24 00:27:34;  author: gilles;  state: Exp;  lines: +9 -6
Bugfix. When identtifying with header, change tabulations to spaces (Gmail bug on with "Received:" on multilines).
----------------------------
revision 1.517
date: 2012/12/11 07:13:04;  author: gilles;  state: Exp;  lines: +17 -10
Added Deerfield VisNetic MailServer 5.8.6
Bugfix. Automatic --nocheckmessageexists when --noabletosearch is set.
----------------------------
revision 1.516
date: 2012/11/02 22:15:04;  author: gilles;  state: Exp;  lines: +43 -38
Added current date at the beginning of the run, useful when imapsync doesn't end properly or hasn't finished yet.
Better output for diff statistics.
----------------------------
revision 1.515
date: 2012/10/31 12:56:02;  author: gilles;  state: Exp;  lines: +12 -9
Added Initial difference to compare it with Final difference.
----------------------------
revision 1.514
date: 2012/10/31 01:39:38;  author: gilles;  state: Exp;  lines: +32 -16
Added --foldersizesatend and --nofoldersizesatend, on by default.
Added statistic host2 minus host1: number of messages and bytes.
----------------------------
revision 1.513
date: 2012/10/30 22:31:49;  author: gilles;  state: Exp;  lines: +40 -19
Add --fixslash2 to avoid 'Invalid mailbox name' when --sep2 is not / and sep1 is / and host1 folders contain --sep2 characters.
----------------------------
revision 1.512
date: 2012/10/30 01:44:26;  author: gilles;  state: Exp;  lines: +22 -8
Added option --showpasswords
--showpasswords        : shows passwords on output instead of "MASKED".
Off by default.
----------------------------
revision 1.511
date: 2012/10/27 22:37:57;  author: gilles;  state: Exp;  lines: +44 -20
Added --delete2duplicates; Delete messages in host2 that are duplicates.
--delete2duplicates is on when --delete2 is on unless --nodelete2duplicates.
----------------------------
revision 1.510
date: 2012/10/27 15:18:44;  author: gilles;  state: Exp;  lines: +36 -30
Added --pidfilelocking option to abort in case another imapsync may be running.
----------------------------
revision 1.509
date: 2012/10/24 14:57:56;  author: gilles;  state: Exp;  lines: +41 -13
Added option --noabletosearch to allow listing messages without SEARCH command. Hack for imap server softalk 7.6.4. (8.6 is fine about search)
----------------------------
revision 1.508
date: 2012/09/10 21:10:13;  author: gilles;  state: Exp;  lines: +81 -17
Added ETA after each copy. Estimated Time of Arrival.
----------------------------
revision 1.507
date: 2012/09/09 12:57:44;  author: gilles;  state: Exp;  lines: +20 -12
Bugfix. Previous fix about characters *|?:"<> in cache path was not complete.
----------------------------
revision 1.506
date: 2012/09/07 14:51:00;  author: gilles;  state: Exp;  lines: +10 -7
Option. Added --noexpungeaftereach to speedup --delete --expunge from Gmail.
----------------------------
revision 1.505
date: 2012/09/07 10:40:55;  author: gilles;  state: Exp;  lines: +10 -10
Usability. Added Host1 or Host2 before "Nb messages" "Total size" with --foldersiszes
----------------------------
revision 1.504
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.
Documentation. Example for --delete2foldersbutnot
----------------------------
revision 1.499
date: 2012/07/30 10:56:26;  author: gilles;  state: Exp;  lines: +45 -31
Bugfix. Check the return of touch calls.
----------------------------
revision 1.498
date: 2012/07/20 14:28:45;  author: gilles;  state: Exp;  lines: +22 -6
Added several connection ckecks like old good imapsync-1.181 to imapsync-1.398
----------------------------
revision 1.497
date: 2012/07/14 19:48:04;  author: gilles;  state: Exp;  lines: +43 -28
Added --authmech PREAUTH capabiliy. (Patch from David Abrahams).
----------------------------
revision 1.496
date: 2012/07/12 20:53:49;  author: gilles;  state: Exp;  lines: +12 -11
Bugfix. Unsubsribe folder before deleting it (can bug sometimes).
----------------------------
revision 1.495
date: 2012/07/11 04:56:33;  author: gilles;  state: Exp;  lines: +7 -8
Bugfix about last patch $h2_total_bytes_duplicate
----------------------------
revision 1.494
date: 2012/07/11 03:50:43;  author: gilles;  state: Exp;  lines: +40 -12
Usability. Use KiB MiB GiB etc in result summary. Patch from Mark Atwood.
----------------------------
revision 1.493
date: 2012/06/30 00:28:51;  author: gilles;  state: Exp;  lines: +9 -9
Bug fix. Port 143 when --ssl and --tls together.
----------------------------
revision 1.492
date: 2012/06/29 23:32:04;  author: gilles;  state: Exp;  lines: +7 -7
Bug fix. Don't filter flag when --nofilterflags is used during the message copy.
----------------------------
revision 1.491
date: 2012/06/20 09:53:27;  author: gilles;  state: Exp;  lines: +8 -8
Added value of internal date in --debug mode.
----------------------------
revision 1.490
date: 2012/05/22 21:03:40;  author: gilles;  state: Exp;  lines: +10 -14
Updated Cyrus info.
----------------------------
revision 1.489
date: 2012/05/22 20:54:13;  author: gilles;  state: Exp;  lines: +20 -14
Print dry mode when expunging.
----------------------------
revision 1.488
date: 2012/04/15 17:38:21;  author: gilles;  state: Exp;  lines: +8 -8
Reverse patch applied in 1.485
It was "2) eval and --delete2foldersonly --delete2foldersbutnot that need also good escaping."
The "good" escaping was bad. No escaping needed. It permits imapsync variables like ${h2_sep}
in --delete2foldersonly
But good escaping has to be done in parameter value like --delete2foldersbutnot /\[Gmail\]/
instead of --delete2foldersbutnot /[Gmail]/ (for example).
----------------------------
revision 1.487
date: 2012/02/29 05:29:21;  author: gilles;  state: Exp;  lines: +7 -7
Fixed a useless Perl warning.
----------------------------
revision 1.486
date: 2012/02/23 23:05:49;  author: gilles;  state: Exp;  lines: +10 -10
Removed "Memory/biggest message ratio" in final stats, useless now.
Fixed a warning about memory_consumption when the call fails.
----------------------------
revision 1.485
date: 2012/02/19 22:24:23;  author: gilles;  state: Exp;  lines: +16 -12
Applied Pierre GUILLAUME patch about
 1) $cache_dir and bsd_globs() that needs escaped characters.
 2) eval and --delete2foldersonly --delete2foldersbutnot that need also good escaping. Thanks Pierre.
----------------------------
revision 1.484
date: 2012/02/07 00:19:33;  author: gilles;  state: Exp;  lines: +8 -7
Just a comment about examine versus select on host1.
----------------------------
revision 1.483
date: 2012/02/06 23:16:06;  author: gilles;  state: Exp;  lines: +7 -7
Bug fix. Read-only mode on host1 can't be done with --delete (back to select instead of examine).
----------------------------
revision 1.482
date: 2012/01/23 00:39:12;  author: gilles;  state: Exp;  lines: +25 -10
Added --exitwhenover option to avoid locking when transfers exceed maximum limit,
See for example http://support.google.com/a/bin/answer.py?hl=en&answer=1071518
--exitwhenover 2500000000 if host1 is Gmail
--exitwhenover  500000000 if host2 is Gmail
----------------------------
revision 1.481
date: 2012/01/22 23:43:02;  author: gilles;  state: Exp;  lines: +24 -9
Check if a message exists before fetching it (could have been deleted recently)
----------------------------
revision 1.480
date: 2012/01/08 05:11:03;  author: gilles;  state: Exp;  lines: +8 -7
a1.net fix.
----------------------------
revision 1.479
date: 2011/12/16 05:30:27;  author: gilles;  state: Exp;  lines: +33 -26
Unified outout in --debug mode. Lines start with Host1 or Host2.
----------------------------
revision 1.478
date: 2011/12/16 04:10:32;  author: gilles;  state: Exp;  lines: +11 -9
Changed output about messages ignored to better reflect what is going on.
----------------------------
revision 1.477
date: 2011/12/11 10:07:09;  author: gilles;  state: Exp;  lines: +8 -8
--split down to 100 to follow the recommendation of RFC2683 section 3.2.1.5
Thanks to Phil Pearl for this advice.
----------------------------
revision 1.476
date: 2011/12/10 01:33:50;  author: gilles;  state: Exp;  lines: +34 -8
Applied Ameir Abdeldayem patch to deal with errors like
"Host1 Sent/15 size 1428 ignored (no header so we ignore this message)"
It happens with Sent folder when no Message-Id nor Received header
are defined in a message.
----------------------------
revision 1.475
date: 2011/12/08 08:23:16;  author: gilles;  state: Exp;  lines: +7 -7
Default header used to identify a message are now "Message-Id" and "Received".
----------------------------
revision 1.474
date: 2011/12/02 20:30:16;  author: gilles;  state: Exp;  lines: +9 -9
Default down from 1000 to --split1 500. (Cyrus "Word too long")
----------------------------
revision 1.473
date: 2011/12/01 14:06:23;  author: gilles;  state: Exp;  lines: +8 -8
Fixed output. fetch_hash_2 no longer exists.
----------------------------
revision 1.472
date: 2011/12/01 12:44:48;  author: gilles;  state: Exp;  lines: +11 -6
Added start and end dates in the final statistics.
----------------------------
revision 1.471
date: 2011/11/24 09:29:26;  author: gilles;  state: Exp;  lines: +21 -20
Checked and updated "Similar softwares" section in documentation.
----------------------------
revision 1.470
date: 2011/11/23 18:14:20;  author: gilles;  state: Exp;  lines: +7 -7
typo
----------------------------
revision 1.469
date: 2011/11/20 17:44:35;  author: gilles;  state: Exp;  lines: +16 -9
Added --nofilterflags to chech STORE flags ignoring PERMANENTFLAGS (Exchange tests)
----------------------------
revision 1.468
date: 2011/11/18 01:23:37;  author: gilles;  state: Exp;  lines: +33 -105
Replaced fetch_hash_2() calls by normal fetch_hash()
----------------------------
revision 1.467
date: 2011/11/17 15:00:15;  author: gilles;  state: Exp;  lines: +20 -16
Subscribe to host2 folders only for those not already subscribed.
----------------------------
revision 1.466
date: 2011/11/17 14:31:55;  author: gilles;  state: Exp;  lines: +76 -60
Use examine() on host1 instead of select().
----------------------------
revision 1.465
date: 2011/11/17 14:02:53;  author: gilles;  state: Exp;  lines: +22 -22
Changed imapsync homepage from http://www.linux-france.org/prj/imapsync/ to http://imapsync.lamiral.info/
Fix select behavior on host2 to allow Gmail folders that don't exist but that are listed.
----------------------------
revision 1.464
date: 2011/11/14 23:59:46;  author: gilles;  state: Exp;  lines: +8 -8
Replaced // by ? : equivalent to be perl 5.8 compliant.
----------------------------
revision 1.463
date: 2011/11/12 21:58:52;  author: gilles;  state: Exp;  lines: +9 -7
--subscribe is on by defaut.
----------------------------
revision 1.462
date: 2011/10/16 23:48:58;  author: gilles;  state: Exp;  lines: +14 -11
Added --nocacheaftercopy to avoid bad uids in cache with --useuid or --usecache and strange uid generator like dbmail 2.2.17
----------------------------
revision 1.461
date: 2011/10/07 21:02:15;  author: gilles;  state: Exp;  lines: +8 -8
MailEnable
Mirapoint
----------------------------
revision 1.460
date: 2011/09/21 20:19:46;  author: gilles;  state: Exp;  lines: +8 -8
Avoid Perl warning 'Use of uninitialized value $uid1 in exists'. Thanks to Klaus Franken
----------------------------
revision 1.459
date: 2011/09/21 20:10:38;  author: gilles;  state: Exp;  lines: +7 -7
Kerio 7.2.0 Patch 1 as host2
----------------------------
revision 1.458
date: 2011/08/24 22:26:20;  author: gilles;  state: Exp;  lines: +7 -6
Yahoo host1 success.
----------------------------
revision 1.457
date: 2011/08/24 21:55:56;  author: gilles;  state: Exp;  lines: +10 -10
Renamed file.csv to file.txt
----------------------------
revision 1.456
date: 2011/08/24 04:21:30;  author: gilles;  state: Exp;  lines: +15 -13
Help message on --sep when namespace separator is NIL. Yahoo case.
----------------------------
revision 1.455
date: 2011/07/29 03:00:25;  author: gilles;  state: Exp;  lines: +8 -8
Empty default value for $h1_flags $h2_flags to avoid useless Perl warnings.
----------------------------
revision 1.454
date: 2011/07/15 16:17:06;  author: gilles;  state: Exp;  lines: +22 -10
file.csv example
----------------------------
revision 1.453
date: 2011/07/15 00:35:37;  author: gilles;  state: Exp;  lines: +10 -6
MDaemon 12.0.3 failure as host2 (APPEND buggy)
----------------------------
revision 1.452
date: 2011/07/11 00:29:06;  author: gilles;  state: Exp;  lines: +64 -47
Added the --search option allowing to select messages with the powerful IMAP SEARCH command.
----------------------------
revision 1.451
date: 2011/06/30 11:44:38;  author: gilles;  state: Exp;  lines: +7 -8
Added IO::Socket::INET version info.
----------------------------
revision 1.450
date: 2011/06/21 00:17:20;  author: gilles;  state: Exp;  lines: +7 -7
Bugfix. Fixed ps call to work with Solaris 10. Thanks to Daniel Rohde.
----------------------------
revision 1.449
date: 2011/06/16 12:20:42;  author: gilles;  state: Exp;  lines: +13 -10
Kerio 7.2.0P1 success.
MDaemon 12.0.3 success.
----------------------------
revision 1.448
date: 2011/06/03 00:54:15;  author: gilles;  state: Exp;  lines: +9 -9
Bugfix. Date reference to select messages with --maxdate --mindate is the beginning of imapsync run now.
----------------------------
revision 1.447
date: 2011/06/02 00:01:01;  author: gilles;  state: Exp;  lines: +13 -13
Added PERMANENTFLAGS output with --debugflags
----------------------------
revision 1.446
date: 2011/05/31 09:11:18;  author: gilles;  state: Exp;  lines: +17 -17
Bugfix. Try to handle Markus bug in foldersizes() when select_msgs() returns a list of undef.
----------------------------
revision 1.445
date: 2011/05/31 08:00:45;  author: gilles;  state: Exp;  lines: +53 -46
Check if uidexpunge is supported at the beginning of execution, not when needed.
Set --uidexpunge2 if --delete2 or --expunge2 if uidexpunge not supported.
Changed all warn() calls (STDERR) to print calls (STDOUT)
----------------------------
revision 1.444
date: 2011/05/30 15:16:46;  author: gilles;  state: Exp;  lines: +10 -7
good_date() "24 Aug 77" -> "24-Aug-1977"
----------------------------
revision 1.443
date: 2011/05/28 16:50:27;  author: gilles;  state: Exp;  lines: +125 -41
 Patched tests_good_date() and good_date() with Dax Kelson patches.
----------------------------
revision 1.442
date: 2011/05/28 16:14:31;  author: gilles;  state: Exp;  lines: +28 -8
Started code to deal with epoch of messages.
----------------------------
revision 1.441
date: 2011/05/26 01:01:25;  author: gilles;  state: Exp;  lines: +14 -11
Handle better folder creation, not a failure when folder "already exists" during its creation.
----------------------------
revision 1.440
date: 2011/05/26 00:40:51;  author: gilles;  state: Exp;  lines: +28 -28
Replaced default setting. Now --delete2 sets --uidexpunge2 instead of --expunge2 (unless --nouidexpunge2 is set)
----------------------------
revision 1.439
date: 2011/05/25 03:11:41;  author: gilles;  state: Exp;  lines: +65 -9
Added epoch() routine to prepare the safe bidirectional sync (maybe...)
----------------------------
revision 1.438
date: 2011/05/25 00:47:27;  author: gilles;  state: Exp;  lines: +9 -8
Adapted the usage output multiline character to Unix or Win, \ or ^
----------------------------
revision 1.437
date: 2011/05/25 00:29:04;  author: gilles;  state: Exp;  lines: +8 -7
Bugfix. Avoid a "no number" warning when size is null.
----------------------------
revision 1.436
date: 2011/05/23 23:30:20;  author: gilles;  state: Exp;  lines: +8 -12
Added "Date" in the default --useheader list. ("Message-Id", "Message-ID", "Date")
----------------------------
revision 1.435
date: 2011/05/23 23:06:31;  author: gilles;  state: Exp;  lines: +29 -12
Bugfix. Bad header beginning with a blank character.
----------------------------
revision 1.434
date: 2011/05/16 07:16:19;  author: gilles;  state: Exp;  lines: +142 -57
Bugfix. Made --usecache work with --maxage or --maxsize or --min*
----------------------------
revision 1.433
date: 2011/05/16 03:07:59;  author: gilles;  state: Exp;  lines: +191 -49
Improved the way imapsync deals with headers:
 - Stopped getting first 2KB of message. Not a good idea.
 - If $imap2->parse_headers() fails then take the whole header (instead of body).
 - Default is like --useheader Message-Id --useheader Message-ID
 - Use header Message-Id and header Date as sig md5 when taking the whole header.

Better output in debug mode.
----------------------------
revision 1.432
date: 2011/05/15 22:06:19;  author: gilles;  state: Exp;  lines: +8 -7
Options --usecache and --maxsize --minsize can safely be used if --delete is there
----------------------------
revision 1.431
date: 2011/05/15 00:47:03;  author: gilles;  state: Exp;  lines: +17 -8
Added tests of mkpath very long path > 300 char. Win32 fails on them.
----------------------------
revision 1.430
date: 2011/05/14 23:13:06;  author: gilles;  state: Exp;  lines: +14 -9
Bugfix. Added special case for Inbox vs INBOX bug creation ("Couldn't create folder [Inbox] from [INBOX]: 143 NO INBOX already exists!")
----------------------------
revision 1.429
date: 2011/05/14 21:24:31;  author: gilles;  state: Exp;  lines: +8 -8
Adapted regression tests for good_date() when no zone is given.
----------------------------
revision 1.428
date: 2011/05/14 02:31:02;  author: gilles;  state: Exp;  lines: +8 -8
Bugfix. intarnal date needs zone data. Default to  +0000.
----------------------------
revision 1.427
date: 2011/05/14 01:48:07;  author: gilles;  state: Exp;  lines: +15 -13
Bugfix. Starttls() only for 2.2.9
----------------------------
revision 1.426
date: 2011/05/14 01:14:16;  author: gilles;  state: Exp;  lines: +8 -8
Fix. Removed a debug print always printed.
----------------------------
revision 1.425
date: 2011/05/14 00:33:46;  author: gilles;  state: Exp;  lines: +16 -15
Bugfix. Changed the way imapsync knows whether a folder exists or not. Exchange might be happy and stop deconnecting for this reason.
----------------------------
revision 1.424
date: 2011/05/14 00:12:38;  author: gilles;  state: Exp;  lines: +20 -9
Added a warning and die if --usecache and one of  --maxsize--minsize --maxage --minage is used.
----------------------------
revision 1.423
date: 2011/05/13 22:26:01;  author: gilles;  state: Exp;  lines: +23 -12
Bugfix. Reconnections are well done in tls mode now.
Zimbra 5.0.24_GA_3356.RHEL4 [host1]
Exchange 2010 SP1 RU2 [host2]
Added --debugsleep to have to play will kill and reconnections.
----------------------------
revision 1.422
date: 2011/05/08 17:21:38;  author: gilles;  state: Exp;  lines: +17 -12
Added --debugLIST to track messages list uid or number only.
Bugfix: a lack of variable initialisation caused to fetch no existing messages.
  The APPEND error then the FETCH 0 byte error may be fixed now.
----------------------------
revision 1.421
date: 2011/05/08 12:28:10;  author: gilles;  state: Exp;  lines: +8 -8
relogin1 before each folder select.
----------------------------
revision 1.420
date: 2011/05/08 00:54:05;  author: gilles;  state: Exp;  lines: +15 -18
--splitX are set into sub login_imap() now.
----------------------------
revision 1.419
date: 2011/05/08 00:36:36;  author: gilles;  state: Exp;  lines: +58 -8
Added --relogin1 option (--relogin1 5) to force a reconnection when FETCH message fails on host1.
----------------------------
revision 1.418
date: 2011/05/07 22:15:36;  author: gilles;  state: Exp;  lines: +95 -38
Added --debugcontent to avoid debugging content (can be big) with --debug option.
Added --debugflags to permit flag debugging only.
Added --flagsCase to correct flag case that are not RFC compliant \SEEN -> \Seen (on by default).
Added output to track 0 byte messages during the fetch on host1.
----------------------------
revision 1.417
date: 2011/05/05 16:12:02;  author: gilles;  state: Exp;  lines: +7 -7
Bugfix. --proxyauth2 was setting proxyauth1!
Thanks to Denis BREAN!
----------------------------
revision 1.416
date: 2011/05/01 20:44:40;  author: gilles;  state: Exp;  lines: +8 -8
MDaemon 12
Exchange 6.5 host1
----------------------------
revision 1.415
date: 2011/04/30 15:33:31;  author: gilles;  state: Exp;  lines: +20 -14
Bugfix. Modified create_folder() to avoid Inbox -> INBOX problem ("already exists").
----------------------------
revision 1.414
date: 2011/04/30 00:25:38;  author: gilles;  state: Exp;  lines: +41 -19
Bugfix. --maxsize --minsize now work with --useuid
Bugfix. flag sync of already transfered messages now take care of --maxsize --minsize options.
----------------------------
revision 1.413
date: 2011/04/28 22:55:48;  author: gilles;  state: Exp;  lines: +25 -12
--delete2 implies --expunge2 now unless --noexpunge2 is given.
exit if --delete and --delete2 are given together.
Same behavior for --expunge or --expunge1.
----------------------------
revision 1.412
date: 2011/04/28 14:49:59;  author: gilles;  state: Exp;  lines: +17 -15
Added 0 length message tracking when fetching host1.
----------------------------
revision 1.411
date: 2011/04/19 23:34:30;  author: gilles;  state: Exp;  lines: +19 -11
Bugfix for "Folders in host2 not in host1" list when folders are given by --folder option or equivalent.
The old list listed too many folders with --folder INBOX for example.
----------------------------
revision 1.410
date: 2011/04/19 23:11:42;  author: gilles;  state: Exp;  lines: +9 -8
Updated success list.
----------------------------
revision 1.409
date: 2011/04/16 20:15:05;  author: gilles;  state: Exp;  lines: +7 -6
Added --takebody option.
----------------------------
revision 1.408
date: 2011/04/11 01:37:34;  author: gilles;  state: Exp;  lines: +9 -8
Added  Gimap (Gmail imap) success.
Added IMail 11.03 [host1] success
----------------------------
revision 1.407
date: 2011/04/02 23:07:09;  author: gilles;  state: Exp;  lines: +21 -12
Made --delete2 works with --uselib or --usecache
----------------------------
revision 1.406
date: 2011/03/10 01:35:57;  author: gilles;  state: Exp;  lines: +15 -13
No longer --useuid with --fast
Debug output with permanentflags.
----------------------------
revision 1.405
date: 2011/03/07 13:41:54;  author: gilles;  state: Exp;  lines: +13 -11
Added isync url.
Sleep 2 seconds after foldersizes calls.
----------------------------
revision 1.404
date: 2011/02/21 03:35:39;  author: gilles;  state: Exp;  lines: +7 -7
typo
----------------------------
revision 1.403
date: 2011/02/21 00:52:16;  author: gilles;  state: Exp;  lines: +47 -7
Added uid guessing with APPEND to improve --usecache for Exchange or Zarafa imap servers.
----------------------------
revision 1.402
date: 2011/01/25 05:17:05;  author: gilles;  state: Exp;  lines: +47 -174
Removed all the $imapX->IsUnconnected() since reconnect can be done.
Overrided append_file() for 2.2.9, copy from 3.25
----------------------------
revision 1.401
date: 2011/01/25 02:22:37;  author: gilles;  state: Exp;  lines: +195 -151
Added --useuid to speed up or deal with problems using headers.
Added --notakebody to avoid getting first 2Ko body when got "no header"
Replaced --debug_cache by --debugcache
----------------------------
revision 1.400
date: 2011/01/22 04:46:04;  author: gilles;  state: Exp;  lines: +94 -22
Fixed cache (chose only the greatest uid with dupplicate 11_21+11_201 or 11_21+101_21)
Fixed cache, dealing with filenames containing \ characters.
----------------------------
revision 1.399
date: 2011/01/21 00:04:09;  author: gilles;  state: Exp;  lines: +29 -21
Added --debug_cache option to alow cache dfebugging only.
----------------------------
revision 1.398
date: 2011/01/18 03:03:24;  author: gilles;  state: Exp;  lines: +7 -6
Fix. Removed too much about buffersize.
----------------------------
revision 1.397
date: 2011/01/18 02:39:12;  author: gilles;  state: Exp;  lines: +25 -19
Changed --delete2foldersnot option name to --delete2foldersbutnot
----------------------------
revision 1.396
date: 2011/01/18 02:03:49;  author: gilles;  state: Exp;  lines: +23 -11
Added --authmd51 and --authmd52 options to allow CRAM-MD5 authentication per host.
----------------------------
revision 1.395
date: 2011/01/15 04:57:28;  author: gilles;  state: Exp;  lines: +8 -8
--debugimap* implies --debug now.
----------------------------
revision 1.394
date: 2011/01/15 04:46:16;  author: gilles;  state: Exp;  lines: +21 -11
Added info about biggest messages.
----------------------------
revision 1.393
date: 2011/01/15 03:40:43;  author: gilles;  state: Exp;  lines: +7 -7
*** empty log message ***
----------------------------
revision 1.392
date: 2011/01/15 03:29:37;  author: gilles;  state: Exp;  lines: +17 -8
Added --delete2foldersnot option: do not delete folders matching regex.
----------------------------
revision 1.391
date: 2011/01/10 23:11:49;  author: gilles;  state: Exp;  lines: +7 -7
*** empty log message ***
----------------------------
revision 1.390
date: 2011/01/10 05:47:43;  author: gilles;  state: Exp;  lines: +403 -94
Added --usecache option. Goal: speed up the synchronisation.
----------------------------
revision 1.389
date: 2011/01/06 04:28:58;  author: gilles;  state: Exp;  lines: +7 -6
Mirapoint host1 success
----------------------------
revision 1.388
date: 2010/12/29 22:46:08;  author: gilles;  state: Exp;  lines: +44 -10
Added help to guess separator and prefix when NAMESPACE is not available.
----------------------------
revision 1.387
date: 2010/12/22 02:27:39;  author: gilles;  state: Exp;  lines: +13 -8
Added option --delete2foldersonly <regex>: delete only folders matching regex.
----------------------------
revision 1.386
date: 2010/12/09 22:34:25;  author: gilles;  state: Exp;  lines: +7 -7
hMailServer 4.4.1
----------------------------
revision 1.385
date: 2010/12/03 23:40:12;  author: gilles;  state: Exp;  lines: +34 -25
Changed default behaviour: now --delete implies --expunge
It is safer with multiples runs.
----------------------------
revision 1.384
date: 2010/12/02 01:07:48;  author: gilles;  state: Exp;  lines: +48 -34
Code cleanup.
Wrote create_folder()
Wrote select_folder()
Simplified folder loop (a beginning)
----------------------------
revision 1.383
date: 2010/11/28 04:28:52;  author: gilles;  state: Exp;  lines: +14 -12
Allow size mismatch by default.
Use --useheader 'Message-Id' by default.
Use --noauthmd5  by default.
Why? Because users don't have to spend time or mine reading or not
reading the documentation, spend time turning on options to success.
or speed.
----------------------------
revision 1.382
date: 2010/11/19 21:31:35;  author: gilles;  state: Exp;  lines: +23 -12
Added a way to handle no headers in messages: take first 2Ko body.
----------------------------
revision 1.381
date: 2010/11/19 20:48:27;  author: gilles;  state: Exp;  lines: +7 -7
Fixed 'ps' call for Solaris.
----------------------------
revision 1.380
date: 2010/11/19 20:44:25;  author: gilles;  state: Exp;  lines: +12 -11
updated success list.
----------------------------
revision 1.379
date: 2010/11/12 00:44:02;  author: gilles;  state: Exp;  lines: +7 -7
dkimap is now a success story!
----------------------------
revision 1.378
date: 2010/11/12 00:22:59;  author: gilles;  state: Exp;  lines: +19 -11
Added --nouid1 --nouid2 options to support dkimap and other imap server without uid capability.
----------------------------
revision 1.377
date: 2010/11/09 02:12:40;  author: gilles;  state: Exp;  lines: +8 -7
Added Authen::NTLM in modules_VERSION()
----------------------------
revision 1.376
date: 2010/11/09 01:14:33;  author: gilles;  state: Exp;  lines: +17 -10
Added --domain1 --domain2 options for NTLM authentication.
----------------------------
revision 1.375
date: 2010/11/07 23:26:01;  author: gilles;  state: Exp;  lines: +12 -15
Adapted documentation to new distribution rule.
----------------------------
revision 1.374
date: 2010/11/07 18:31:06;  author: gilles;  state: Exp;  lines: +10 -7
imapsync is no longer gratis on the homepage.
----------------------------
revision 1.373
date: 2010/11/07 18:23:13;  author: gilles;  state: Exp;  lines: +7 -7
 Smarter Mail 5.5
----------------------------
revision 1.372
date: 2010/11/03 00:10:29;  author: gilles;  state: Exp;  lines: +9 -8
No thanks for *.bin and *.exe
----------------------------
revision 1.371
date: 2010/11/02 07:37:35;  author: gilles;  state: Exp;  lines: +9 -7
hMailServer 5.3.3 [host2] success
Oracle Beehive [host1] success
----------------------------
revision 1.370
date: 2010/10/31 23:07:12;  author: gilles;  state: Exp;  lines: +7 -7
Prepare to move from linux-france.org with independant name.
----------------------------
revision 1.369
date: 2010/10/31 23:03:22;  author: gilles;  state: Exp;  lines: +9 -6
No thanks with imapsync.exe just homepage link.
----------------------------
revision 1.368
date: 2010/10/31 22:17:52;  author: gilles;  state: Exp;  lines: +9 -3
Applied proxyauth-v2_1.366.patch on 1.366
----------------------------
revision 1.367
date: 2010/10/31 00:01:44;  author: gilles;  state: Exp;  lines: +44 -13
Applied patch patches/proxyauth_1.366.patch from Jorge LÃ³pez PÃ©rez.
----------------------------
revision 1.366
date: 2010/10/25 17:15:52;  author: gilles;  state: Exp;  lines: +11 -12
Permit host* to have change the case of headers.
----------------------------
revision 1.365
date: 2010/10/25 11:42:41;  author: gilles;  state: Exp;  lines: +131 -157
Fix tls getline pb (read too early)
Changes place of starttls() myconnect() and other functions.
----------------------------
revision 1.364
date: 2010/10/25 09:56:27;  author: gilles;  state: Exp;  lines: +10 -15
Fix STARTTLS capability detection bug.
----------------------------
revision 1.363
date: 2010/10/24 17:16:43;  author: gilles;  state: Exp;  lines: +99 -48
Added --delete2folders option. Deletes folders in host2 that are not in host1.
----------------------------
revision 1.362
date: 2010/10/22 19:23:34;  author: gilles;  state: Exp;  lines: +24 -8
Added imapsync basename to see how imapsync.exe is used.
----------------------------
revision 1.361
date: 2010/10/19 22:58:06;  author: gilles;  state: Exp;  lines: +28 -8
Added --nomodules_version option to avoid Roger libeay32.dll missing problem.
Added test to ckeck if the release number from lfo VERSION file is a number.
----------------------------
revision 1.360
date: 2010/10/19 22:08:23;  author: gilles;  state: Exp;  lines: +8 -7
Better documentation to subscribe to the imapsync list.
----------------------------
revision 1.359
date: 2010/10/08 01:17:29;  author: gilles;  state: Exp;  lines: +15 -9
Fixed "Your vendor has not defined POSIX macro SIGALRM" bug on win32.
----------------------------
revision 1.358
date: 2010/10/08 00:40:42;  author: gilles;  state: Exp;  lines: +97 -18
Add memory_consumption for win32.
----------------------------
revision 1.357
date: 2010/10/04 21:50:56;  author: gilles;  state: Exp;  lines: +10 -10
Suppressed ref passage in foldersizes() sub.
----------------------------
revision 1.356
date: 2010/10/04 02:44:00;  author: gilles;  state: Exp;  lines: +1270 -1251
Move all subroutines below main.
Changed "local $SIG{ALRM}" to "POSIX::sigaction(SIGALRM"
----------------------------
revision 1.355
date: 2010/09/21 01:50:34;  author: gilles;  state: Exp;  lines: +39 -19
Added tests_max() max() functions.
Added memory consumption.
Added memory consumption ratio to biggest message transfered.
----------------------------
revision 1.354
date: 2010/09/16 00:25:20;  author: gilles;  state: Exp;  lines: +27 -15
Added memory_consumption_ratio()
Added memory_consumption_of_pid()
Removed memory_consumption
----------------------------
revision 1.353
date: 2010/09/14 22:46:33;  author: gilles;  state: Exp;  lines: +19 -9
Added --minsize option.
----------------------------
revision 1.352
date: 2010/09/14 21:53:55;  author: gilles;  state: Exp;  lines: +48 -12
Added memory_consumption()
Added tests_memory_consumption()
Started to analyse memory consumption.
----------------------------
revision 1.351
date: 2010/09/06 16:28:17;  author: gilles;  state: Exp;  lines: +9 -7
Fixed PERL_VERSION format in imapsync_version_lfo()
----------------------------
revision 1.350
date: 2010/09/06 01:05:09;  author: gilles;  state: Exp;  lines: +33 -24
Added --noreleasecheck option.
Added User-agent information (OS, perl version, Mail::IMAPClient version)
----------------------------
revision 1.349
date: 2010/09/06 00:25:03;  author: gilles;  state: Exp;  lines: +71 -13
Added new release checking
----------------------------
revision 1.348
date: 2010/09/05 21:28:35;  author: gilles;  state: Exp;  lines: +16 -18
Strong regex for month in good_date()
----------------------------
revision 1.347
date: 2010/09/05 21:12:10;  author: gilles;  state: Exp;  lines: +61 -50
Rewrote good_date and removed Date::Manip usage.
----------------------------
revision 1.346
date: 2010/09/05 16:28:18;  author: gilles;  state: Exp;  lines: +34 -36
Simplified default output.
----------------------------
revision 1.345
date: 2010/08/24 01:44:59;  author: gilles;  state: Exp;  lines: +45 -45
Better output when copying messages.
----------------------------
revision 1.344
date: 2010/08/20 02:06:13;  author: gilles;  state: Exp;  lines: +123 -49
Added function fetch_hash_2() allowing a list of uid to be fetched.
Changed fetch_hash() calls by fetch_hash_2() calls
This fixed the bug "Be more effiscient with large mailboxes",
search ALL was useless with --maxage or --minage in fetch_hash()
----------------------------
revision 1.343
date: 2010/08/15 18:02:11;  author: gilles;  state: Exp;  lines: +9 -7
Fix. bug in _read_line sysread can return undef;
----------------------------
revision 1.342
date: 2010/08/15 11:02:41;  author: gilles;  state: Exp;  lines: +12 -13
Clarity. Print capability after authenticated state.
----------------------------
revision 1.341
date: 2010/08/15 10:56:45;  author: gilles;  state: Exp;  lines: +42 -14
Added Mail::IMAPClient::capability_update() to reset the capability cache.
Bug fix. Some imap server change their capability after authentification,
imapsync used the capability cache from the first CAPABILITY call.
----------------------------
revision 1.340
date: 2010/08/09 00:03:21;  author: gilles;  state: Exp;  lines: +7 -7
Bug fix. Stupid undef breaking --syncinternaldates
----------------------------
revision 1.339
date: 2010/07/28 15:07:56;  author: gilles;  state: Exp;  lines: +27 -20
Made a justconnect() routine.
----------------------------
revision 1.338
date: 2010/07/28 14:56:26;  author: gilles;  state: Exp;  lines: +42 -27
Added SYNOPSIS at the top of the documentation.
----------------------------
revision 1.337
date: 2010/07/16 23:23:40;  author: gilles;  state: Exp;  lines: +12 -6
Added --usedatemanip option (not documented in --help)
Turned off Date::Manip usage by default: release 6.x vs 5.x buggy,
and dprof showed slow routines come from Date::Manip
----------------------------
revision 1.336
date: 2010/07/16 22:04:25;  author: gilles;  state: Exp;  lines: +8 -7
Bugfix. $syncinternaldates could not be set 0. Unbelievable!
----------------------------
revision 1.335
date: 2010/07/16 00:44:25;  author: gilles;  state: Exp;  lines: +26 -15
Bugfix. Fixed Date_TimeZone break under win32.
----------------------------
revision 1.334
date: 2010/07/15 12:20:48;  author: gilles;  state: Exp;  lines: +50 -32
Added statistics about "Messages void (noheader) on hostX"
----------------------------
revision 1.333
date: 2010/07/14 23:55:13;  author: gilles;  state: Exp;  lines: +7 -9
docfix
----------------------------
revision 1.332
date: 2010/07/14 23:09:02;  author: gilles;  state: Exp;  lines: +251 -178
Reviewed variable names.
Began to push subroutines below main.
----------------------------
revision 1.331
date: 2010/07/13 23:28:59;  author: gilles;  state: Exp;  lines: +6 -6
default values for h1_mess_duplicate h1_mess_size_total_duplicate
----------------------------
revision 1.330
date: 2010/07/13 03:44:36;  author: gilles;  state: Exp;  lines: +56 -36
Bugfix. Duplicate messages on host2 were not deleted with --delete2
----------------------------
revision 1.329
date: 2010/07/12 23:28:00;  author: gilles;  state: Exp;  lines: +13 -21
--skipsize turned on by default.
Why? all examples on internet use --skipsize.
imapsync can not change buggy imp servers.

Useless code cleanup.
----------------------------
revision 1.328
date: 2010/07/12 22:49:23;  author: gilles;  state: Exp;  lines: +18 -19
Changed basic documention:
 - examples with --password1 instead of --passfile1
Why? all exemples on internet use --password1 so users
use --password1 even I've never told them to do so.
Usability fix.
----------------------------
revision 1.327
date: 2010/07/12 00:23:02;  author: gilles;  state: Exp;  lines: +7 -5
Good exit at the end.
----------------------------
revision 1.326
date: 2010/07/12 00:16:03;  author: gilles;  state: Exp;  lines: +9 -7
Default value when no reconnect.
----------------------------
revision 1.325
date: 2010/07/11 23:26:04;  author: gilles;  state: Exp;  lines: +72 -38
Added --pidfile option.
Added die_clean() exit_clean() functions to remove pid file before quitting.
----------------------------
revision 1.324
date: 2010/07/11 21:28:23;  author: gilles;  state: Exp;  lines: +24 -18
Added --debugimap1 --debugimap2 to permit imap outpout with only one host.
----------------------------
revision 1.323
date: 2010/07/11 21:10:17;  author: gilles;  state: Exp;  lines: +28 -10
Added Reconnect_counter()
Added reconnect statistics
----------------------------
revision 1.322
date: 2010/07/10 22:30:18;  author: gilles;  state: Exp;  lines: +46 -9
Added regression tests to remove first "From " header line. tests_regexmess()
----------------------------
revision 1.321
date: 2010/07/09 03:27:31;  author: gilles;  state: Exp;  lines: +6 -6
Added Smarter Mail 5.0 success.
----------------------------
revision 1.320
date: 2010/07/09 03:02:07;  author: gilles;  state: Exp;  lines: +20 -23
Better reconnect handling.
----------------------------
revision 1.319
date: 2010/07/09 00:49:26;  author: gilles;  state: Exp;  lines: +9 -7
Added Maxcommandlength call.
----------------------------
revision 1.318
date: 2010/07/07 23:44:35;  author: gilles;  state: Exp;  lines: +43 -39
Added --subscribe_all option.
Reviewed and updated inline help.
----------------------------
revision 1.317
date: 2010/07/07 22:49:09;  author: gilles;  state: Exp;  lines: +13 -6
Bug report guideline: upgrade!
----------------------------
revision 1.316
date: 2010/06/29 16:18:09;  author: gilles;  state: Exp;  lines: +10 -11
Typo bandwidth.
----------------------------
revision 1.315
date: 2010/06/11 02:51:54;  author: gilles;  state: Exp;  lines: +8 -6
*** empty log message ***
----------------------------
revision 1.314
date: 2010/06/11 01:42:44;  author: gilles;  state: Exp;  lines: +455 -16
Added reconnect behavior with Mail::IMAPClient 2.2.9
----------------------------
revision 1.313
date: 2010/06/10 00:37:09;  author: gilles;  state: Exp;  lines: +6 -6
36 success stories
----------------------------
revision 1.312
date: 2010/06/10 00:35:46;  author: gilles;  state: Exp;  lines: +6 -5
1und1 success story
----------------------------
revision 1.311
date: 2010/04/27 23:03:39;  author: gilles;  state: Exp;  lines: +35 -12
Fixed bug in compare_lists(). Thanks to Pertti Karppinen.
----------------------------
revision 1.310
date: 2010/02/26 01:24:59;  author: gilles;  state: Exp;  lines: +10 -11
Removed modules_VERSION() call (useless)
Replaced Phil regex with /e one.
----------------------------
revision 1.309
date: 2010/02/25 23:18:04;  author: gilles;  state: Exp;  lines: +63 -65
Better imap banner handling (first line read).
removed sub myconnect_v2()
Removed Mail::IMAPClient::Socket use.
Added sub RawSocket2() (RawSocket 3.23 failed as is, do not know why)
Added Mail::IMAPClient::Ignoresizeerrors for 2.2.9
Honot --allowsizemismatch with 2.2.9
----------------------------
revision 1.308
date: 2010/02/24 01:29:11;  author: gilles;  state: Exp;  lines: +15 -9
Fixed STARTTLS missing imap begin line.
----------------------------
revision 1.307
date: 2010/02/09 17:49:34;  author: gilles;  state: Exp;  lines: +68 -9
Added tests_imap2_folder_name()
's/.*?(?:(\\(?:Answered|Flagged|Deleted|Seen|Recent|Draft)\s?)|$)/$1/g' check (good!)
----------------------------
revision 1.306
date: 2010/02/07 21:38:15;  author: gilles;  state: Exp;  lines: +71 -6
Added regression test about the "keep only" --regexflag example.
Added debug to understand all the regexflag transformations.
----------------------------
revision 1.305
date: 2010/01/20 22:26:03;  author: gilles;  state: Exp;  lines: +14 -14
Better output.
----------------------------
revision 1.304
date: 2010/01/20 22:10:24;  author: gilles;  state: Exp;  lines: +32 -23
Added statistic about messages deleted
Added statistic about average bandwith rate
----------------------------
revision 1.303
date: 2010/01/20 04:12:52;  author: gilles;  state: Exp;  lines: +13 -12
cosmetic changes.
----------------------------
revision 1.302
date: 2010/01/20 03:34:59;  author: gilles;  state: Exp;  lines: +59 -51
Flags are now exactly synced from host1 to host2.
Previous releases just added flags, It was a wrong behavior
since when a \Seen flag is removed on host1 a sync have to
remove it on host2. imapsync is not imapadd.
----------------------------
revision 1.301
date: 2010/01/18 06:24:16;  author: gilles;  state: Exp;  lines: +92 -23
Added TLSv1 support.
----------------------------
revision 1.300
date: 2010/01/16 03:34:37;  author: gilles;  state: Exp;  lines: +250 -250
Changed name of variables. "from" replaced by imap1 "to" by imap2.
f_* replaced by h1_*
t_* replaced by h2_*
Cosmetic but easier to read nd maintain.
----------------------------
revision 1.299
date: 2010/01/15 00:19:32;  author: gilles;  state: Exp;  lines: +10 -10
imapsync is no longer GPL software.
imapsync is WTFPL software. The best licence I found.
----------------------------
revision 1.298
date: 2010/01/14 23:43:22;  author: gilles;  state: Exp;  lines: +6 -8
Fix. Removed identical "my" declaration.
----------------------------
revision 1.297
date: 2010/01/14 17:36:17;  author: gilles;  state: Exp;  lines: +13 -11
Rewrote flags_filter(), same behavior, no regex.
----------------------------
revision 1.296
date: 2010/01/14 16:57:58;  author: gilles;  state: Exp;  lines: +72 -8
Filter flags sync with the list given by PERMANENTFLAGS on --host2
----------------------------
revision 1.295
date: 2010/01/14 15:04:27;  author: gilles;  state: Exp;  lines: +10 -6
--expunge only expunge --host1 (fixed output about that)
----------------------------
revision 1.294
date: 2010/01/14 02:12:17;  author: gilles;  state: Exp;  lines: +37 -10
Added --tmpdir option. The funny part is it's useless now.
----------------------------
revision 1.293
date: 2010/01/12 05:34:27;  author: gilles;  state: Exp;  lines: +6 -6
Change call for donation.
----------------------------
revision 1.292
date: 2010/01/12 05:15:53;  author: gilles;  state: Exp;  lines: +8 -7
freshmeat rate is gone.
paypal is good to encourage myself.
----------------------------
revision 1.291
date: 2010/01/12 04:36:03;  author: gilles;  state: Exp;  lines: +10 -10
Load Term::ReadKey when needed.
----------------------------
revision 1.290
date: 2010/01/12 03:42:09;  author: gilles;  state: Exp;  lines: +7 -7
One line per folder when printing the each folder list.
----------------------------
revision 1.289
date: 2010/01/12 01:54:52;  author: gilles;  state: Exp;  lines: +6 -6
Removed unused Date_Cmp from import.
----------------------------
revision 1.288
date: 2009/09/02 20:37:22;  author: gilles;  state: Exp;  lines: +8 -6
Request all folder list only when needed (sometimes the list is very long)
----------------------------
revision 1.287
date: 2009/08/24 00:32:36;  author: gilles;  state: Exp;  lines: +6 -6
- fixed fetch_hash() to return FLAGS as "" not () when no FLAGS set.
(reading Mail-IMAPClient-3.19 code)
----------------------------
revision 1.286
date: 2009/07/24 15:53:04;  author: gilles;  state: Exp;  lines: +10 -7
Bug fix: allow3x is on by default (was badly done after check_lib_version())
----------------------------
revision 1.285
date: 2009/07/03 00:59:20;  author: gilles;  state: Exp;  lines: +38 -17
Applied "patch -p0 < patches/imapsync.1.284.patch"
Attached is a patch against 1.284 with the following changes:

- [Bug] to_folder_name() failed to escape $f_prefix so --prefix1 <string> was treated like --prefix1 <regex> instead

- [Enhancement] updated parse_header_msg1() to return 0 on duplicate or undef on "no header" so now the "+ Skipping msg" will show either "no header" or "duplicate" as appropriate

- [Bug] flag handling: make sure we don't try to set \Recent as RFC 2060 doesn't allow for that

- [Enhancement] flag handling: only add missing flags instead of always calling $to->store() to set flags even when the flags already matched what we wanted... my first patch just used string comparison, this patch actually uses a hash for comparison so we're smarter about flags even when the order on $from and $to are different now - definitely helps speed up imapsync when lots of messages have flags and running sync in multiple passes

Phil
----------------------------
revision 1.284
date: 2009/06/30 03:14:24;  author: gilles;  state: Exp;  lines: +15 -19
allow Mail::IMAPClient 3.0.xx by default
Removed Mail::IMAPClient::Ssl since 3.0.19 has it now.
----------------------------
revision 1.283
date: 2009/06/30 02:54:57;  author: gilles;  state: Exp;  lines: +123 -94
Applied Phil Lobbes patch as is : ./patches/imapsync.1.282.patch
----------------------------
revision 1.282
date: 2009/05/11 00:05:39;  author: gilles;  state: Exp;  lines: +15 -10
Added option --justlogin
----------------------------
revision 1.281
date: 2009/04/24 13:58:15;  author: gilles;  state: Exp;  lines: +29 -6
Added tests_flags_regex() regression tests.
----------------------------
revision 1.280
date: 2009/04/02 11:32:10;  author: gilles;  state: Exp;  lines: +103 -47
Applied Phil patch with many IsUnconnected() calls.
----------------------------
revision 1.279
date: 2009/03/22 00:12:15;  author: gilles;  state: Exp;  lines: +9 -7
isUnconnected BAD IsUnconnected GOOD!
----------------------------
revision 1.278
date: 2009/02/23 00:40:25;  author: gilles;  state: Exp;  lines: +14 -12
Less imap output with +FLAGS.SILENT
Changed unsubscribe subscribe order in documentation.
Typos.
----------------------------
revision 1.277
date: 2009/02/21 12:10:50;  author: gilles;  state: Exp;  lines: +8 -6
Better example explanation.
----------------------------
revision 1.276
date: 2009/02/21 04:04:08;  author: gilles;  state: Exp;  lines: +15 -22
Removed mailto: in MAILING-LIST section.
----------------------------
revision 1.275
date: 2009/02/21 02:04:26;  author: gilles;  state: Exp;  lines: +25 -14
Change real password to "MASKED" in command line output.
----------------------------
revision 1.274
date: 2009/02/21 01:10:02;  author: gilles;  state: Exp;  lines: +14 -8
--delete 2 is now a fatal error.
----------------------------
revision 1.273
date: 2009/02/21 00:48:40;  author: gilles;  state: Exp;  lines: +36 -37
Print a warning and return error code each time a disconnection occurs.
----------------------------
revision 1.272
date: 2009/02/20 23:41:09;  author: gilles;  state: Exp;  lines: +78 -78
Fixed many English errors (thanks to Reuben Thomas)
----------------------------
revision 1.271
date: 2009/02/19 23:38:32;  author: gilles;  state: Exp;  lines: +28 -35
Bug fix about $t_prefix and INBOX '.' was hardcoded.
Small change on documentation.
----------------------------
revision 1.270
date: 2009/02/14 22:21:35;  author: gilles;  state: Exp;  lines: +16 -11
Another Phil Lobbes patch.
Exit with error code and warning when a server disconnect
during the folder loop.
----------------------------
revision 1.269
date: 2009/02/14 22:08:18;  author: gilles;  state: Exp;  lines: +65 -38
Applied Phil Lobbes patches.
- catch (what should be) fatal eval errors for regextrans2,
  $regexflag, $regexmess, instead of silently ignoring them
  and letting the user think they are working/OK
- fix login_imap() Died at .../imapsync line 780 when IsUnconnected()
  and log some more useful into to stderr than just 'Died at...'
- check_lib_version() contains a bad use of unset match/capture variables
- added and now use new function myconnect() and myconnect_v2()
  does not require hack/override of Mail::IMAPClient::connect
  and is backwards compatible with Mail::IMAPClient v2.x
- redo $Mail::IMAPClient::Authuser hack since only
  Mail::IMAPClient v2 does not have Authuser()
Many thanks to Phil.
----------------------------
revision 1.268
date: 2009/02/14 03:27:51;  author: gilles;  state: Exp;  lines: +22 -21
Fixed  bad VERSION_IMAPClient output
----------------------------
revision 1.267
date: 2008/10/07 11:36:02;  author: gilles;  state: Exp;  lines: +14 -10
Better test to check non existing folders on destination
server.
----------------------------
revision 1.266
date: 2008/10/07 05:56:52;  author: gilles;  state: Exp;  lines: +27 -10
*** empty log message ***
----------------------------
revision 1.265
date: 2008/08/30 14:20:38;  author: gilles;  state: Exp;  lines: +7 -7
carp to warn
----------------------------
revision 1.264
date: 2008/08/27 15:19:05;  author: gilles;  state: Exp;  lines: +7 -8
Archiveopteryx 3.0.0
----------------------------
revision 1.263
date: 2008/08/26 02:58:11;  author: gilles;  state: Exp;  lines: +59 -22
Added modules versions output.
----------------------------
revision 1.262
date: 2008/08/16 17:19:29;  author: gilles;  state: Exp;  lines: +6 -6
Work fine under XP.
----------------------------
revision 1.261
date: 2008/08/16 15:56:00;  author: gilles;  state: Exp;  lines: +32 -41
- Fixed bug about ssl and justconnect option
- Cleaned connect code.
- Started gmail support.
----------------------------
revision 1.260
date: 2008/08/13 03:14:14;  author: gilles;  state: Exp;  lines: +54 -13
- Added option --idatefromheader :
  sets the internal dates on host2 same as the "Date:" headers.
----------------------------
revision 1.259
date: 2008/08/13 01:22:10;  author: gilles;  state: Exp;  lines: +49 -21
- Made a function for regexmess() --regexmess to be able to
  check it easily
- Added function tests_regexmess() to check regexmess(), 3
  tests.
- Removed imapsync copyleft GPL licence output (boring).
  Replaced by wishlist link.
- Added thank_author() to avoid duplicate code about thanks.
- Better bug report documentation.
----------------------------
revision 1.258
date: 2008/07/28 21:38:36;  author: gilles;  state: Exp;  lines: +18 -18
Change report bug information order.
----------------------------
revision 1.257
date: 2008/07/28 21:17:56;  author: gilles;  state: Exp;  lines: +10 -19
removed comment and ugly output
----------------------------
revision 1.256
date: 2008/06/29 01:28:51;  author: gilles;  state: Exp;  lines: +14 -5
Applied patch from Simon Heimlicher to avoid non-selectable
folders.
----------------------------
revision 1.255
date: 2008/06/24 16:38:49;  author: gilles;  state: Exp;  lines: +7 -6
Domino (Notes) 4.61
----------------------------
revision 1.254
date: 2008/06/16 18:59:26;  author: gilles;  state: Exp;  lines: +19 -13
Some server (Microsoft Exchange 6.0.6249.0 for example)
returns message size a lot
s than the real size
Now imapsync accept this silly behavior.
----------------------------
revision 1.253
date: 2008/06/16 18:48:01;  author: gilles;  state: Exp;  lines: +6 -6
Archiveopteryx  2.09
----------------------------
revision 1.252
date: 2008/05/08 02:30:17;  author: gilles;  state: Exp;  lines: +36 -6
Added mailing list information.
----------------------------
revision 1.251
date: 2008/05/08 02:08:44;  author: gilles;  state: Exp;  lines: +56 -14
Fixed message_string returning empty message when < expected size.
----------------------------
revision 1.250
date: 2008/04/21 03:46:01;  author: gilles;  state: Exp;  lines: +11 -7
Bug fix "parse_headers want an ARRAY ref"
----------------------------
revision 1.249
date: 2008/03/19 02:14:24;  author: gilles;  state: Exp;  lines: +7 -7
warn about BUG_IMAPClient_3.xx
----------------------------
revision 1.248
date: 2008/03/19 02:05:46;  author: gilles;  state: Exp;  lines: +14 -19
Cleaned check_lib_version()
----------------------------
revision 1.247
date: 2008/03/19 01:41:49;  author: gilles;  state: Exp;  lines: +1 -1
Added id in output warn when no header found.
----------------------------
revision 1.246
date: 2008/03/19 01:07:26;  author: gilles;  state: Exp;  lines: +19 -16
Removed $^W use.
----------------------------
revision 1.245
date: 2008/03/10 23:49:42;  author: gilles;  state: Exp;  lines: +53 -23
Back to append_string()
Turn on --syncinternaldates by default
Date_Init("TZ=GMT") if no timezone (windows) set.
----------------------------
revision 1.244
date: 2008/02/29 22:43:22;  author: gilles;  state: Exp;  lines: +5 -545
Removed old *_2() functions (unused)
----------------------------
revision 1.243
date: 2008/02/29 16:47:58;  author: gilles;  state: Exp;  lines: +632 -53
Moved functins *_2() into override_imapclient()
----------------------------
revision 1.242
date: 2008/02/29 00:28:15;  author: gilles;  state: Exp;  lines: +24 -13
Ignore message when it has no header.
----------------------------
revision 1.241
date: 2007/12/31 13:39:02;  author: gilles;  state: Exp;  lines: +6 -6
Bug fix. --exclude and remove_from_requested_folders()
----------------------------
revision 1.240
date: 2007/12/31 13:35:59;  author: gilles;  state: Exp;  lines: +7 -6
MDaemon 8.0.2
----------------------------
revision 1.239
date: 2007/12/29 02:44:10;  author: gilles;  state: Exp;  lines: +7 -7
Typo if
----------------------------
revision 1.238
date: 2007/12/29 02:41:52;  author: gilles;  state: Exp;  lines: +15 -10
Fixed --version exit bug with Test::More
----------------------------
revision 1.237
date: 2007/12/29 02:15:35;  author: gilles;  state: Exp;  lines: +10 -15
check_lib_version() rewrote and reused.
----------------------------
revision 1.236
date: 2007/12/29 01:54:27;  author: gilles;  state: Exp;  lines: +215 -38
Removed bad warning about ssl
Started to be IMAPClient 3.0.0 compliant
Fixed bad --include behavior (added already added folders)
Started unit tests.
Rockliffe Mailsite 4.5.6
Courier 4.1.1
----------------------------
revision 1.235
date: 2007/11/10 02:52:29;  author: gilles;  state: Exp;  lines: +7 -5
wonko_imapsync link
----------------------------
revision 1.234
date: 2007/10/30 15:34:06;  author: gilles;  state: Exp;  lines: +55 -32
Remove every else else between braces } else {
----------------------------
revision 1.233
date: 2007/10/30 03:20:53;  author: gilles;  state: Exp;  lines: +69 -7
Added connect2() to replace buggy connect() with bad hostname.
----------------------------
revision 1.232
date: 2007/10/30 01:41:17;  author: gilles;  state: Exp;  lines: +24 -23
Added imapmigrate link (cyrus-utils)
Checked each SIMILAR SOFTWARES link and fixed bad ones.
Courier IMAP 3.0.8 success
Fixed Mail::IMAPClient version output.
----------------------------
revision 1.231
date: 2007/10/30 00:28:40;  author: gilles;  state: Exp;  lines: +12 -11
bug fix avoid append_file2 on MSWin32, not the opposite :-)
----------------------------
revision 1.230
date: 2007/10/30 00:01:34;  author: gilles;  state: Exp;  lines: +14 -9
Added bug fix to MSWin32 system and append_file2() problem.
----------------------------
revision 1.229
date: 2007/10/29 23:02:46;  author: gilles;  state: Exp;  lines: +15 -11
Added OS name in --help
----------------------------
revision 1.228
date: 2007/10/29 22:49:07;  author: gilles;  state: Exp;  lines: +8 -8
Added DBMail 0.9 failure.
Commented lib_version check.
----------------------------
revision 1.227
date: 2007/10/20 02:30:31;  author: gilles;  state: Exp;  lines: +7 -6
GMX IMAP4 StreamProxy success.
----------------------------
revision 1.226
date: 2007/10/20 01:33:34;  author: gilles;  state: Exp;  lines: +11 -9
Updated help message about --authuser : avoid --authmech1 SOMETHING
----------------------------
revision 1.225
date: 2007/08/21 03:04:08;  author: gilles;  state: Exp;  lines: +10 -6
Uppercase authmech input.
----------------------------
revision 1.224
date: 2007/08/16 23:54:26;  author: gilles;  state: Exp;  lines: +9 -10
Ubuntu package.
Date with minus %d-%b-%Y
----------------------------
revision 1.223
date: 2007/06/15 04:08:44;  author: gilles;  state: Exp;  lines: +7 -7
Domino 7.0.1
Exchange 6.5.7638.1
----------------------------
revision 1.222
date: 2007/06/10 17:49:12;  author: gilles;  state: Exp;  lines: +17 -11
Added Deerfield VisNetic MailServer 5.8.6 [from] success.
      33 different imap server softwares are (well) supported.

Added Dovecot 1.0.0 [dest] success.

Added requires Date::Manip in case --syncinternaldates is used (will
      be a use Date::Manip in future releases if this fix is a
      really good one). This date rewrite was needed by
      Deerfield VisNetic bug (it sends the timestamp with
      one digit, not two (and dovecot 1.0.0 is not tolerant).

Added paypal address at the end of execution.
----------------------------
revision 1.221
date: 2007/05/29 13:09:18;  author: gilles;  state: Exp;  lines: +9 -9
Turn to --nofastio1 --nofastio2 by default.
----------------------------
revision 1.220
date: 2007/05/25 02:15:59;  author: gilles;  state: Exp;  lines: +7 -6
Flags \Recent can be uppercase \RECENT now.
----------------------------
revision 1.219
date: 2007/04/04 09:32:20;  author: gilles;  state: Exp;  lines: +18 -12
Added uname info and perl version to the banner.
----------------------------
revision 1.218
date: 2007/04/04 07:52:22;  author: gilles;  state: Exp;  lines: +8 -8
- Zimbra releases
- use prefix1 bugfix for a rpm .spec
----------------------------
revision 1.217
date: 2007/03/06 13:12:23;  author: gilles;  state: Exp;  lines: +103 -6
- Added _cram_md5_2() and authenticate2() to correct a bug
  from the Mail::IMAPClient perl library. username can't be
  longer than 24 due to a lack of blank second parameter
  in MIME::Base64::encode() call.
----------------------------
revision 1.216
date: 2007/03/06 04:25:52;  author: gilles;  state: Exp;  lines: +10 -7
Updated distribution list.
----------------------------
revision 1.215
date: 2007/03/06 03:50:35;  author: gilles;  state: Exp;  lines: +16 -8
Updated documentation.
----------------------------
revision 1.214
date: 2007/02/26 10:31:32;  author: gilles;  state: Exp;  lines: +6 -6
Fixed a mistake in the EXAMPLE section.
----------------------------
revision 1.213
date: 2007/02/16 04:07:19;  author: gilles;  state: Exp;  lines: +168 -11
- Back to append_file() modified -> append_file2()
----------------------------
revision 1.212
date: 2007/02/13 05:18:15;  author: gilles;  state: Exp;  lines: +12 -12
32 imap server softwares supported.
Fixed a long standing bug (header keywords weren't
uppercased like said in the comment above)
----------------------------
revision 1.211
date: 2007/02/08 03:25:36;  author: gilles;  state: Exp;  lines: +23 -20
MDaemon 9.5.4 success
Mercury 4.1   success
UW v12.264    success
Docum: link to wishlist
----------------------------
revision 1.210
date: 2007/02/08 02:58:52;  author: gilles;  state: Exp;  lines: +19 -10
- Added whole command line output (I'm fed up to ask for)
- Added link to the imapsync thanks wishlist. I like to help
  people for free, but I like books too :-)
- Added count of skipped message due to --dry mode
----------------------------
revision 1.209
date: 2007/02/02 02:06:50;  author: gilles;  state: Exp;  lines: +9 -6
- Started to list the distributions containing an imapsync port.
----------------------------
revision 1.208
date: 2007/02/01 22:31:14;  author: gilles;  state: Exp;  lines: +50 -28
- lib Term::ReadKey optional + fix syntax without.
- folders in destination are computed from the source ones.
- Back to append_string() use because of syncinternaldates
  "bug" with append_file().
- more output when no header are detected.
----------------------------
revision 1.207
date: 2007/01/14 15:59:12;  author: gilles;  state: Exp;  lines: +10 -10
Updated --help output
----------------------------
revision 1.206
date: 2007/01/14 15:55:02;  author: gilles;  state: Exp;  lines: +9 -9
--include is no longer an exclusive option.
I doesn't erase --folder --folderrec --subscribed options
----------------------------
revision 1.205
date: 2007/01/13 09:12:05;  author: gilles;  state: Exp;  lines: +6 -6
Be case insensitive with INBOX
----------------------------
revision 1.204
date: 2007/01/13 07:51:21;  author: gilles;  state: Exp;  lines: +14 -6
Try LOGIN auth login on first failure login.
----------------------------
revision 1.203
date: 2007/01/13 06:58:15;  author: gilles;  state: Exp;  lines: +9 -7
Server list updated
----------------------------
revision 1.202
date: 2007/01/06 05:07:08;  author: gilles;  state: Exp;  lines: +7 -6
SmarterMail success
----------------------------
revision 1.201
date: 2007/01/03 23:49:10;  author: gilles;  state: Exp;  lines: +30 -6
Use login2() instead of login() (literal form is not always
supported.
----------------------------
revision 1.200
date: 2007/01/02 08:27:04;  author: gilles;  state: Exp;  lines: +48 -15
use message_to_file()instead of message_string()
use append_file() instead of append_string()
fixed INBOX with --prefix2 problem.
Authmechanism() can't receive 'LOGIN' as argument (bug ?).
----------------------------
revision 1.199
date: 2006/12/30 15:53:51;  author: gilles;  state: Exp;  lines: +7 -6
Sun Java System Messaging Server success
----------------------------
revision 1.198
date: 2006/12/30 04:23:36;  author: gilles;  state: Exp;  lines: +19 -15
Added a comment about CPU and memory hungriness.
Removed exit(1) on No auth CAPABILITY.
Authenticate is always done now.
----------------------------
revision 1.197
date: 2006/12/10 02:49:39;  author: gilles;  state: Exp;  lines: +7 -10
Updated online documantation about new
--include and --exclude behavior
----------------------------
revision 1.196
date: 2006/12/10 02:41:37;  author: gilles;  state: Exp;  lines: +21 -15
- Now IO::Socket::SSL is loaded only with -ssl*
- multiple --include are taken like a "or" list ,
  not an "and" list.
----------------------------
revision 1.195
date: 2006/12/08 04:48:54;  author: gilles;  state: Exp;  lines: +10 -8
Added OpenMail success
Counted how many different imap server software succeeded.
----------------------------
revision 1.194
date: 2006/12/08 04:04:34;  author: gilles;  state: Exp;  lines: +22 -12
Added --folderrec option
Now --folder --subscribed and --folderrec can be
used simultaneously.
----------------------------
revision 1.193
date: 2006/12/08 03:29:14;  author: gilles;  state: Exp;  lines: +8 -8
Replace PLAIN with LOGIN
----------------------------
revision 1.192
date: 2006/12/04 13:57:45;  author: gilles;  state: Exp;  lines: +10 -9
Added imap server releases
----------------------------
revision 1.191
date: 2006/11/11 22:11:25;  author: gilles;  state: Exp;  lines: +7 -7
imap servers section
DBMail 2.2rc1
----------------------------
revision 1.190
date: 2006/11/11 00:13:15;  author: gilles;  state: Exp;  lines: +10 -6
Be case inseitive with header keywords.
----------------------------
revision 1.189
date: 2006/11/04 16:47:38;  author: gilles;  state: Exp;  lines: +6 -6
typo CommuniGatePro
----------------------------
revision 1.188
date: 2006/10/30 01:18:37;  author: gilles;  state: Exp;  lines: +22 -17
Fixed typos about transfer*
----------------------------
revision 1.187
date: 2006/09/29 12:18:53;  author: gilles;  state: Exp;  lines: +6 -6
bug fixed when "user<NUL>authuser<NUL>password" is over 76 characters
----------------------------
revision 1.186
date: 2006/09/29 12:09:15;  author: gilles;  state: Exp;  lines: +6 -6
Surgemail release
----------------------------
revision 1.185
date: 2006/09/28 11:15:20;  author: gilles;  state: Exp;  lines: +6 -5
Surgemail success.
----------------------------
revision 1.184
date: 2006/08/22 01:25:18;  author: gilles;  state: Exp;  lines: +9 -5
Added advice in case bad PLAIN AUTHENTICATE.
----------------------------
revision 1.183
date: 2006/08/22 01:17:28;  author: gilles;  state: Exp;  lines: +7 -6
exit if --authmech1  method is not supported by an imap
server.
----------------------------
revision 1.182
date: 2006/08/01 23:07:42;  author: gilles;  state: Exp;  lines: +8 -6
David Tobit V8
----------------------------
revision 1.181
date: 2006/07/19 14:45:29;  author: gilles;  state: Exp;  lines: +22 -7
Added several controls to check connected status.
----------------------------
revision 1.180
date: 2006/07/19 13:45:55;  author: gilles;  state: Exp;  lines: +7 -7
Updated success list
----------------------------
revision 1.179
date: 2006/07/18 01:57:31;  author: gilles;  state: Exp;  lines: +7 -6
Fixed bug about variable mess_size_total_skipped.
Thanks to Doug Gorton
----------------------------
revision 1.178
date: 2006/07/02 23:26:07;  author: gilles;  state: Exp;  lines: +10 -8
Added Mailsite success
----------------------------
revision 1.177
date: 2006/06/13 20:03:21;  author: gilles;  state: Exp;  lines: +14 -14
typos
----------------------------
revision 1.176
date: 2006/06/08 23:00:56;  author: gilles;  state: Exp;  lines: +6 -6
typo
----------------------------
revision 1.175
date: 2006/06/08 00:52:00;  author: gilles;  state: Exp;  lines: +28 -9
Added --regexflag option  to remove "bad" flags when needed.
----------------------------
revision 1.174
date: 2006/06/07 22:17:37;  author: gilles;  state: Exp;  lines: +6 -6
Scalix release
----------------------------
revision 1.173
date: 2006/05/31 11:48:24;  author: gilles;  state: Exp;  lines: +10 -6
Updated "IMAP SERVERS" success list:
- Added Scalix
- Added Eudora WorldMail v2
----------------------------
revision 1.172
date: 2006/05/09 23:06:29;  author: gilles;  state: Exp;  lines: +10 -5
Added split value 1000 by default
----------------------------
revision 1.171
date: 2006/04/27 08:25:04;  author: gilles;  state: Exp;  lines: +21 -13
Added more information with --justconnect
 - OS system.
 - kernel (uname -a)
 - perl version
----------------------------
revision 1.170
date: 2006/04/27 06:58:37;  author: gilles;  state: Exp;  lines: +21 -30
Move "Multiple copies" bug in the FAQ.
Removed "Flag bug in first sync".
Added how to report bug.
----------------------------
revision 1.169
date: 2006/04/13 21:36:15;  author: gilles;  state: Exp;  lines: +7 -6
Added Zimbra IMAP success.
----------------------------
revision 1.168
date: 2006/04/02 01:49:10;  author: gilles;  state: Exp;  lines: +32 -10
Added --delete2 option: remove messages on destination that
are not on the source server.
----------------------------
revision 1.167
date: 2006/03/30 02:33:00;  author: gilles;  state: Exp;  lines: +6 -6
SPLIT print  in debug mode only.
----------------------------
revision 1.166
date: 2006/03/30 02:22:39;  author: gilles;  state: Exp;  lines: +30 -30
Use of parse_headers() instead of parse_headers()
Finished to fix bug "word too long" by splitting request
also in parse_headers2() function.
----------------------------
revision 1.165
date: 2006/03/30 01:41:22;  author: gilles;  state: Exp;  lines: +125 -9
Fixed a bug with interactive passwords (it was not used...)
Added function  parse_headers2() from IMAPClient.pm
----------------------------
revision 1.164
date: 2006/03/26 03:17:48;  author: gilles;  state: Exp;  lines: +97 -9
Fixed the bug "Word too large" by spliting requests on
demand with --split1 and --split2 options.

Added Split() fetch_hash2() in lib
----------------------------
revision 1.163
date: 2006/03/24 04:18:58;  author: gilles;  state: Exp;  lines: +61 -51
Added ask_for_password() function
FLAGS INTERNALDATE and RFC822.SIZE fetch together
----------------------------
revision 1.162
date: 2006/03/22 03:45:05;  author: gilles;  state: Exp;  lines: +59 -31
Added --authuser1 --authuser2 options
----------------------------
revision 1.161
date: 2006/03/20 00:09:41;  author: gilles;  state: Exp;  lines: +12 -42
Fixed default auth to CRAM-MD5
unless not told to.
----------------------------
revision 1.160
date: 2006/03/19 23:54:48;  author: gilles;  state: Exp;  lines: +82 -23
Added SSL support.
Added options --ssl1 --ssl2
Added PLAIN auth support
Added options --authmech1 --authmech2
----------------------------
revision 1.159
date: 2006/03/11 13:00:52;  author: gilles;  state: Exp;  lines: +11 -8
Added failure story dkimap
Fixed bug when both --minage and --maxage are used.
Changed message date selection : date sent instead of internal date.
----------------------------
revision 1.158
date: 2006/03/02 06:28:30;  author: gilles;  state: Exp;  lines: +38 -29
Made acls_sync() to_folder_name()
----------------------------
revision 1.157
date: 2006/03/02 04:32:01;  author: gilles;  state: Exp;  lines: +15 -11
Made --include --exclude options possibly be a list.
----------------------------
revision 1.156
date: 2006/03/02 03:14:12;  author: gilles;  state: Exp;  lines: +6 -5
Added imap_tools link.
----------------------------
revision 1.155
date: 2006/02/28 02:18:13;  author: gilles;  state: Exp;  lines: +14 -7
Updated AUTHOR section.
Talked about confirmation request
Talked about comp.mail.imap
----------------------------
revision 1.154
date: 2006/02/28 02:03:40;  author: gilles;  state: Exp;  lines: +18 -17
Fixed doc: No need to rerun imapsync with expunge now.
----------------------------
revision 1.153
date: 2006/02/22 02:41:52;  author: gilles;  state: Exp;  lines: +10 -9
updated usage()
----------------------------
revision 1.152
date: 2006/02/17 02:57:21;  author: gilles;  state: Exp;  lines: +55 -18
Made the --justconnect a real "just connect" connection,
not a auth connection like it is now.
----------------------------
revision 1.151
date: 2006/02/17 01:28:57;  author: gilles;  state: Exp;  lines: +9 -6
Added documentation  about --regextrans2, dry mode.
----------------------------
revision 1.150
date: 2006/02/16 05:23:05;  author: gilles;  state: Exp;  lines: +9 -7
DBMail 2.0.7 failure story
----------------------------
revision 1.149
date: 2006/02/14 00:44:44;  author: gilles;  state: Exp;  lines: +9 -8
Documented --exclude 'fold1|fold2|f3'
----------------------------
revision 1.148
date: 2006/02/14 00:30:49;  author: gilles;  state: Exp;  lines: +7 -7
More debug for dbmail pb.
----------------------------
revision 1.147
date: 2006/02/08 07:54:46;  author: gilles;  state: Exp;  lines: +7 -9
Just a little debug for Jim.
----------------------------
revision 1.146
date: 2006/01/13 02:43:18;  author: gilles;  state: Exp;  lines: +6 -6
MDaemon
----------------------------
revision 1.145
date: 2005/12/04 01:58:54;  author: gilles;  state: Exp;  lines: +54 -12
Added --minage option
----------------------------
revision 1.144
date: 2005/11/28 00:32:05;  author: gilles;  state: Exp;  lines: +60 -17
Added RFC compliance about NAMESPACE prefixes.
Added --prefix1 option.
----------------------------
revision 1.143
date: 2005/11/27 20:36:12;  author: gilles;  state: Exp;  lines: +12 -10
made --regextrans2 a multiple option
----------------------------
revision 1.142
date: 2005/11/16 01:08:49;  author: gilles;  state: Exp;  lines: +7 -5
Added expunge1 and expunge2 getoption code
----------------------------
revision 1.141
date: 2005/11/16 01:05:16;  author: gilles;  state: Exp;  lines: +6 -6
fixed bug about subscribed folders. Was introduced
by a line commented in 1.137
----------------------------
revision 1.140
date: 2005/10/30 10:16:52;  author: gilles;  state: Exp;  lines: +21 -8
Added --expunge1 --expunge2 options
----------------------------
revision 1.139
date: 2005/07/16 12:46:22;  author: gilles;  state: Exp;  lines: +6 -6
server list
----------------------------
revision 1.138
date: 2005/07/16 11:12:45;  author: gilles;  state: Exp;  lines: +20 -13
Added failure story.
Added license information and url in imap server list.
----------------------------
revision 1.137
date: 2005/06/26 03:08:35;  author: gilles;  state: Exp;  lines: +22 -11
Added --fastio1 --fastio2 options.
Fixed bad variable declaration with --maxage.
----------------------------
revision 1.136
date: 2005/06/23 02:24:19;  author: gilles;  state: Exp;  lines: +42 -29
Fixed --maxsize --skipsize bug
----------------------------
revision 1.135
date: 2005/06/21 01:29:44;  author: gilles;  state: Exp;  lines: +25 -33
Removed md5 test on perl lib
----------------------------
revision 1.134
date: 2005/06/03 10:33:11;  author: gilles;  state: Exp;  lines: +8 -8
updated documentation.
----------------------------
revision 1.133
date: 2005/05/21 02:33:29;  author: gilles;  state: Exp;  lines: +45 -31
Added foldersizes function
----------------------------
revision 1.132
date: 2005/05/20 03:18:48;  author: gilles;  state: Exp;  lines: +23 -16
Updated doc with all options.
----------------------------
revision 1.131
date: 2005/05/20 02:47:56;  author: gilles;  state: Exp;  lines: +5 -37
Removed unused code
----------------------------
revision 1.130
date: 2005/05/20 02:40:26;  author: gilles;  state: Exp;  lines: +23 -15
Added --useheader option
----------------------------
revision 1.129
date: 2005/05/19 01:54:31;  author: gilles;  state: Exp;  lines: +14 -11
Added --buffersize option.
No sync acls by default now.
----------------------------
revision 1.128
date: 2005/05/18 18:52:09;  author: gilles;  state: Exp;  lines: +7 -6
Groupwise
----------------------------
revision 1.127
date: 2005/05/09 04:14:48;  author: gilles;  state: Exp;  lines: +6 -7
Fixed bug about @regexmess who was applied for the first
message only. Thanks to Scott Glenn.
----------------------------
revision 1.126
date: 2005/05/09 04:04:20;  author: gilles;  state: Exp;  lines: +26 -21
Applied patch from Dag-Erling Smørgrav about acl sync pb
----------------------------
revision 1.125
date: 2005/04/22 01:12:18;  author: gilles;  state: Exp;  lines: +23 -9
Allow password input on command line
if none by options --password nor --passfile
Thanks to Brian Cunnie for his patch.
----------------------------
revision 1.124
date: 2005/04/13 11:37:38;  author: gilles;  state: Exp;  lines: +9 -7
Added Samsung Contact success
----------------------------
revision 1.123
date: 2005/03/19 04:25:46;  author: gilles;  state: Exp;  lines: +17 -6
Added check about flags undef
Bug reported from Novell NetMail by Dan Wang
----------------------------
revision 1.122
date: 2005/03/19 04:11:33;  author: gilles;  state: Exp;  lines: +8 -6
Updated Success stories
----------------------------
revision 1.121
date: 2005/02/01 04:03:30;  author: gilles;  state: Exp;  lines: +7 -5
Added links imapcopy and migrationtool
----------------------------
revision 1.120
date: 2005/02/01 02:38:38;  author: gilles;  state: Exp;  lines: +7 -6
Success stories : MDaemon
----------------------------
revision 1.119
date: 2005/02/01 01:54:08;  author: gilles;  state: Exp;  lines: +13 -8
Fixed undef flag array problem (that I've never encounter).
Don't remenber who gave the patch
patches/imapsync-undef_arrayref.diff
----------------------------
revision 1.118
date: 2005/01/17 14:45:25;  author: gilles;  state: Exp;  lines: +10 -8
--regexmess option can be repeated
----------------------------
revision 1.117
date: 2005/01/16 13:51:49;  author: gilles;  state: Exp;  lines: +17 -11
Changed get_separator()
Calling namespace capability if needed
----------------------------
revision 1.116
date: 2005/01/16 01:50:23;  author: gilles;  state: Exp;  lines: +50 -49
Added --regexmess option
----------------------------
revision 1.115
date: 2005/01/10 00:14:45;  author: gilles;  state: Exp;  lines: +10 -12
Tried to get flags in one command, but it is too slow.
----------------------------
revision 1.114
date: 2005/01/07 09:58:59;  author: gilles;  state: Exp;  lines: +82 -76
moved parse_header_msg1
----------------------------
revision 1.113
date: 2005/01/07 07:28:40;  author: gilles;  state: Exp;  lines: +9 -9
Added conditional --dry actions
----------------------------
revision 1.112
date: 2005/01/04 04:49:43;  author: gilles;  state: Exp;  lines: +19 -18
acl only if option
----------------------------
revision 1.111
date: 2005/01/04 04:05:07;  author: gilles;  state: Exp;  lines: +9 -13
Suppressed perl warnings
----------------------------
revision 1.110
date: 2005/01/04 03:56:59;  author: gilles;  state: Exp;  lines: +92 -12
Better performances
----------------------------
revision 1.109
date: 2005/01/02 00:47:24;  author: gilles;  state: Exp;  lines: +6 -9
Removed useless lines
----------------------------
revision 1.108
date: 2004/12/29 03:19:48;  author: gilles;  state: Exp;  lines: +8 -7
--prefix2 applied before --regextrans2
----------------------------
revision 1.107
date: 2004/12/28 23:24:05;  author: gilles;  state: Exp;  lines: +30 -9
Added option --nosyncacls
Added synchronization of acls (by default)
Added --justfolders
----------------------------
revision 1.106
date: 2004/12/28 03:35:00;  author: gilles;  state: Exp;  lines: +9 -8
If --sep2 or --sep1 is given then it has precedence over the
separator given by imap namespace.
----------------------------
revision 1.105
date: 2004/12/28 03:32:30;  author: gilles;  state: Exp;  lines: +7 -11
Removed commented code about separator
----------------------------
revision 1.104
date: 2004/11/13 02:30:24;  author: gilles;  state: Exp;  lines: +7 -6
Added Worldmail success
----------------------------
revision 1.103
date: 2004/10/19 04:15:27;  author: gilles;  state: Exp;  lines: +9 -11
Removed search("ALL") from foldersizes code
----------------------------
revision 1.102
date: 2004/10/15 14:41:25;  author: gilles;  state: Exp;  lines: +36 -21
Add use of fetch_hash() in foldersizes counting.
----------------------------
revision 1.101
date: 2004/10/12 15:17:37;  author: gilles;  state: Exp;  lines: +7 -6
Added OpenWave
----------------------------
revision 1.100
date: 2004/10/08 00:57:33;  author: gilles;  state: Exp;  lines: +33 -12
Added time infos
----------------------------
revision 1.99
date: 2004/10/04 18:42:40;  author: gilles;  state: Exp;  lines: +15 -8
Added explanation about --skipheader option :
only one regex taken into account.
----------------------------
revision 1.98
date: 2004/09/29 15:49:53;  author: gilles;  state: Exp;  lines: +11 -6
Ordered message transfer by uid. Thanks to David Alix suggestion.
----------------------------
revision 1.97
date: 2004/09/29 15:00:26;  author: gilles;  state: Exp;  lines: +7 -6
Success stories : Domino 5.0.6
----------------------------
revision 1.96
date: 2004/07/09 09:08:43;  author: gilles;  state: Exp;  lines: +41 -36
Rewrote foldersizes using size() instead of new and not
available everywhere fetch_hash().
----------------------------
revision 1.95
date: 2004/07/08 23:31:53;  author: gilles;  state: Exp;  lines: +44 -6
Applied --foldersizes patch as is from Reed Sandberg
----------------------------
revision 1.94
date: 2004/06/15 03:42:56;  author: gilles;  state: Exp;  lines: +13 -6
Added time stat
----------------------------
revision 1.93
date: 2004/06/14 23:13:55;  author: gilles;  state: Exp;  lines: +18 -11
Added stats about messages transfered and messages skipped
----------------------------
revision 1.92
date: 2004/05/29 02:23:14;  author: gilles;  state: Exp;  lines: +17 -13
Updated usage()
----------------------------
revision 1.91
date: 2004/04/07 18:51:24;  author: gilles;  state: Exp;  lines: +7 -6
- Expunging the destination server is commented.
- Expunge each message deleted message from the source server
  if --expunge
----------------------------
revision 1.90
date: 2004/04/07 18:14:05;  author: gilles;  state: Exp;  lines: +13 -6
Added --regextrans2 option
----------------------------
revision 1.89
date: 2004/03/31 17:37:23;  author: gilles;  state: Exp;  lines: +17 -13
Changed debug output
----------------------------
revision 1.88
date: 2004/03/29 23:33:00;  author: gilles;  state: Exp;  lines: +27 -11
Added BUGS section about "Multiple copies".
----------------------------
revision 1.87
date: 2004/03/24 00:08:35;  author: gilles;  state: Exp;  lines: +6 -5
Updated Servers list.
----------------------------
revision 1.86
date: 2004/03/21 23:25:47;  author: gilles;  state: Exp;  lines: +19 -7
Added --skipheader option
Added --skipsize   option
----------------------------
revision 1.85
date: 2004/03/13 20:39:10;  author: gilles;  state: Exp;  lines: +7 -6
Updated pod IMAP SERVERS
----------------------------
revision 1.84
date: 2004/03/13 03:43:34;  author: gilles;  state: Exp;  lines: +8 -7
Sort also same type headers (like Received)
----------------------------
revision 1.83
date: 2004/03/12 02:29:00;  author: gilles;  state: Exp;  lines: +8 -5
Do not parse first blanks in headers (dbmail bug, thanks to
Christophe Labouisse)
----------------------------
revision 1.82
date: 2004/03/12 01:40:27;  author: gilles;  state: Exp;  lines: +6 -6
removed only
----------------------------
revision 1.81
date: 2004/03/12 01:39:51;  author: gilles;  state: Exp;  lines: +11 -5
AUTHOR pod section
----------------------------
revision 1.80
date: 2004/03/12 01:11:22;  author: gilles;  state: Exp;  lines: +6 -6
IMail Win2003
----------------------------
revision 1.79
date: 2004/03/12 01:08:12;  author: gilles;  state: Exp;  lines: +6 -5
Added IMail 7.15
----------------------------
revision 1.78
date: 2004/03/12 01:04:10;  author: gilles;  state: Exp;  lines: +19 -9
--timeout option added. Thanks to William Hernandez (fromESS/PR Webmasters)
----------------------------
revision 1.77
date: 2004/03/11 05:33:22;  author: gilles;  state: Exp;  lines: +26 -8
Better authmd5 stuff
Added option --noauthmd5
----------------------------
revision 1.76
date: 2004/02/18 21:34:46;  author: gilles;  state: Exp;  lines: +9 -6
Added mailutil ref
----------------------------
revision 1.75
date: 2004/02/18 14:27:40;  author: gilles;  state: Exp;  lines: +6 -6
dovecot version
----------------------------
revision 1.74
date: 2004/02/12 03:11:14;  author: gilles;  state: Exp;  lines: +11 -6
Updated SIMILAR SOFTWARES
----------------------------
revision 1.73
date: 2004/02/12 00:12:46;  author: gilles;  state: Exp;  lines: +11 -5
www.imap.org
----------------------------
revision 1.72
date: 2004/02/09 15:42:33;  author: gilles;  state: Exp;  lines: +39 -9
Better MD5 handling
----------------------------
revision 1.71
date: 2004/01/29 04:28:36;  author: gilles;  state: Exp;  lines: +23 -7
Added statistics about bytes transfered, skipped
----------------------------
revision 1.70
date: 2004/01/29 03:32:01;  author: gilles;  state: Exp;  lines: +9 -5
Updated "Huge Migration".
----------------------------
revision 1.69
date: 2004/01/29 02:27:41;  author: gilles;  state: Exp;  lines: +45 -16
Patch from Kaspar Brand as is.
----------------------------
revision 1.68
date: 2004/01/28 03:49:29;  author: gilles;  state: Exp;  lines: +17 -13
Added "Success stories"
Sorted "Success stories"
Added windows note.
----------------------------
revision 1.67
date: 2004/01/28 03:10:24;  author: gilles;  state: Exp;  lines: +6 -6
Better description for google.
----------------------------
revision 1.66
date: 2004/01/23 20:27:28;  author: gilles;  state: Exp;  lines: +6 -6
Added IMAP sync words for google response.
----------------------------
revision 1.65
date: 2003/12/24 03:04:34;  author: gilles;  state: Exp;  lines: +20 -7
Wrote separator_invert()
Use separator_invert() to transform separators
----------------------------
revision 1.64
date: 2003/12/23 19:45:46;  author: gilles;  state: Exp;  lines: +5 -8
Removed auth capability debug
----------------------------
revision 1.63
date: 2003/12/23 19:44:47;  author: gilles;  state: Exp;  lines: +7 -6
One line only for --version
----------------------------
revision 1.62
date: 2003/12/23 19:28:12;  author: gilles;  state: Exp;  lines: +6 -5
Added ref pop2imap
----------------------------
revision 1.61
date: 2003/12/23 19:23:07;  author: gilles;  state: Exp;  lines: +11 -6
Updated Success stories
----------------------------
revision 1.60
date: 2003/12/23 18:21:44;  author: gilles;  state: Exp;  lines: +8 -8
Try separator()
----------------------------
revision 1.59
date: 2003/12/23 18:19:24;  author: gilles;  state: Exp;  lines: +34 -16
Added MD5 auth
----------------------------
revision 1.58
date: 2003/12/23 17:26:45;  author: gilles;  state: Exp;  lines: +44 -27
Preparation to MD5 auth
----------------------------
revision 1.57
date: 2003/12/23 03:04:16;  author: gilles;  state: Exp;  lines: +14 -6
Prepared code for separator() use.
Added --justconnect option.
----------------------------
revision 1.56
date: 2003/12/13 19:38:33;  author: gilles;  state: Exp;  lines: +7 -7
Removed tha bad help message about nested folders and
--folder option
----------------------------
revision 1.55
date: 2003/12/13 18:16:56;  author: gilles;  state: Exp;  lines: +30 -15
Better subscribe behavior
----------------------------
revision 1.54
date: 2003/12/12 18:13:01;  author: gilles;  state: Exp;  lines: +7 -6
Updated "Success stories".
----------------------------
revision 1.53
date: 2003/12/12 17:34:45;  author: gilles;  state: Exp;  lines: +17 -6
Added comments.
Added subscribe code.
----------------------------
revision 1.52
date: 2003/12/12 17:16:51;  author: gilles;  state: Exp;  lines: +12 -4
Use join() for the banner (less ugly).
----------------------------
revision 1.51
date: 2003/12/12 17:12:39;  author: gilles;  state: Exp;  lines: +25 -9
Updated the INSTALL pod doc.
Prepared the --subscribe option.
----------------------------
revision 1.50
date: 2003/12/01 16:32:15;  author: gilles;  state: Exp;  lines: +6 -4
Added Mail::IMAPClient::VERSION
----------------------------
revision 1.49
date: 2003/12/01 16:19:46;  author: gilles;  state: Exp;  lines: +6 -6
Updated success stories.
----------------------------
revision 1.48
date: 2003/11/21 04:23:10;  author: gilles;  state: Exp;  lines: +26 -4
Added "HUGE MIGRATION" pod section. (Thanks
        Tommi Lätti
----------------------------
revision 1.47
date: 2003/11/21 03:15:31;  author: gilles;  state: Exp;  lines: +19 -4
Added a SECURITY pod doc section.
----------------------------
revision 1.46
date: 2003/11/21 02:52:37;  author: gilles;  state: Exp;  lines: +6 -4
Documented --subscribed option in usage()
Add GPL link
----------------------------
revision 1.45
date: 2003/11/21 02:42:49;  author: gilles;  state: Exp;  lines: +28 -8
Added usage of sysexists constants.
Exit in error if a problem occurs with options.
Added --subscribed option
----------------------------
revision 1.44
date: 2003/11/11 18:01:49;  author: gilles;  state: Exp;  lines: +5 -5
Fixed get_separator call bug for "to" server.
Thanks Eric Yung.
----------------------------
revision 1.43
date: 2003/11/11 02:18:45;  author: gilles;  state: Exp;  lines: +35 -8
Added --sep1 and --sep2 options in case NAMESPACE can not be
used
Wrote get_separator() function.
----------------------------
revision 1.42
date: 2003/10/20 22:56:57;  author: gilles;  state: Exp;  lines: +27 -16
Added --syncinternaldates option
----------------------------
revision 1.41
date: 2003/10/20 19:19:52;  author: gilles;  state: Exp;  lines: +9 -4
RFC 2060: \Recent can not be altered by the client.
Thanks to Tomasz Orzechowski <tomek AT lj.pl>
----------------------------
revision 1.40
date: 2003/10/17 01:34:59;  author: gilles;  state: Exp;  lines: +5 -5
Added condition to add prefix2
----------------------------
revision 1.39
date: 2003/10/17 01:26:20;  author: gilles;  state: Exp;  lines: +4 -14
Removed commented code
----------------------------
revision 1.38
date: 2003/10/17 01:25:40;  author: gilles;  state: Exp;  lines: +12 -7
Added --prefix2 option for the INBOX. namespace problem
with cyrus imap servers.
----------------------------
revision 1.37
date: 2003/10/16 01:37:52;  author: gilles;  state: Exp;  lines: +9 -8
Added a loop in case there is several identical key header
----------------------------
revision 1.36
date: 2003/10/16 01:23:51;  author: gilles;  state: Exp;  lines: +4 -38
Removed commented code in parse section.
----------------------------
revision 1.35
date: 2003/10/16 01:22:52;  author: gilles;  state: Exp;  lines: +20 -19
Use of parse_header_msg() in "to" server
----------------------------
revision 1.34
date: 2003/10/16 01:18:07;  author: gilles;  state: Exp;  lines: +49 -24
Wrote parse_header_msg()
Use of parse_header_msg for "from" server.
----------------------------
revision 1.33
date: 2003/10/16 00:47:43;  author: gilles;  state: Exp;  lines: +6 -6
Added prefix in debug output for headers
----------------------------
revision 1.32
date: 2003/10/16 00:36:17;  author: gilles;  state: Exp;  lines: +17 -5
Added code to check internal dates
Commented code about internal dates
----------------------------
revision 1.31
date: 2003/08/28 16:07:28;  author: gilles;  state: Exp;  lines: +5 -5
Fixed bug converting separators
----------------------------
revision 1.30
date: 2003/08/27 16:40:38;  author: gilles;  state: Exp;  lines: +9 -5
Added output separators
Fixed bad output fot "To folders"
----------------------------
revision 1.29
date: 2003/08/24 02:01:28;  author: gilles;  state: Exp;  lines: +6 -4
Updated doc about fixed flags first time bug.
----------------------------
revision 1.28
date: 2003/08/24 01:55:25;  author: gilles;  state: Exp;  lines: +8 -30
Set the flags using append_strings() instead of store()
Flags are well set since the first run now.
----------------------------
revision 1.27
date: 2003/08/23 14:40:57;  author: gilles;  state: Exp;  lines: +4 -10
Removed unused code
----------------------------
revision 1.26
date: 2003/08/23 14:36:58;  author: gilles;  state: Exp;  lines: +18 -11
Updated doc with imap servers, freshmeat url
----------------------------
revision 1.25
date: 2003/08/23 01:44:33;  author: gilles;  state: Exp;  lines: +18 -12
Fixed pb with no UIDPLUS and flags
----------------------------
revision 1.24
date: 2003/08/23 00:05:57;  author: gilles;  state: Exp;  lines: +13 -5
Added server software output
Added server capability output
----------------------------
revision 1.23
date: 2003/08/22 21:55:01;  author: gilles;  state: Exp;  lines: +37 -8
Added code to better sync flags
----------------------------
revision 1.22
date: 2003/08/22 17:17:18;  author: gilles;  state: Exp;  lines: +22 -17
Added code to underdstand why Daniele can't create folders
----------------------------
revision 1.21
date: 2003/08/22 16:25:07;  author: gilles;  state: Exp;  lines: +4 -9
Removed commented code adding INBOX. prefix
----------------------------
revision 1.20
date: 2003/08/21 16:31:53;  author: gilles;  state: Exp;  lines: +6 -5
Fixed banner output. Must be after getoptions because of --version
----------------------------
revision 1.19
date: 2003/08/21 16:18:32;  author: gilles;  state: Exp;  lines: +11 -8
Added code and comment to understand why message uid was not printed
 Solution : some imap server don't have UIDPLIS Capability
----------------------------
revision 1.18
date: 2003/08/21 14:37:45;  author: gilles;  state: Exp;  lines: +5 -5
Removed unuseful param in $from->folders call
----------------------------
revision 1.17
date: 2003/08/21 13:49:05;  author: gilles;  state: Exp;  lines: +5 -4
Fixed banner
----------------------------
revision 1.16
date: 2003/08/21 13:47:14;  author: gilles;  state: Exp;  lines: +12 -11
Added imapxfer url, thanks to Daniele Frijia.
Added [] to see blank caracter in folder names.
Added a banner with imapsync version.
----------------------------
revision 1.15
date: 2003/07/17 12:22:23;  author: gilles;  state: Exp;  lines: +4 -4
Added imap debug mode to server2
----------------------------
revision 1.14
date: 2003/07/17 11:58:56;  author: gilles;  state: Exp;  lines: +14 -12
- Fixed port2 variable.
  Thanks again Patrick C. F. Ernzer
----------------------------
revision 1.13
date: 2003/07/16 17:28:59;  author: gilles;  state: Exp;  lines: +6 -3
- fix "you forgot to honour the --port option"
  Thanks to Patrick C. F. Ernzer
----------------------------
revision 1.12
date: 2003/07/07 20:19:58;  author: gilles;  state: Exp;  lines: +20 -4
Updated documentation :
 - Added IMAP SERVERS section (Success and bad stories).
 - Updated SIMILAR SOFTWARES section.
----------------------------
revision 1.11
date: 2003/07/04 23:32:23;  author: gilles;  state: Exp;  lines: +7 -5
- use of namespace separator,
  Thanks to Sebastien Namèche.
----------------------------
revision 1.10
date: 2003/05/05 22:37:48;  author: gilles;  state: Exp;  lines: +5 -5
Updated --folder documentation.
----------------------------
revision 1.9
date: 2003/05/05 22:33:50;  author: gilles;  state: Exp;  lines: +8 -7
Commented INBOX prefix addition (cyrus "buggy" namespace)
----------------------------
revision 1.8
date: 2003/05/05 21:05:14;  author: gilles;  state: Exp;  lines: +20 -4
When folders are given with the --folder option then nested are
also taken into account.
----------------------------
revision 1.7
date: 2003/03/15 03:40:54;  author: gilles;  state: Exp;  lines: +19 -9
Added documentation.
----------------------------
revision 1.6
date: 2003/03/14 02:17:24;  author: gilles;  state: Exp;  lines: +5 -3
Added positive exit if errors occurred.
----------------------------
revision 1.5
date: 2003/03/14 01:20:37;  author: gilles;  state: Exp;  lines: +14 -6
Better debug output.
----------------------------
revision 1.4
date: 2003/03/14 01:01:08;  author: gilles;  state: Exp;  lines: +143 -15
Added documentation.
Added --folder option.
Added error counter.
----------------------------
revision 1.3
date: 2003/03/12 23:19:58;  author: gilles;  state: Exp;  lines: +276 -166
Adapted from transfert-bal-verify.pl
Added usage()
Changed variable names.
Added get_options()
Added option controls.
----------------------------
revision 1.2
date: 2001/07/29 23:27:52;  author: gilles;  state: Exp;  lines: +7 -4
8bit  -> X
----------------------------
revision 1.1
date: 2001/07/29 22:34:01;  author: gilles;  state: Exp;
Initial revision
=============================================================================
