Commit Graph

715 Commits

Author SHA1 Message Date
Manos Pitsidianakis
1da6d75b08
melib/text_processing: add new wcwidth implementation
Download and parse Unicode data files to judge code point width.
Inspired by https://github.com/ridiculousfish/widecharwidth/
2020-11-21 02:09:18 +02:00
Manos Pitsidianakis
a7c0bca8ce
Fix test errors and warnings 2020-11-21 02:09:18 +02:00
Manos Pitsidianakis
d404910a0f
melib/smtp: impl AUTH LOGIN
AUTH LOGIN is deprecated but predictably still around.
2020-11-15 21:30:54 +02:00
Manos Pitsidianakis
aa7ebf2918
melib/smtp: fix SMTP syntax error on DSN notify use 2020-11-10 20:30:50 +02:00
Manos Pitsidianakis
2544f54107
melib/compose: prevent bare newlines in finalised drafts 2020-11-10 17:26:06 +02:00
Manos Pitsidianakis
f0800f38a8
melib/maildir: make MaildirOp return Result<PathBuf> 2020-11-09 03:36:40 +02:00
Manos Pitsidianakis
a34f0aac5b
melib: fix bincode serialization
Previous commit changed bincode deserializes in maildir and sqlite3.rs
from bincode::deserialize_from to using bincode::config::DefaultOptions
and bincode::Options trait's method deserialize_from.

However, these two different deserializes use a different default
settings: https://github.com/servo/bincode/issues/348

