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