Ravenports generated: 20 Sep 2022 06:00
[ravenports.git] / bucket_8F / mutt
1 # Buildsheet autogenerated by ravenadm tool -- Do not edit.
2
3 NAMEBASE=               mutt
4 VERSION=                2.2.7
5 KEYWORDS=               mail
6 VARIANTS=               standard
7 SDESC[standard]=        Powerful mail client
8 HOMEPAGE=               http://www.mutt.org/
9 CONTACT=                Leonid_Bobrov[goleo@disroot.org]
10
11 DOWNLOAD_GROUPS=        main
12 SITES[main]=            http://ftp.mutt.org/pub/mutt/
13 DISTFILE[1]=            mutt-2.2.7.tar.gz:main
14 DF_INDEX=               1
15 SPKGS[standard]=        complete
16                         primary
17                         docs
18                         nls
19
20 OPTIONS_AVAILABLE=      none
21 OPTIONS_STANDARD=       none
22
23 BUILD_DEPENDS=          docbook-xsl:primary:standard
24                         lynx:primary:standard
25                         gdbm:primary:static
26 BUILDRUN_DEPENDS=       cyrus-sasl:primary:standard
27                         gettext:runtime:standard
28                         libidn2:primary:standard
29 RUN_DEPENDS=            media-types:single:standard
30
31 USES=                   cpe ncurses perl shebangfix ssl zlib iconv:translit
32
33 LICENSE=                GPLv2+:primary
34 LICENSE_TERMS=          primary:{{WRKSRC}}/COPYRIGHT
35 LICENSE_FILE=           GPLv2+:stock
36 LICENSE_SCHEME=         solo
37
38 FPC_EQUIVALENT=         mail/mutt
39 SHEBANG_FILES=          contrib/smime_keys_test.pl
40                         doc/gen-map-doc
41                         smime_keys.pl
42
43 MUST_CONFIGURE=         gnu
44 CONFIGURE_ARGS=         --disable-debug
45                         --disable-flock
46                         --enable-compressed
47                         --enable-external_dotlock
48                         --enable-fcntl
49                         --disable-gpgme
50                         --enable-hcache
51                         --enable-imap
52                         --enable-nls
53                         --enable-pop
54                         --enable-sidebar
55                         --enable-smtp
56                         --mandir={{MANPREFIX}}/man
57                         --prefix={{PREFIX}}
58                         --sysconfdir={{PREFIX}}/etc
59                         --with-docdir={{PREFIX}}/share/doc/mutt
60                         --with-curses
61                         --with-gdbm
62                         --with-idn2
63                         --with-sasl={{LOCALBASE}}
64                         --with-ssl
65                         --with-libiconv-prefix={{LOCALBASE}}
66                         --without-kyotocabinet
67                         --without-tokyocabinet
68                         --without-qdbm
69
70 CFLAGS=                 -I{{NCURSESINC}}
71
72 post-install:
73         ${RM} ${STAGEDIR}${PREFIX}/etc/mime.types
74
75 [FILE:414:descriptions/desc.primary]
76 Mutt is a small but very powerful text-based mail client for Unix-like
77 operating systems. Features include support for multiple mailbox formats
78 (including IMAP, POP3, mbox, MMDF, MH, Maildir), MIME/RFC2047, message
79 threading, encryption and signing with PGP/GPG and S/MIME, and many
80 operations can use regular expressions. It's highly customizable with
81 many options for colours, key bindings, display formats etc.
82
83
84 [FILE:96:distinfo]
85 eb13858f58bb369f477bf652d90e9b6aaddd0d610acbea3455049e5efad36df1      5522342 mutt-2.2.7.tar.gz
86
87
88 [FILE:288:manifests/plist.primary]
89 @sample etc/Muttrc.sample
90 bin/
91  flea
92  mutt
93 @(,mail,2755) bin/mutt_dotlock
94  mutt_pgpring
95  muttbug
96  pgpewrap
97  smime_keys
98 share/info/mutt.info
99 share/man/man1/
100  mutt.1.gz
101  mutt_dotlock.1.gz
102  mutt_pgpring.1.gz
103  pgpewrap.1.gz
104  smime_keys.1.gz
105 share/man/man5/
106  mbox.5.gz
107  mmdf.5.gz
108  muttrc.5.gz
109
110
111 [FILE:1089:manifests/plist.nls]
112 share/locale/bg/LC_MESSAGES/mutt.mo
113 share/locale/ca/LC_MESSAGES/mutt.mo
114 share/locale/cs/LC_MESSAGES/mutt.mo
115 share/locale/da/LC_MESSAGES/mutt.mo
116 share/locale/de/LC_MESSAGES/mutt.mo
117 share/locale/el/LC_MESSAGES/mutt.mo
118 share/locale/eo/LC_MESSAGES/mutt.mo
119 share/locale/es/LC_MESSAGES/mutt.mo
120 share/locale/et/LC_MESSAGES/mutt.mo
121 share/locale/eu/LC_MESSAGES/mutt.mo
122 share/locale/fi/LC_MESSAGES/mutt.mo
123 share/locale/fr/LC_MESSAGES/mutt.mo
124 share/locale/ga/LC_MESSAGES/mutt.mo
125 share/locale/gl/LC_MESSAGES/mutt.mo
126 share/locale/hu/LC_MESSAGES/mutt.mo
127 share/locale/id/LC_MESSAGES/mutt.mo
128 share/locale/it/LC_MESSAGES/mutt.mo
129 share/locale/ja/LC_MESSAGES/mutt.mo
130 share/locale/ko/LC_MESSAGES/mutt.mo
131 share/locale/lt/LC_MESSAGES/mutt.mo
132 share/locale/nl/LC_MESSAGES/mutt.mo
133 share/locale/pl/LC_MESSAGES/mutt.mo
134 share/locale/pt_BR/LC_MESSAGES/mutt.mo
135 share/locale/ru/LC_MESSAGES/mutt.mo
136 share/locale/sk/LC_MESSAGES/mutt.mo
137 share/locale/sv/LC_MESSAGES/mutt.mo
138 share/locale/tr/LC_MESSAGES/mutt.mo
139 share/locale/uk/LC_MESSAGES/mutt.mo
140 share/locale/zh_CN/LC_MESSAGES/mutt.mo
141 share/locale/zh_TW/LC_MESSAGES/mutt.mo
142
143
144 [FILE:915:patches/patch-Makefile.in]
145 --- Makefile.in.orig    2022-08-07 17:20:34 UTC
146 +++ Makefile.in
147 @@ -1690,18 +1690,9 @@ install-exec-hook:
148                 rm -f $(DESTDIR)$(bindir)/mutt.dotlock ;                \
149                 ln -sf $(DESTDIR)$(bindir)/mutt_dotlock $(DESTDIR)$(bindir)/mutt.dotlock ; \
150         fi
151 -       if test -f $(DESTDIR)$(bindir)/mutt_dotlock && test x$(DOTLOCK_GROUP) != x ; then \
152 -               chgrp $(DOTLOCK_GROUP) $(DESTDIR)$(bindir)/mutt_dotlock && \
153 -               chmod $(DOTLOCK_PERMISSION) $(DESTDIR)$(bindir)/mutt_dotlock || \
154 -               { echo "Can't fix mutt_dotlock's permissions!  This is required to lock mailboxes in the mail spool directory." >&2 ; exit 1 ; } \
155 -       fi
156  
157  install-data-local:
158         $(MKDIR_P) $(DESTDIR)$(sysconfdir)
159 -       $(INSTALL) -m 644 $(srcdir)/mime.types $(DESTDIR)$(sysconfdir)/mime.types.dist
160 -       -if [ ! -f $(DESTDIR)$(sysconfdir)/mime.types ]; then \
161 -               $(INSTALL) -m 644 $(srcdir)/mime.types $(DESTDIR)$(sysconfdir); \
162 -       fi
163  
164  uninstall-local:
165         for i in mime.types ; do \
166
167
168 [FILE:422:patches/patch-commands.c]
169 --- commands.c.orig     2022-07-31 18:15:22 UTC
170 +++ commands.c
171 @@ -302,7 +302,7 @@ int mutt_display_message (HEADER *cur)
172      {
173        if (cur->security & GOODSIGN)
174        {
175 -       if (!crypt_smime_verify_sender(cur))
176 +       if (option(OPTSMIMENOSENDER) || !crypt_smime_verify_sender(cur))
177           mutt_message ( _("S/MIME signature successfully verified."));
178         else
179           mutt_error ( _("S/MIME certificate owner does not match sender."));
180
181
182 [FILE:521:patches/patch-contrib_Makefile.in]
183 --- contrib/Makefile.in.orig    2022-08-07 17:20:34 UTC
184 +++ contrib/Makefile.in
185 @@ -280,7 +280,7 @@ top_build_prefix = @top_build_prefix@
186  top_builddir = @top_builddir@
187  top_srcdir = @top_srcdir@
188  subdir = contrib
189 -SAMPLES = Mush.rc Pine.rc gpg.rc pgp2.rc pgp5.rc pgp6.rc Tin.rc \
190 +SAMPLES = Mush.rc Pine.rc gpg.rc pgp2.rc pgp6.rc Tin.rc \
191         sample.mailcap sample.muttrc sample.muttrc-sidebar sample.muttrc-tlr \
192         sample.muttrc-compress sample.muttrc-starter \
193         sample.vimrc-sidebar colors.default colors.linux smime.rc \
194
195
196 [FILE:1341:patches/patch-doc_Makefile.in]
197 --- doc/Makefile.in.orig        2022-08-07 17:20:34 UTC
198 +++ doc/Makefile.in
199 @@ -581,14 +581,7 @@ install-data-local: makedoc-all instdoc
200             $(INSTALL) -m 644 $(srcdir)/$$f $(DESTDIR)$(docdir) ; \
201           fi \
202         done
203 -       $(INSTALL) -m 644 Muttrc $(DESTDIR)$(sysconfdir)/Muttrc.dist
204 -       -if [ -f $(DESTDIR)$(pkgdatadir)/Muttrc ] ; then \
205 -               mv $(DESTDIR)$(pkgdatadir)/Muttrc* $(DESTDIR)$(sysconfdir) ; \
206 -       elif [ -f $(DESTDIR)$(pkgdatadir)/../Muttrc ] ; then \
207 -               mv $(DESTDIR)$(pkgdatadir)/../Muttrc* $(DESTDIR)$(sysconfdir) ; \
208 -       elif [ ! -f $(DESTDIR)$(sysconfdir)/Muttrc ] ; then \
209 -               $(INSTALL) -m 644 Muttrc $(DESTDIR)$(sysconfdir) ; \
210 -       fi
211 +       $(INSTALL) -m 644 $(srcdir)/Muttrc $(DESTDIR)$(sysconfdir)/Muttrc.sample
212         -if [ -f mutt.info ] ; then \
213           $(MKDIR_P) $(DESTDIR)$(infodir) ; \
214           $(INSTALL) -m 644 mutt.info $(DESTDIR)$(infodir) ; \
215 @@ -630,9 +623,7 @@ uninstall-local:
216  
217  check:
218  manual.txt: manual.html
219 -       -LC_ALL=C lynx -localhost -dump -nolist -nonumbers -with_backspaces -display_charset=us-ascii manual.html > $@ || \
220 -       LC_ALL=C w3m -T text/html -I utf-8 -O utf-8 -dump < manual.html > $@ || \
221 -       LC_ALL=C elinks -dump -no-numbering -no-references manual.html | sed -e 's,\\001, ,g' > $@
222 +       LC_ALL=C lynx -localhost -dump -nolist -nonumbers -with_backspaces -display_charset=us-ascii manual.html > $@
223  
224  Muttrc: stamp-doc-rc
225  
226
227
228 [FILE:4313:patches/patch-hdrline.c]
229 --- hdrline.c.orig      2022-05-11 16:57:07 UTC
230 +++ hdrline.c
231 @@ -248,6 +248,89 @@ static char *apply_subject_mods (ENVELOP
232   * %Y = `x-label:' field (if present, tree unfolded, and != parent's x-label)
233   * %Z = status flags   */
234  
235 +static void
236 +format_smartdate( char *buf, size_t max, struct tm *tm, smartdate_type type )
237 +{
238 +    char *strftime_fmt = NULL;
239 +
240 +    switch( type ) {
241 +        case FUTURE:        /* Date in the future */
242 +            strftime_fmt = "%d%h%y!";
243 +            break;
244 +        case SMARTTIME:     /* Today */
245 +            strftime_fmt = "%I:%M %p";
246 +            break;
247 +        case YESTERDAY:     /* Yesterday */
248 +            strncpy( buf, "Yesterday", max );
249 +            break;
250 +        case WEEKDAY:       /* Within the last 7 days */
251 +            strftime_fmt = "%A";
252 +            break;
253 +        case STANDARD:      /* Within the last six months */
254 +            strftime_fmt = "%h %d";
255 +            break;
256 +        case ANCIENT:       /* Older than 6 months */
257 +            strftime_fmt = "%h %Y";
258 +            break;
259 +    }
260 +
261 +    if( strftime_fmt != NULL ) {
262 +        strftime( buf, max, strftime_fmt, tm );
263 +    }
264 +}
265 +
266 +static void
267 +smartdate( char *buf, size_t max, struct tm *tm )
268 +{
269 +    smartdate_type type = 0;
270 +
271 +    struct tm now;
272 +
273 +    time_t sse = mktime( tm );   /* Seconds since epoch */
274 +    time_t sse_now = time(NULL); /* Seconds since epoch until now */
275 +
276 +    int dse = 0;            /* Days since epoch */
277 +    int dse_now = 0;        /* Days since epoch until today */
278 +
279 +    /* Calculate the number of days since epoch */
280 +    dse = sse / (60*60*24);
281 +    dse_now = sse_now / (60*60*24);
282 +
283 +    /* Default display type */
284 +    type = STANDARD;
285 +
286 +    /* Check if the date is in the future */
287 +    if( dse > dse_now ) {
288 +        type = FUTURE;
289 +    }
290 +    else {
291 +        int diff = dse_now - dse;
292 +        if( diff == 0 ) type = SMARTTIME;
293 +        else if( diff == 1 ) type = YESTERDAY;
294 +        else if( diff < 7 ) type = WEEKDAY;
295 +        else if( diff > 215 ) type = ANCIENT;  /* Surely older than six
296 +                                                  months */
297 +        else if( diff > 180 ) {
298 +            /*
299 +             * Slightly heavy calculation to check if the date is more
300 +             * than six months in the past.  This calculation uses
301 +             * calendar months and not the exact number of days.  So,
302 +             * January 31, 2003 would be considered more than six months
303 +             * old whether today's date is August 1 or August 31, 2003
304 +             */
305 +            int monthdiff;
306 +            localtime_r( &sse_now, &now );
307 +            monthdiff = ( now.tm_mon - tm->tm_mon )
308 +                + ( ( now.tm_year - tm->tm_year ) * 12 );
309 +            if( monthdiff > 6 ) {
310 +                type = ANCIENT;
311 +            }
312 +        }
313 +    }
314 +
315 +    format_smartdate( buf, max, tm, type );
316 +}
317 +
318  static const char *
319  hdr_format_str (char *dest,
320                 size_t destlen,
321 @@ -344,6 +427,53 @@ hdr_format_str (char *dest,
322        const char *cp;
323        struct tm *tm;
324        time_t T;
325 +       int i = 0, invert = 0;
326 +
327 +       if (optional && (op == '[' || op == '(')) {
328 +         char *is;
329 +         T = time(NULL);
330 +         T -= (op == '(') ? hdr->received : hdr->date_sent;
331 +
332 +         is = (char *)prefix;
333 +         if( *is == '>' ) {
334 +           invert = 1;
335 +           ++is;
336 +         }
337 +
338 +         while( *is && *is != '?' ) {
339 +           int t = strtol (is, &is, 10);
340 +           switch (*(is++)) {
341 +             case '?':
342 +               break;
343 +             case 'y':
344 +               t *= 365 * 24 * 60 * 60;
345 +               break;
346 +             case 'M':
347 +               t *= 30 * 24 * 60 * 60;
348 +               break;
349 +             case 'w':
350 +               t *= 7 * 24 * 60 * 60;
351 +               break;
352 +             case 'd':
353 +               t *= 24 * 60 * 60;
354 +               break;
355 +             case 'h':
356 +               t *= 60 * 60;
357 +               break;
358 +             case 'm':
359 +               t *= 60;
360 +               break;
361 +           }
362 +           i += t;
363 +         }
364 +
365 +         if (i < 0)
366 +           i *= -1;
367 +
368 +         if( (T > i || T < -1*i) ^ invert )
369 +           optional = 0;
370 +         break;
371 +       }
372  
373        p = dest;
374  
375 @@ -421,7 +551,13 @@ hdr_format_str (char *dest,
376  
377        if (!do_locales)
378          setlocale (LC_TIME, "C");
379 -      strftime (buf2, sizeof (buf2), dest, tm);
380 +               /* Identify the non-strftime smartdate pattern (%@) */
381 +               if( strncmp( dest, "%@", 2 ) == 0 ) {
382 +                       smartdate( buf2, sizeof( buf2 ), tm );
383 +               }
384 +               else {
385 +                       strftime (buf2, sizeof (buf2), dest, tm);
386 +               }
387        if (!do_locales)
388          setlocale (LC_TIME, "");
389  
390
391
392 [FILE:1222:patches/patch-init.h]
393 --- init.h.orig 2022-07-31 18:15:22 UTC
394 +++ init.h
395 @@ -1304,6 +1304,11 @@ struct option_t MuttVars[] = {
396    ** sent to both the list and your address, resulting in two copies
397    ** of the same email for you.
398    */
399 +  { "force_base64",   DT_BOOL, R_NONE, {.l=OPTFORCEBASE64}, {.l=0} },
400 +  /*
401 +  ** .pp
402 +  ** If you need to encode all text parts to base64, set this option.
403 +  */
404    { "force_name",      DT_BOOL, R_NONE, {.l=OPTFORCENAME}, {.l=0} },
405    /*
406    ** .pp
407 @@ -3922,6 +3927,15 @@ struct option_t MuttVars[] = {
408    ** to determine the key to use. It will ask you to supply a key, if it can't find one.
409    ** (S/MIME only)
410    */
411 +  { "smime_dont_check_sender", DT_BOOL, R_NONE, {.l=OPTSMIMENOSENDER}, {.l=0} },
412 +  /*
413 +  ** .pp
414 +  ** This flag controls wether you want the skip the check for the sender's
415 +  ** email address against the email address stored in the certificate. 
416 +  ** This can be useful if most of your email senders use SMIMEv3 which no
417 +  ** longer needs email-addresses as part of the certificates.
418 +  ** It is not set by default.
419 +  */
420    { "smime_self_encrypt_as",   DT_SYN,  R_NONE, {.p="smime_default_key"}, {.p=0} },
421    { "smime_default_key",               DT_STR,  R_NONE, {.p=&SmimeDefaultKey}, {.p=0} },
422    /*
423
424
425 [FILE:926:patches/patch-mutt.h]
426 --- mutt.h.orig 2022-08-07 17:02:44 UTC
427 +++ mutt.h
428 @@ -168,6 +168,16 @@ typedef enum
429    MUTT_WRITE_HEADER_MIME
430  } mutt_write_header_mode;
431  
432 +/* flags for SmartDate */
433 +typedef enum {
434 +    FUTURE      = 1,
435 +    SMARTTIME   = 2,
436 +    YESTERDAY   = 3,
437 +    WEEKDAY     = 4,
438 +    STANDARD    = 5,
439 +    ANCIENT     = 6
440 +} smartdate_type;
441 +
442  /* types for mutt_add_hook() */
443  #define MUTT_FOLDERHOOK  1
444  #define MUTT_MBOXHOOK    (1<<1)
445 @@ -236,6 +246,7 @@ enum
446    MUTT_EXPIRED,
447    MUTT_SUPERSEDED,
448    MUTT_TRASH,
449 +  MUTT_THREADCOMPLETE,
450  
451    /* actions for mutt_pattern_comp/mutt_pattern_exec */
452    MUTT_AND,
453 @@ -436,6 +447,7 @@ enum
454    OPTFCCCLEAR,
455    OPTFLAGSAFE,
456    OPTFOLLOWUPTO,
457 +  OPTFORCEBASE64,
458    OPTFORCENAME,
459    OPTFORWDECODE,
460    OPTFORWQUOTE,
461 @@ -609,6 +621,7 @@ enum
462    OPTSMIMEISDEFAULT,
463    OPTSMIMESELFENCRYPT,
464    OPTASKCERTLABEL,
465 +  OPTSMIMENOSENDER,
466    OPTSDEFAULTDECRYPTKEY,
467    OPTPGPIGNORESUB,
468    OPTPGPCHECKEXIT,
469
470
471 [FILE:721:patches/patch-sendlib.c]
472 --- sendlib.c.orig      2022-08-05 19:39:43 UTC
473 +++ sendlib.c
474 @@ -1220,7 +1220,9 @@ static void mutt_set_encoding (BODY *b,
475    if (b->type == TYPETEXT)
476    {
477      char *chsname = mutt_get_body_charset (send_charset, sizeof (send_charset), b);
478 -    if ((info->lobin && ascii_strncasecmp (chsname, "iso-2022", 8)) || info->linemax > 990 || (info->from && option (OPTENCODEFROM)))
479 +    if (option (OPTFORCEBASE64))
480 +      b->encoding = ENCBASE64;
481 +    else if ((info->lobin && ascii_strncasecmp (chsname, "iso-2022", 8)) || info->linemax > 990 || (info->from && option (OPTENCODEFROM)))
482        b->encoding = ENCQUOTEDPRINTABLE;
483      else if (info->hibin)
484        b->encoding = option (OPTALLOW8BIT) ? ENC8BIT : ENCQUOTEDPRINTABLE;
485