Specifically, varint encoding for integers is the default for
DefaultOptions but not when using bincode::{de,}serialize_* functions.
That means that serialized structs were not able to be deserialized.
This commit makes all {de,}serializations use the DefaultOptions
interface rather than the top level functions.
2020-11-09 00:40:32 +02:00
Manos Pitsidianakis
353ac2d029
melib: set upper limit for bincode deserialize
If struct memory layout changes, bincode deserialize fails with memory
allocation error of an obscene amount of bytes. Set upper limit to
deserialized bytes in each place deserialize happens.
2020-11-06 19:05:09 +02:00
Manos Pitsidianakis
6c07046b66
Update bincode dependency to 1.3.1 2020-11-06 18:38:18 +02:00
Rudi Horn
f1bdae65ee
melib/jmap: add HTTP redirect policy to client
Meli currently uses the .well-known/jmap URL and the RFC8620 requires that any redirects are followed (https://tools.ietf.org/html/rfc8620#section-2.2). This small change allows redirects to happen.
2020-11-04 20:07:51 +02:00
Manos Pitsidianakis
9a9c876f4a
melib: add more encodings
Add more encodings already supported by `encoding` crate:

  - iso-8859-3,
  - iso-8859-4,
  - iso-8859-5,
  - iso-8859-6,
  - iso-8859-8,
  - iso-8859-10,
  - iso-8859-13,
  - iso-8859-14,
  - iso-8859-16,
  - gb-2312
  - big-5
  - iso-2022-jp
  - euc-jp
  - koi8-r
  - koi8-u
  - utf-16
2020-10-26 22:26:29 +02:00
Manos Pitsidianakis
d5aa2cb3ef
melib/line_break: add segment tree impl
The widths of subslices of a line are calculated in each call to
`binary_search_by` when reflowing long lines. This can be done in Ologn
queries with a segment tree.
2020-10-20 23:53:00 +03:00
Manos Pitsidianakis
f7fc2e31e0
melib: Remove unused crossbeam dependency 2020-10-20 23:30:29 +03:00
Manos Pitsidianakis
00f5c4b9c0
melib/maildir: split parsing into big chunks 2020-10-20 23:27:10 +03:00
Manos Pitsidianakis
d4e347289c
melib/README: update feature table 2020-10-20 23:15:52 +03:00
Manos Pitsidianakis
662706607b
melib: remove memmap dependency
It's unmaintained, and the IO performance gains are negligible
2020-10-20 22:41:44 +03:00
Manos Pitsidianakis
91fe7435f7
melib/imap: add suggestion on STARTTLS error
If server port is 993 (IMAPS) and starttls is enabled, suggest turning
it off if starttls fails.
2020-10-20 14:58:16 +03:00
Manos Pitsidianakis
7a9c150f33
melib/imap: fetch References header along with ENVELOPE
Threading was broken if information was needed from References header.
For example, mailman might alter some Message-IDs when using its NNTP
bridge and the complete references are necessary to rebuild the thread,
which is only available in References whereas ENVELOPE has only
In-Reply-To.
2020-10-18 17:42:54 +03:00
Manos Pitsidianakis
b9f4d718c7
melib/sqlite3: reset db on version mismatch 2020-10-18 17:41:06 +03:00
Manos Pitsidianakis
54cb4ea623
melib/build.rs: remove unnecessary file creation 2020-10-18 15:34:09 +03:00
Manos Pitsidianakis
a702a04043
melib/attachments: add SMIME signature variant 2020-10-16 12:47:16 +03:00
Manos Pitsidianakis
4c1a9b2485
Fix minor warnings 2020-10-15 19:01:42 +03:00
Manos Pitsidianakis
20840625d6
melib/gpgme: trim header file 2020-10-14 01:03:57 +03:00
Manos Pitsidianakis
d51d0187a6
melib/imap: change byte cache String -> Vec<u8> 2020-10-13 21:46:03 +03:00
Manos Pitsidianakis
2944fc992b
melib/imap/untagged: handle EXPUNGE if our MSNs invalid 2020-10-13 21:18:26 +03:00
Manos Pitsidianakis
535d04f4f0
melib/imap/untagged: lower mbox count on EXPUNGE events 2020-10-13 21:17:27 +03:00
Manos Pitsidianakis
cd68008e67
melib: Implement delete_messages for IMAP, Maildir 2020-10-13 13:57:04 +03:00
Manos Pitsidianakis
9ce62c735a
compose: add key selection state for gpg operations
Closes #81
2020-10-11 18:11:04 +03:00
Manos Pitsidianakis
4dd8474c30
gpgme: add PartialEq impl for Key 2020-10-11 16:53:04 +03:00
Manos Pitsidianakis
afe7eed9ef
melib/compose: don't base64 encode unless it's not ascii 2020-10-11 16:53:04 +03:00
Manos Pitsidianakis
59e60f8d28
gpgme: add context flag set/get 2020-10-11 16:53:04 +03:00
Manos Pitsidianakis
afee1e2be5
melib/compose: fix wrong Content-Type on PGP signatures and message/rfc822 2020-10-11 16:53:04 +03:00
Manos Pitsidianakis
5d968b7c40
imap: fix out of bounds panic on receive EXPUNGE
Closes #82
2020-10-11 16:53:04 +03:00
Manos Pitsidianakis
23ca41e3e8
add libgpgme feature 2020-10-05 21:10:00 +03:00
Manos Pitsidianakis
b9c07bacef
melib: decode text inline message/rfc822 attachments 2020-09-27 20:57:42 +03:00
Manos Pitsidianakis
b0e50a29bd
melib/list_management: don't ignore "NO" in List-Post 2020-09-25 13:45:48 +03:00
Manos Pitsidianakis
6ccb4e9544
melib: bump version to 0.6.2 2020-09-24 17:13:07 +03:00
Manos Pitsidianakis
e407b1e224
melib: add README.md and email module doco 2020-09-24 16:54:06 +03:00
Manos Pitsidianakis
a1e3f269de
melib/imap: don't manually check for mailbox permissions 2020-09-24 12:17:32 +03:00
Manos Pitsidianakis
e556191bab
melib/imap: hide LOGIN from debug log 2020-09-24 12:16:50 +03:00
Manos Pitsidianakis
ce559b05d7
melib/imap: EXAMINE instead of SELECT in IDLE connection 2020-09-24 12:15:00 +03:00
Manos Pitsidianakis
36cc0d4212
melib/jmap: implement refresh()
Closes #77
2020-09-23 10:52:19 +03:00
Manos Pitsidianakis
425f4b9930
melib/jmap: add Type parameter to Id, State
Make Id, State have a type parameter to the object it refers to (eg
`Id<EmailObject>`) instead of just a String
2020-09-23 10:52:19 +03:00
Manos Pitsidianakis
19d4a191d8
melib/jmap: add email state sync 2020-09-21 16:17:37 +03:00
Manos Pitsidianakis
4cf0b9ffec
melib/jmap: impl copy_messages()
Closes #76
2020-09-20 15:00:03 +03:00
Manos Pitsidianakis
baa44109f2
melib/thread: "merge" duplicate messages in threads 2020-09-20 15:00:03 +03:00
Manos Pitsidianakis
28deba708c
melib/imap: check if FETCH reply was intended for us
After sending a FETCH, the command results might be mixed with
unsolicited FETCH replies. Check if that happens.
2020-09-20 15:00:03 +03:00
Manos Pitsidianakis
ea0fb114e1
melib/imap: delete reverse_modseq storage
Modsequences are not unique, and many messages may share the same
modsequence. So storing a reverse mapping of modsequences to messages is
invalid.
2020-09-20 13:29:57 +03:00
Manos Pitsidianakis
8e036f045c
melib/imap: accept literal astrings in bodystructure 2020-09-19 22:54:11 +03:00
Manos Pitsidianakis
3210ee5c67
melib/jmap: impl save() message
Closes #60
2020-09-19 20:44:39 +03:00