From 1f01202262b1463b63d4678dce56779553d2e237 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20DOUIN?= Date: Wed, 9 Mar 2022 09:48:23 +0100 Subject: [PATCH] check for absolute and relative maildir paths --- src/backends/maildir/maildir_backend.rs | 9 ++++++--- src/backends/maildir/maildir_envelope.rs | 14 +++++++------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/backends/maildir/maildir_backend.rs b/src/backends/maildir/maildir_backend.rs index 10a50a5..9038d8a 100644 --- a/src/backends/maildir/maildir_backend.rs +++ b/src/backends/maildir/maildir_backend.rs @@ -47,13 +47,16 @@ impl<'a> MaildirBackend<'a> { self.validate_mdir_path(self.mdir.path().to_owned()) .map(maildir::Maildir::from) } else { - // If the dir is a valid maildir path, creates a maildir instance from it. + // If the dir is a valid maildir path, creates a maildir + // instance from it. Checks for absolute path first, self.validate_mdir_path(dir.into()) + // then for relative path, + .or_else(|_| self.validate_mdir_path(self.mdir.path().join(dir))) .or_else(|_| { - // Otherwise creates a maildir instance from a + // otherwise creates a maildir instance from a // maildir subdirectory by adding a "." in front // of the name as described in the spec: - // https://cr.yp.to/proto/maildir.html + // https://cr.yp.to/proto/maildir.html. let dir = self .account_config .mailboxes diff --git a/src/backends/maildir/maildir_envelope.rs b/src/backends/maildir/maildir_envelope.rs index 9a581e7..17e064c 100644 --- a/src/backends/maildir/maildir_envelope.rs +++ b/src/backends/maildir/maildir_envelope.rs @@ -5,7 +5,7 @@ use anyhow::{anyhow, Context, Error, Result}; use chrono::DateTime; -use log::{debug, info, trace}; +use log::trace; use std::{ convert::{TryFrom, TryInto}, ops::{Deref, DerefMut}, @@ -125,7 +125,7 @@ impl<'a> TryFrom for MaildirEnvelope { type Error = Error; fn try_from(mut mail_entry: RawMaildirEnvelope) -> Result { - info!("begin: try building envelope from maildir parsed mail"); + trace!(">> build envelope from maildir parsed mail"); let mut envelope = Self::default(); @@ -139,14 +139,14 @@ impl<'a> TryFrom for MaildirEnvelope { .parsed() .context("cannot parse maildir mail entry")?; - debug!("begin: parse headers"); + trace!(">> parse headers"); for h in parsed_mail.get_headers() { let k = h.get_key(); - debug!("header key: {:?}", k); + trace!("header key: {:?}", k); let v = rfc2047_decoder::decode(h.get_value_raw()) .context(format!("cannot decode value from header {:?}", k))?; - debug!("header value: {:?}", v); + trace!("header value: {:?}", v); match k.to_lowercase().as_str() { "date" => { @@ -182,10 +182,10 @@ impl<'a> TryFrom for MaildirEnvelope { _ => (), } } - debug!("end: parse headers"); + trace!("<< parse headers"); trace!("envelope: {:?}", envelope); - info!("end: try building envelope from maildir parsed mail"); + trace!("<< build envelope from maildir parsed mail"); Ok(envelope) } }