Dear maintainer,

I've prepared an NMU for mairix (versioned as 0.23+git20131125-0.5) and
intend to submit an RFS to upload it in a week or so.

Regards.

-- 
Sean Whitton
diff -Nru mairix-0.23+git20131125/debian/changelog mairix-0.23+git20131125/debian/changelog
--- mairix-0.23+git20131125/debian/changelog	2015-09-10 14:23:34.000000000 -0700
+++ mairix-0.23+git20131125/debian/changelog	2016-03-24 08:49:23.000000000 -0700
@@ -1,3 +1,12 @@
+mairix (0.23+git20131125-0.5) unstable; urgency=medium
+
+  * Non-maintainer upload.
+  * Add Option-to-follow-symlinks-to-mboxes-in-rc-file.patch to allow the
+    user to restore mairix's old behaviour of following symlinks to
+    mboxes.  Closes: #819127
+
+ -- Sean Whitton <spwhit...@spwhitton.name>  Thu, 24 Mar 2016 08:49:20 -0700
+
 mairix (0.23+git20131125-0.4) unstable; urgency=medium
 
   * Non-maintainer upload.
diff -Nru mairix-0.23+git20131125/debian/patches/Option-to-follow-symlinks-to-mboxes-in-rc-file.patch mairix-0.23+git20131125/debian/patches/Option-to-follow-symlinks-to-mboxes-in-rc-file.patch
--- mairix-0.23+git20131125/debian/patches/Option-to-follow-symlinks-to-mboxes-in-rc-file.patch	1969-12-31 17:00:00.000000000 -0700
+++ mairix-0.23+git20131125/debian/patches/Option-to-follow-symlinks-to-mboxes-in-rc-file.patch	2016-03-24 08:42:34.000000000 -0700
@@ -0,0 +1,110 @@
+From: Sean Whitton <spwhit...@spwhitton.name>
+Date: Wed, 23 Mar 2016 17:18:47 -0700
+Subject: Option to follow symlinks to mboxes in rc file
+Forwarded: https://github.com/rc0/mairix/pull/20
+
+Add .mairixrc option "follow_mbox_symlinks" which allows the user to
+restore the behaviour disabled by commit 74ebca5.
+
+This is particularly useful for users of git-annex.  It is possible to
+work around mairix's symlink-skipping behaviour [1], but a simple
+configuration file option to restore the old behaviour is much more
+practical.
+
+This patch does not change the default behaviour of mairix for users who
+do not explicitly include "follow_mbox_symlinks" in their .mairixrc.
+
+[1] https://joeyh.name/blog/entry/moving_my_email_archives_and_packages_to_git-annex/
+---
+ mairix.c | 9 ++++++++-
+ mairix.h | 3 ++-
+ mbox.c   | 7 ++++---
+ 3 files changed, 14 insertions(+), 5 deletions(-)
+
+diff --git a/mairix.c b/mairix.c
+index 09f255b..2ef6a62 100644
+--- a/mairix.c
++++ b/mairix.c
+@@ -51,6 +51,7 @@ static char *omit = NULL;
+ static char *database_path = NULL;
+ static enum folder_type output_folder_type = FT_MAILDIR;
+ static int skip_integrity_checks = 0;
++static int follow_mbox_symlinks = 0;
+ 
+ enum filetype {
+   M_NONE, M_FILE, M_DIR, M_OTHER
+@@ -249,6 +250,7 @@ static void parse_rc_file(char *name)/*{{{*/
+     }
+     else if (!strncasecmp(p, "mh=", 3)) add_folders(&mh_folders, copy_value(p));
+     else if (!strncasecmp(p, "mbox=", 5)) add_folders(&mboxen, copy_value(p));
++    else if (!strncasecmp(p, "follow_mbox_symlinks", 20)) follow_mbox_symlinks = 1;
+     else if (!strncasecmp(p, "omit=", 5)) add_folders(&omit, copy_value(p));
+ 
+     else if (!strncasecmp(p, "mformat=", 8)) {
+@@ -490,6 +492,7 @@ int main (int argc, char **argv)/*{{{*/
+   int do_integrity_checks = 1;
+   int do_forced_unlock = 0;
+   int do_fast_index = 0;
++  int do_mbox_symlinks = 0;
+ 
+   unsigned int forced_hash_key = CREATE_RANDOM_DATABASE_HASH;
+ 
+@@ -617,6 +620,10 @@ int main (int argc, char **argv)/*{{{*/
+     do_integrity_checks = 0;
+   }
+ 
++  if (follow_mbox_symlinks) {
++    do_mbox_symlinks = 1;
++  }
++
+   if (!folder_base) {
+     fprintf(stderr, "No folder_base/MAIRIX_FOLDER_BASE set\n");
+     exit(2);
+@@ -746,7 +753,7 @@ int main (int argc, char **argv)/*{{{*/
+       unlock_and_exit(2);
+     }
+ 
+-    build_mbox_lists(db, folder_base, mboxen, omit_globs);
++    build_mbox_lists(db, folder_base, mboxen, omit_globs, do_mbox_symlinks);
+ 
+     any_updates = update_database(db, msgs->paths, msgs->n, do_fast_index);
+     if (do_purge) {
+diff --git a/mairix.h b/mairix.h
+index 2480492..b05c1c6 100644
+--- a/mairix.h
++++ b/mairix.h
+@@ -357,7 +357,8 @@ int cull_dead_messages(struct database *db, int do_integrity_checks);
+ 
+ /* In mbox.c */
+ void build_mbox_lists(struct database *db, const char *folder_base,
+-    const char *mboxen_paths, struct globber_array *omit_globs);
++    const char *mboxen_paths, struct globber_array *omit_globs,
++    int do_mbox_symlinks);
+ int add_mbox_messages(struct database *db);
+ void compute_checksum(const char *data, size_t len, checksum_t *csum);
+ void cull_dead_mboxen(struct database *db);
+diff --git a/mbox.c b/mbox.c
+index ebbfa78..f8bed26 100644
+--- a/mbox.c
++++ b/mbox.c
+@@ -743,7 +743,8 @@ void glob_and_expand_paths(const char *folder_base,
+ /*}}}*/
+ 
+ void build_mbox_lists(struct database *db, const char *folder_base, /*{{{*/
+-    const char *mboxen_paths, struct globber_array *omit_globs)
++    const char *mboxen_paths, struct globber_array *omit_globs,
++    int do_mbox_symlinks)
+ {
+   char **raw_paths, **paths;
+   int n_raw_paths, i;
+@@ -776,8 +777,8 @@ void build_mbox_lists(struct database *db, const char *folder_base, /*{{{*/
+     if (lstat(path, &sb) < 0) {
+       /* can't stat */
+     } else {
+-      if (S_ISLNK(sb.st_mode)) {
+-        /* Skip mbox if symlink */
++      if (S_ISLNK(sb.st_mode) && !do_mbox_symlinks) {
++        /* Skip mbox if symlink and no follow_mbox_symlinks in mairixrc */
+         if (verbose) {
+           printf("%s is a link - skipping\n", path);
+         }
diff -Nru mairix-0.23+git20131125/debian/patches/series mairix-0.23+git20131125/debian/patches/series
--- mairix-0.23+git20131125/debian/patches/series	2015-09-10 14:24:21.000000000 -0700
+++ mairix-0.23+git20131125/debian/patches/series	2016-03-24 08:48:17.000000000 -0700
@@ -1,3 +1,4 @@
 #fix-test-suite.patch
 fix-search-with-equal-in-msgid.patch
 fix-256-char-limit-on-filenames.patch
+Option-to-follow-symlinks-to-mboxes-in-rc-file.patch

Attachment: signature.asc
Description: PGP signature

Reply via email to