diff options
author | Baptiste Daroussin <bapt@FreeBSD.org> | 2020-03-17 10:55:28 +0000 |
---|---|---|
committer | Baptiste Daroussin <bapt@FreeBSD.org> | 2020-03-17 10:55:28 +0000 |
commit | bbc0a006eb811b7a8e7fc91a0149a9f2c1c58262 (patch) | |
tree | 6a2e6062fa9483507c4fc72a679f47d489850b1f /mail/neomutt | |
parent | e5b25769be641a1310526e8735c0d6500b3d11df (diff) | |
download | freebsd-ports-bbc0a006eb811b7a8e7fc91a0149a9f2c1c58262.zip |
Incorporate an patch (in review upstream) which fixes indentation in the sidebar
Reported by: gahr
Diffstat (limited to 'mail/neomutt')
-rw-r--r-- | mail/neomutt/Makefile | 3 | ||||
-rw-r--r-- | mail/neomutt/files/indent-sidebar.patch | 104 |
2 files changed, 107 insertions, 0 deletions
diff --git a/mail/neomutt/Makefile b/mail/neomutt/Makefile index b558f4f0e4bf..e17e29e521fc 100644 --- a/mail/neomutt/Makefile +++ b/mail/neomutt/Makefile @@ -2,6 +2,7 @@ PORTNAME= neomutt PORTVERSION= 20200313 +PORTREVISION= 1 CATEGORIES= mail MAINTAINER= bapt@FreeBSD.org @@ -24,6 +25,8 @@ HAS_CONFIGURE= yes OPTIONS_SUB= yes SHEBANG_FILES= contrib/smime_keys +EXTRA_PATCHES= ${FILESDIR}/indent-sidebar.patch:-p1 + OPTIONS_DEFINE= NLS DOCS SASL IDN FLOCK GPGME NOTMUCH OPTIONS_DEFAULT=SASL TOKYOCABINET NOTMUCH GPGME LMDB NCURSES GSSAPI_BASE OPTIONS_MULTI= HCACHE diff --git a/mail/neomutt/files/indent-sidebar.patch b/mail/neomutt/files/indent-sidebar.patch new file mode 100644 index 000000000000..d5a530a7d216 --- /dev/null +++ b/mail/neomutt/files/indent-sidebar.patch @@ -0,0 +1,104 @@ +From a7f602f120788bb8501cba46e9de6cf9de35a742 Mon Sep 17 00:00:00 2001 +From: Richard Russon <rich@flatcap.org> +Date: Sun, 15 Mar 2020 17:12:58 +0000 +Subject: [PATCH] fix sidebar indent + +Take care when comparing "$folder" against an IMAP Mailbox path +(the `user@` may not be present on both sides). + +Fixes: #2173 +Fixes: #2175 +--- + sidebar.c | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++---- + 1 file changed, 56 insertions(+), 4 deletions(-) + +diff --git a/sidebar.c b/sidebar.c +index 199fa7df0b..1f0943371a 100644 +--- a/sidebar.c ++++ b/sidebar.c +@@ -36,6 +36,7 @@ + #include <string.h> + #include "mutt/lib.h" + #include "config/lib.h" ++#include "email/lib.h" + #include "core/lib.h" + #include "gui/lib.h" + #include "sidebar.h" +@@ -833,6 +834,48 @@ static void fill_empty_space(struct MuttWindow *win, int first_row, + } + } + ++/** ++ * imap_is_prefix - Check if folder matches the beginning of mbox ++ * @param folder Folder ++ * @param mbox Mailbox path ++ * @param plen Prefix length ++ * @retval true If folder is the prefix of mbox ++ */ ++static bool imap_is_prefix(const char *folder, const char *mbox, size_t *plen) ++{ ++ struct Url *url_m = url_parse(mbox); ++ struct Url *url_f = url_parse(folder); ++ ++ if (!url_m || !url_f) ++ return false; ++ ++ bool rc = false; ++ ++ if (mutt_str_strcasecmp(url_m->host, url_f->host) != 0) ++ goto done; ++ ++ if (url_m->user && url_f->user && (mutt_str_strcasecmp(url_m->user, url_f->user) != 0)) ++ goto done; ++ ++ size_t mlen = mutt_str_strlen(url_m->path); ++ size_t flen = mutt_str_strlen(url_f->path); ++ if (flen > mlen) ++ goto done; ++ ++ if (mutt_str_strncmp(url_m->path, url_f->path, flen) != 0) ++ goto done; ++ ++ if (url_m->user && !url_f->user) ++ *plen += mutt_str_strlen(url_m->user) + 1; ++ rc = true; ++ ++done: ++ url_free(&url_m); ++ url_free(&url_f); ++ ++ return rc; ++} ++ + /** + * draw_sidebar - Write out a list of mailboxes, in a panel + * @param win Window to draw on +@@ -915,15 +958,24 @@ static void draw_sidebar(struct MuttWindow *win, int num_rows, int num_cols, int + size_t maildirlen = mutt_str_strlen(C_Folder); + if (maildirlen && C_SidebarDelimChars && + strchr(C_SidebarDelimChars, C_Folder[maildirlen - 1])) ++ { + maildirlen--; ++ } + + /* check whether C_Folder is a prefix of the current folder's path */ + bool maildir_is_prefix = false; +- if ((mutt_buffer_len(&m->pathbuf) > maildirlen) && +- (mutt_str_strncmp(C_Folder, mailbox_path(m), maildirlen) == 0) && +- C_SidebarDelimChars && strchr(C_SidebarDelimChars, mailbox_path(m)[maildirlen])) ++ if (m->magic == MUTT_IMAP) + { +- maildir_is_prefix = true; ++ maildir_is_prefix = imap_is_prefix(C_Folder, mailbox_path(m), &maildirlen); ++ } ++ else ++ { ++ if ((mutt_buffer_len(&m->pathbuf) > maildirlen) && ++ (mutt_str_strncmp(C_Folder, mailbox_path(m), maildirlen) == 0) && ++ C_SidebarDelimChars && strchr(C_SidebarDelimChars, mailbox_path(m)[maildirlen])) ++ { ++ maildir_is_prefix = true; ++ } + } + + /* calculate depth of current folder and generate its display name with indented spaces */ |