Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 17 Mar 2020 10:55:28 +0000 (UTC)
From:      Baptiste Daroussin <bapt@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r528570 - in head/mail/neomutt: . files
Message-ID:  <202003171055.02HAtSTa071458@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: bapt
Date: Tue Mar 17 10:55:28 2020
New Revision: 528570
URL: https://svnweb.freebsd.org/changeset/ports/528570

Log:
  Incorporate an patch (in review upstream) which fixes indentation in the sidebar
  
  Reported by:	gahr

Added:
  head/mail/neomutt/files/indent-sidebar.patch   (contents, props changed)
Modified:
  head/mail/neomutt/Makefile

Modified: head/mail/neomutt/Makefile
==============================================================================
--- head/mail/neomutt/Makefile	Tue Mar 17 09:35:41 2020	(r528569)
+++ head/mail/neomutt/Makefile	Tue Mar 17 10:55:28 2020	(r528570)
@@ -2,6 +2,7 @@
 
 PORTNAME=	neomutt
 PORTVERSION=	20200313
+PORTREVISION=	1
 CATEGORIES=	mail
 
 MAINTAINER=	bapt@FreeBSD.org
@@ -23,6 +24,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

Added: head/mail/neomutt/files/indent-sidebar.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/mail/neomutt/files/indent-sidebar.patch	Tue Mar 17 10:55:28 2020	(r528570)
@@ -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 */



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202003171055.02HAtSTa071458>