]> git.llucax.com Git - software/mutt-debian.git/blob - debian/patches/features/maildir-mtime
Prepare and upload 1.5.11+cvs20060403-2 to fix CVE-2006-3242.
[software/mutt-debian.git] / debian / patches / features / maildir-mtime
1 # vi: ft=diff
2 This is the maildir mtime patch by Dale Woolridge.
3
4 The home page for this patch is:
5
6   http://www.mutt.ca/maildir-mtime.html
7
8 * Patch last synced with upstream:
9   - Date: 2004-08-10
10   - File: http://www.mutt.ca/patches/patch-1.5.6.dw.maildir-mtime.1
11
12 * Changes made:
13   - removed a spurious const in add_folder() definition.
14   - added a $maildir_mtime option to allow this patch to be disabled at
15     runtime (see Bug#253261, comments from Zephaniah E. Hull).
16
17 == END PATCH
18 --- maildir-mtime/PATCHES Dec 2002 17:44:54 -0000       3.6
19 +++ maildir-mtime/PATCHES Feb 2004 13:19:42 -0000
20 @@ -0,0 +1 @@
21 +patch-1.5.6.dw.maildir-mtime.1
22 --- maildir-mtime/browser.c Sep 2003 13:03:25 -0000     3.9
23 +++ maildir-mtime/browser.c Feb 2004 13:19:42 -0000
24 @@ -29,2 +29,3 @@
25  #endif
26 +#include "mx.h"
27  
28 @@ -304,4 +305,6 @@ folder_format_str (char *dest, size_t de
29  static void add_folder (MUTTMENU *m, struct browser_state *state,
30 -                       const char *name, const struct stat *s, int new)
31 +                       const char *name, /*DEB const IAN*/ struct stat *s, BUFFY *mbuf)
32  {
33 +  int new = (mbuf) ? mbuf->new : 0;
34 +
35    if (state->entrylen == state->entrymax)
36 @@ -317,2 +320,5 @@ static void add_folder (MUTTMENU *m, str
37  
38 +  if (mbuf && mbuf->magic == M_MAILDIR && mbuf->mtime)
39 +    s->st_mtime = mbuf->mtime;
40 +
41    if (s != NULL)
42 @@ -411,3 +417,3 @@ static int examine_directory (MUTTMENU *
43        tmp = tmp->next;
44 -    add_folder (menu, state, de->d_name, &s, (tmp) ? tmp->new : 0);
45 +    add_folder (menu, state, de->d_name, &s, tmp);
46    }
47 @@ -435,3 +441,3 @@ static int examine_mailboxes (MUTTMENU *
48      {
49 -      add_folder (menu, state, tmp->path, NULL, tmp->new);
50 +      add_folder (menu, state, tmp->path, NULL, tmp);
51        continue;
52 @@ -442,3 +448,3 @@ static int examine_mailboxes (MUTTMENU *
53      {
54 -      add_folder (menu, state, tmp->path, NULL, tmp->new);
55 +      add_folder (menu, state, tmp->path, NULL, tmp);
56        continue;
57 @@ -456,3 +462,3 @@ static int examine_mailboxes (MUTTMENU *
58  
59 -    add_folder (menu, state, buffer, &s, tmp->new);
60 +    add_folder (menu, state, buffer, &s, tmp);
61    }
62 --- maildir-mtime/buffy.c Feb 2004 17:50:43 -0000       3.9
63 +++ maildir-mtime/buffy.c Feb 2004 13:19:42 -0000
64 @@ -229,2 +229,3 @@ int mutt_parse_mailboxes (BUFFER *path, 
65      (*tmp)->newly_created = 0;
66 +    (*tmp)->mtime = 0;
67  
68 @@ -260,2 +261,3 @@ int mutt_buffy_check (int force)
69    struct stat sb;
70 +  struct stat smd;
71    struct dirent *de;
72 @@ -299,2 +301,3 @@ int mutt_buffy_check (int force)
73      tmp->new = 0;
74 +    tmp->mtime = 0;
75  
76 @@ -383,6 +386,13 @@ int mutt_buffy_check (int force)
77           {
78 -           /* one new and undeleted message is enough */
79 -           BuffyCount++;
80 -           tmp->new = 1;
81 -           break;
82 +           if (!tmp->new)
83 +           {
84 +             /* one new and undeleted message is enough */
85 +             BuffyCount++;
86 +             tmp->new = 1;
87 +           }
88 +           snprintf (path, sizeof (path), "%s/new/%s", tmp->path, de->d_name);
89 +           if (!stat (path, &smd) && smd.st_mtime > tmp->mtime)
90 +           {
91 +             tmp->mtime = smd.st_mtime;
92 +           }
93           }
94 --- maildir-mtime/buffy.h Dec 2002 11:19:39 -0000       3.2
95 +++ maildir-mtime/buffy.h Feb 2004 13:19:42 -0000
96 @@ -29,2 +29,3 @@ typedef struct buffy_t
97    struct buffy_t *next;
98 +  time_t mtime;                        /* for maildirs...time of newest entry */
99    short new;                   /* mailbox has new mail */
100 --- DEBIAN/buffy.c
101 +++ DEBIAN/buffy.c.new
102 @@ -389,6 +389,9 @@
103               /* one new and undeleted message is enough */
104               BuffyCount++;
105               tmp->new = 1;
106 +
107 +             if (! option (OPTMAILDIRMTIME)) /* prevent stat calls */
108 +               break;
109             }
110             snprintf (path, sizeof (path), "%s/new/%s", tmp->path, de->d_name);
111             if (!stat (path, &smd) && smd.st_mtime > tmp->mtime)
112 --- DEBIAN/init.h
113 +++ DEBIAN/init.h.new
114 @@ -1022,6 +1022,16 @@
115    ** \fBDON'T CHANGE THIS SETTING UNLESS YOU ARE REALLY SURE WHAT YOU ARE
116    ** DOING!\fP
117    */
118 +  { "maildir_mtime", DT_BOOL, R_NONE, OPTMAILDIRMTIME, 0 },
119 +  /*
120 +  ** .pp
121 +  ** If set, the sort-by-date option in the browser will sort maildirs
122 +  ** smartly, not using the mtime of the maildir itself but that of the
123 +  ** newest message in the new subdirectory, making the sorting by
124 +  ** reverse date much more useful. People with maildirs over NFS may
125 +  ** wish to leave this option unset.
126 +  **
127 +  */
128  #ifdef USE_HCACHE
129  
130    { "header_cache", DT_PATH, R_NONE, UL &HeaderCache, 0 },
131 --- DEBIAN/mutt.h
132 +++ DEBIAN/mutt.h.new
133 @@ -396,6 +396,7 @@
134    OPTINCLUDEONLYFIRST,
135    OPTKEEPFLAGGED,
136    OPTMAILCAPSANITIZE,
137 +  OPTMAILDIRMTIME,
138    OPTMAILDIRTRASH,
139    OPTMARKERS,
140    OPTMARKOLD,