Your message dated Wed, 18 Apr 2007 14:12:10 -0400
with message-id <[EMAIL PROTECTED]>
and subject line close bug
has caused the attached Bug report to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what I am
talking about this indicates a serious mail system misconfiguration
somewhere.  Please contact me immediately.)

Debian bug tracking system administrator
(administrator, Debian Bugs database)

--- Begin Message ---
Package: mairix
Version: 0.15.2-1
Severity: normal

Mairix is great -- fast and does just what I need.

Here is a small improvement, submitted because by doing something like
this:

  mairix -o inbox f:aims d:2w-

I carelessly trashed my inbox, which had all my emails for the last 10
years.  I was trying to get the search to return only msgs in the
inbox, and of course '-o' is not what I wanted!  I had backups so no
worries, but meanwhile here is a patch so that mairix will refuse to
do what I mistakenly asked it to.

Here is the patch, which also patches the .texi documentation.  I
didn't patch the man page since it doesn't describe the '-o' option.
I'm not sure the patch is 100% right.  Probably it doesn't catch all
cases where the user might harm themselves; for example, what if the
the mfolder is specified as ../Mail/inbox, then mairix won't know that
the search output will trash inbox (assuming that Mail as the base
directory).  But it's a start.

Anyway the patch:

--- mairix.c.old        2005-02-03 16:52:02.000000000 -0500
+++ mairix.c    2005-03-01 01:52:55.000000000 -0500
@@ -54,6 +54,38 @@
   return 1;
 }
 /*}}}*/
+
+/* return 1 iff string S is a member of the colon-separated
+   folder-list LIST */
+
+static int member_of (char *s, char *list) {
+  char *padded_s, *padded_list;
+  int result;
+
+  if (!s || !list)
+    return 0;
+  /* make copy of s padded with : on front and back */
+  padded_s = Malloc(3+strlen(s));
+  strcpy (padded_s, ":");
+  strcat (padded_s, s);
+  strcat (padded_s, ":");
+
+  /* make copy of list similarly padded */
+  padded_list = Malloc(3+strlen(list));
+  strcpy (padded_list, ":");
+  strcat (padded_list, list);
+  strcat (padded_list, ":");
+
+  /* now search for the folder in the list of folders.  Colon padding
+     means no funny boundary cases to worry about.  Should use a
+     regexp instead (or python!). */
+  result = strstr (padded_list, padded_s);
+  free (padded_list);
+  free (padded_s);
+  return (result ? 1 : 0);
+}
+
+
 static char *copy_value(char *text)/*{{{*/
 {
   char *p;
@@ -483,8 +515,13 @@
         exit(2);
       }
       mfolder = new_string("");
+    } else if (maildir_folders && member_of (mfolder, maildir_folders) ||
+         mh_folders && member_of (mfolder, mh_folders) ||
+         mboxen && member_of (mfolder, mboxen)) {
+       fprintf (stderr, "You requested that search results go to the folder 
'%s'.\nThat is also one of the indexed mail folders!  For your own good, I 
refuse to output search results to an indexed mail folder.\n", mfolder);
+       exit(3);
     }
-
+    
     return search_top(do_threads, do_augment, database_path, folder_base, 
mfolder, argv, output_folder_type, verbose);
     
   } else {
--- mairix.texi.old     2005-02-03 16:52:02.000000000 -0500
+++ mairix.texi 2005-03-01 02:13:40.000000000 -0500
@@ -529,6 +529,13 @@
 and @samp{.} characters as the @b{mfolder} line in the @file{.mairixrc} file
 does.
 
[EMAIL PROTECTED] will refuse to output search results (whether specified
+by the @samp{-o} or in the @file{.mairixrc} file) into one of the
+folders that are indexed; it figures out that list by looking in the
[EMAIL PROTECTED] file, or in the file you specify using the @samp{-f}
+option.  This sanity check prevents you inadvertantly destroying one
+of your important folders (but won't catch all such cases, sadly).
+
 The search mode runs when there is at least one search expression.  Search
 expressions can take forms such as (in increasing order of complexity):
 


-- System Information:
Debian Release: 3.1
  APT prefers testing
  APT policy: (990, 'testing'), (500, 'unstable')
Architecture: i386 (i686)
Kernel: Linux 2.4.27-200502251
Locale: LANG=en_US, LC_CTYPE=en_US (charmap=ISO-8859-1)

Versions of packages mairix depends on:
ii  libc6                       2.3.2.ds1-20 GNU C Library: Shared libraries an

-- no debconf information


--- End Message ---
--- Begin Message ---
The patch on this bug was fixed with the upload of 0.20-1. Please let me
know (or reopen this bug) if you notice any issues related to this bug
popping up again.

Regards,
Mako

-- 
Benjamin Mako Hill
[EMAIL PROTECTED]
http://mako.cc/

Attachment: signature.asc
Description: Digital signature


--- End Message ---

Reply via email to