NeoMutt  2025-01-09-146-g8c4f7e
Teaching an old dog new tricks
DOXYGEN
Loading...
Searching...
No Matches
version.c File Reference

Display version and copyright about NeoMutt. More...

#include "config.h"
#include <stdbool.h>
#include <stdio.h>
#include <string.h>
#include <sys/utsname.h>
#include "mutt/lib.h"
#include "config/lib.h"
#include "gui/lib.h"
#include "version.h"
#include "compress/lib.h"
#include "store/lib.h"
#include "globals.h"
#include "address/lib.h"
#include "ncrypt/lib.h"
#include <openssl/opensslv.h>
#include <gnutls/gnutls.h>
+ Include dependency graph for version.c:

Go to the source code of this file.

Functions

const char * mutt_make_version (void)
 Generate the NeoMutt version string.
 
static char * rstrip_in_place (char *s)
 Strip a trailing carriage return.
 
static void system_get (struct KeyValueArray *kva)
 Get info about system libraries.
 
static void paths_get (struct KeyValueArray *kva)
 Get compiled-in paths.
 
static void kva_clear (struct KeyValueArray *kva)
 Free the strings of a KeyValueArray.
 
struct NeoMuttVersionversion_get (void)
 Get NeoMutt version info.
 
void version_free (struct NeoMuttVersion **ptr)
 Free a NeoMuttVersion.
 
static void print_compile_options (const struct CompileOption *co, FILE *fp, bool use_ansi)
 Print a list of enabled/disabled features.
 
bool print_version (FILE *fp, bool use_ansi)
 Print system and compile info to a file.
 
bool print_copyright (void)
 Print copyright message.
 
bool feature_enabled (const char *name)
 Test if a compile-time feature is enabled.
 

Variables

static const int SCREEN_WIDTH = 80
 CLI: Width to wrap version info.
 
unsigned char cc_cflags []
 
unsigned char configure_options []
 
static const char * Copyright
 CLI Version: Authors' copyrights.
 
static const char * Thanks
 CLI Version: Thanks.
 
static const char * License
 CLI Version: License.
 
static const char * ReachingUs
 CLI Version: How to reach the NeoMutt Team.
 
static const char * Notice
 CLI Version: Warranty notice.
 
static const struct CompileOption CompOpts []
 Compile options strings for neomutt -v output.
 
static const struct CompileOption DevelOpts []
 Devel options strings for neomutt -v output.
 

Detailed Description

Display version and copyright about NeoMutt.

Authors
  • Pietro Cerutti
  • Richard Russon

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

Definition in file version.c.

Function Documentation

◆ mutt_make_version()

const char * mutt_make_version ( void  )

Generate the NeoMutt version string.

Return values
ptrVersion string
Note
This returns a pointer to a static buffer

Definition at line 295 of file version.c.

296{
297 static char vstring[256];
298 snprintf(vstring, sizeof(vstring), "NeoMutt %s%s", PACKAGE_VERSION, GitVer);
299 return vstring;
300}
const char * GitVer
+ Here is the caller graph for this function:

◆ rstrip_in_place()

static char * rstrip_in_place ( char *  s)
static

Strip a trailing carriage return.

Parameters
sString to be modified
Return values
ptrThe modified string

The string has its last carriage return set to NUL.

Definition at line 309 of file version.c.

310{
311 if (!s)
312 return NULL;
313
314 char *p = &s[strlen(s)];
315 if (p == s)
316 return s;
317 p--;
318 while ((p >= s) && ((*p == '\n') || (*p == '\r')))
319 *p-- = '\0';
320 return s;
321}
+ Here is the caller graph for this function:

◆ system_get()

static void system_get ( struct KeyValueArray *  kva)
static

Get info about system libraries.

Parameters
[out]kvaArray for results

Definition at line 327 of file version.c.

328{
329 struct Buffer *buf = buf_pool_get();
330 struct KeyValue kv = { 0 };
331
332 struct utsname uts = { 0 };
333 uname(&uts);
334
335#ifdef SCO
336 buf_printf(buf, "SCO %s", uts.release);
337#else
338 buf_printf(buf, "%s %s", uts.sysname, uts.release);
339#endif
340 buf_add_printf(buf, " (%s)", uts.machine);
341
342 kv.key = mutt_str_dup("System");
343 kv.value = buf_strdup(buf);
344 ARRAY_ADD(kva, kv);
345
346 buf_strcpy(buf, curses_version());
347#ifdef NCURSES_VERSION
348 buf_add_printf(buf, " (compiled with %s.%d)", NCURSES_VERSION, NCURSES_VERSION_PATCH);
349#endif
350 kv.key = mutt_str_dup("ncurses");
351 kv.value = buf_strdup(buf);
352 ARRAY_ADD(kva, kv);
353
354#ifdef _LIBICONV_VERSION
355 buf_printf(buf, "%d.%d", _LIBICONV_VERSION >> 8, _LIBICONV_VERSION & 0xff);
356 kv.key = mutt_str_dup("libiconv");
357 kv.value = buf_strdup(buf);
358 ARRAY_ADD(kva, kv);
359#endif
360
361#ifdef HAVE_LIBIDN
362 kv.key = mutt_str_dup("libidn2");
364 ARRAY_ADD(kva, kv);
365#endif
366
367#ifdef CRYPT_BACKEND_GPGME
368 kv.key = mutt_str_dup("GPGME");
370 ARRAY_ADD(kva, kv);
371#endif
372
373#ifdef USE_SSL_OPENSSL
374#ifdef LIBRESSL_VERSION_TEXT
375 kv.key = mutt_str_dup("LibreSSL");
376 kv.value = mutt_str_dup(LIBRESSL_VERSION_TEXT);
377#endif
378#ifdef OPENSSL_VERSION_TEXT
379 kv.key = mutt_str_dup("OpenSSL");
380 kv.value = mutt_str_dup(OPENSSL_VERSION_TEXT);
381#endif
382 ARRAY_ADD(kva, kv);
383#endif
384
385#ifdef USE_SSL_GNUTLS
386 kv.key = mutt_str_dup("GnuTLS");
387 kv.value = mutt_str_dup(GNUTLS_VERSION);
388 ARRAY_ADD(kva, kv);
389#endif
390
391#ifdef HAVE_NOTMUCH
392 buf_printf(buf, "%d.%d.%d", LIBNOTMUCH_MAJOR_VERSION,
393 LIBNOTMUCH_MINOR_VERSION, LIBNOTMUCH_MICRO_VERSION);
394 kv.key = mutt_str_dup("libnotmuch");
395 kv.value = buf_strdup(buf);
396 ARRAY_ADD(kva, kv);
397#endif
398
399#ifdef HAVE_PCRE2
400 char version[24] = { 0 };
401 pcre2_config(PCRE2_CONFIG_VERSION, version);
402 kv.key = mutt_str_dup("PCRE2");
403 kv.value = mutt_str_dup(version);
404 ARRAY_ADD(kva, kv);
405#endif
406
407 buf_pool_release(&buf);
408}
#define ARRAY_ADD(head, elem)
Add an element at the end of the array.
Definition: array.h:156
int buf_printf(struct Buffer *buf, const char *fmt,...)
Format a string overwriting a Buffer.
Definition: buffer.c:161
int buf_add_printf(struct Buffer *buf, const char *fmt,...)
Format a string appending a Buffer.
Definition: buffer.c:204
size_t buf_strcpy(struct Buffer *buf, const char *s)
Copy a string into a Buffer.
Definition: buffer.c:395
char * buf_strdup(const struct Buffer *buf)
Copy a Buffer's string.
Definition: buffer.c:571
const char * mutt_gpgme_print_version(void)
Get version of GPGME.
Definition: crypt_gpgme.c:4164
const char * mutt_idna_print_version(void)
Create an IDN version string.
Definition: idna.c:272
char * mutt_str_dup(const char *str)
Copy a string, safely.
Definition: string.c:254
struct Buffer * buf_pool_get(void)
Get a Buffer from the pool.
Definition: pool.c:82
void buf_pool_release(struct Buffer **ptr)
Return a Buffer to the pool.
Definition: pool.c:96
String manipulation buffer.
Definition: buffer.h:36
Key/Value pairs.
Definition: version.h:34
const char * key
Definition: version.h:35
const char * value
Definition: version.h:36
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ paths_get()

static void paths_get ( struct KeyValueArray *  kva)
static

Get compiled-in paths.

Parameters
[out]kvaArray for results

Definition at line 414 of file version.c.

415{
416 struct KeyValue kv = { 0 };
417
418#ifdef DOMAIN
419 kv.key = mutt_str_dup("DOMAIN");
420 kv.value = mutt_str_dup(DOMAIN);
421 ARRAY_ADD(kva, kv);
422#endif
423
424#ifdef ISPELL
425 kv.key = mutt_str_dup("ISPELL");
427 ARRAY_ADD(kva, kv);
428#endif
429 kv.key = mutt_str_dup("MAILPATH");
430 kv.value = mutt_str_dup(MAILPATH);
431 ARRAY_ADD(kva, kv);
432
433 kv.key = mutt_str_dup("PKGDATADIR");
434 kv.value = mutt_str_dup(PKGDATADIR);
435 ARRAY_ADD(kva, kv);
436
437 kv.key = mutt_str_dup("SENDMAIL");
438 kv.value = mutt_str_dup(SENDMAIL);
439 ARRAY_ADD(kva, kv);
440
441 kv.key = mutt_str_dup("SYSCONFDIR");
442 kv.value = mutt_str_dup(SYSCONFDIR);
443 ARRAY_ADD(kva, kv);
444}
#define ISPELL
Definition: config.c:40
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ kva_clear()

static void kva_clear ( struct KeyValueArray *  kva)
static

Free the strings of a KeyValueArray.

Parameters
kvaKeyValueArray to clear
Note
KeyValueArray itself is not freed

Definition at line 452 of file version.c.

453{
454 struct KeyValue *kv = NULL;
455
456 ARRAY_FOREACH(kv, kva)
457 {
458 FREE(&kv->key);
459 FREE(&kv->value);
460 }
461
462 ARRAY_FREE(kva);
463}
#define ARRAY_FOREACH(elem, head)
Iterate over all elements of the array.
Definition: array.h:214
#define ARRAY_FREE(head)
Release all memory.
Definition: array.h:204
#define FREE(x)
Definition: memory.h:55
+ Here is the caller graph for this function:

◆ version_get()

struct NeoMuttVersion * version_get ( void  )

Get NeoMutt version info.

Return values
ptrNeoMuttVersion

Definition at line 469 of file version.c.

470{
471 struct NeoMuttVersion *ver = MUTT_MEM_CALLOC(1, struct NeoMuttVersion);
472
474
475 ARRAY_INIT(&ver->system);
476 system_get(&ver->system);
477
478#ifdef USE_HCACHE
480#ifdef USE_HCACHE_COMPRESSION
481 ver->compression = compress_list();
482#endif
483#endif
484
487
488 rstrip_in_place((char *) cc_cflags);
490
491 ver->feature = CompOpts;
492
493 if (DevelOpts[0].name)
494 ver->devel = DevelOpts;
495
496 ARRAY_INIT(&ver->paths);
497 paths_get(&ver->paths);
498
499 return ver;
500}
#define ARRAY_INIT(head)
Initialize an array.
Definition: array.h:65
struct Slist * compress_list(void)
Get a list of compression backend names.
Definition: compress.c:59
#define MUTT_MEM_CALLOC(n, type)
Definition: memory.h:40
struct Slist * slist_parse(const char *str, uint32_t flags)
Parse a list of strings into a list.
Definition: slist.c:177
struct Slist * store_backend_list(void)
Get a list of backend names.
Definition: store.c:85
Version info about NeoMutt.
Definition: version.h:53
struct KeyValueArray paths
Compiled-in paths.
Definition: version.h:67
struct Slist * configure
Configure options.
Definition: version.h:61
const char * version
Version of NeoMutt: YYYYMMDD-NUM-HASH (number of commits, git hash)
Definition: version.h:54
struct Slist * compression
Compression methods, e.g. zlib.
Definition: version.h:59
struct Slist * storage
Storage backends, e.g. lmdb.
Definition: version.h:58
const struct CompileOption * devel
Compiled-in development features.
Definition: version.h:65
const struct CompileOption * feature
Compiled-in features.
Definition: version.h:64
struct Slist * compilation
Compilation CFLAGS.
Definition: version.h:62
struct KeyValueArray system
System information.
Definition: version.h:56
#define D_SLIST_SEP_SPACE
Slist items are space-separated.
Definition: types.h:109
static const struct CompileOption DevelOpts[]
Devel options strings for neomutt -v output.
Definition: version.c:249
static void paths_get(struct KeyValueArray *kva)
Get compiled-in paths.
Definition: version.c:414
const char * mutt_make_version(void)
Generate the NeoMutt version string.
Definition: version.c:295
unsigned char configure_options[]
static void system_get(struct KeyValueArray *kva)
Get info about system libraries.
Definition: version.c:327
unsigned char cc_cflags[]
static char * rstrip_in_place(char *s)
Strip a trailing carriage return.
Definition: version.c:309
static const struct CompileOption CompOpts[]
Compile options strings for neomutt -v output.
Definition: version.c:118
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ version_free()

void version_free ( struct NeoMuttVersion **  ptr)

Free a NeoMuttVersion.

Parameters
ptrNeoMuttVersion to free

Definition at line 506 of file version.c.

507{
508 if (!ptr || !*ptr)
509 return;
510
511 struct NeoMuttVersion *ver = *ptr;
512
513 FREE(&ver->version);
514
515 kva_clear(&ver->system);
516 kva_clear(&ver->paths);
517
518 slist_free(&ver->storage);
519 slist_free(&ver->compression);
520 slist_free(&ver->configure);
521 slist_free(&ver->compilation);
522
523 FREE(ptr);
524}
void slist_free(struct Slist **ptr)
Free an Slist object.
Definition: slist.c:124
static void kva_clear(struct KeyValueArray *kva)
Free the strings of a KeyValueArray.
Definition: version.c:452
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ print_compile_options()

static void print_compile_options ( const struct CompileOption co,
FILE *  fp,
bool  use_ansi 
)
static

Print a list of enabled/disabled features.

Parameters
coArray of compile options
fpfile to write to
use_ansiUse ANSI colour escape sequences

Two lists are generated and passed to this function:

  • List of features, e.g. +notmuch
  • List of devel features, e.g. window

The output is of the form: "+enabled_feature -disabled_feature" and is wrapped to SCREEN_WIDTH characters.

Definition at line 539 of file version.c.

540{
541 if (!co || !fp)
542 return;
543
544 size_t used = 2;
545 fprintf(fp, " ");
546 for (int i = 0; co[i].name; i++)
547 {
548 const size_t len = strlen(co[i].name) + 2; /* +/- and a space */
549 if ((used + len) > SCREEN_WIDTH)
550 {
551 used = 2;
552 fprintf(fp, "\n ");
553 }
554 used += len;
555 const char *fmt = "?%s ";
556 switch (co[i].enabled)
557 {
558 case 0: // Disabled
559 if (use_ansi)
560 fmt = "\033[1;31m-%s\033[0m "; // Escape, red
561 else
562 fmt = "-%s ";
563 break;
564 case 1: // Enabled
565 if (use_ansi)
566 fmt = "\033[1;32m+%s\033[0m "; // Escape, green
567 else
568 fmt = "+%s ";
569 break;
570 case 2: // Devel only
571 if (use_ansi)
572 fmt = "\033[1;36m%s\033[0m "; // Escape, cyan
573 else
574 fmt = "%s ";
575 break;
576 }
577 fprintf(fp, fmt, co[i].name);
578 }
579 fprintf(fp, "\n");
580}
const char * name
Option name.
Definition: version.h:45
static const int SCREEN_WIDTH
CLI: Width to wrap version info.
Definition: version.c:63
+ Here is the caller graph for this function:

◆ print_version()

bool print_version ( FILE *  fp,
bool  use_ansi 
)

Print system and compile info to a file.

Parameters
fpFile to print to
use_ansiUse ANSI colour escape sequences
Return values
trueText displayed

Print information about the current system NeoMutt is running on. Also print a list of all the compile-time information.

Definition at line 591 of file version.c.

592{
593 if (!fp)
594 return false;
595
596 struct KeyValue *kv = NULL;
597 struct ListNode *np = NULL;
598 struct NeoMuttVersion *ver = version_get();
599
600 const char *col_cyan = "";
601 const char *col_bold = "";
602 const char *col_end = "";
603
604 if (use_ansi)
605 {
606 col_cyan = "\033[1;36m"; // Escape, cyan
607 col_bold = "\033[1m"; // Escape, bold
608 col_end = "\033[0m"; // Escape, end
609 }
610
611 fprintf(fp, "%s%s%s\n", col_cyan, ver->version, col_end);
612 fprintf(fp, "%s\n", _(Notice));
613
614 ARRAY_FOREACH(kv, &ver->system)
615 {
616 fprintf(fp, "%s%s:%s %s\n", col_bold, kv->key, col_end, kv->value);
617 }
618
619 if (ver->storage)
620 {
621 fprintf(fp, "%sstorage:%s ", col_bold, col_end);
622 STAILQ_FOREACH(np, &ver->storage->head, entries)
623 {
624 fputs(np->data, fp);
625 if (STAILQ_NEXT(np, entries))
626 fputs(", ", fp);
627 }
628 fputs("\n", fp);
629 }
630
631 if (ver->compression)
632 {
633 fprintf(fp, "%scompression:%s ", col_bold, col_end);
634 STAILQ_FOREACH(np, &ver->compression->head, entries)
635 {
636 fputs(np->data, fp);
637 if (STAILQ_NEXT(np, entries))
638 fputs(", ", fp);
639 }
640 fputs("\n", fp);
641 }
642 fputs("\n", fp);
643
644 fprintf(fp, "%sConfigure options:%s ", col_bold, col_end);
645 if (ver->configure)
646 {
647 STAILQ_FOREACH(np, &ver->configure->head, entries)
648 {
649 if (!np || !np->data)
650 continue;
651 fputs(np->data, fp);
652 if (STAILQ_NEXT(np, entries))
653 fputs(" ", fp);
654 }
655 }
656 fputs("\n\n", fp);
657
658 if (ver->compilation)
659 {
660 fprintf(fp, "%sCompilation CFLAGS:%s ", col_bold, col_end);
661 STAILQ_FOREACH(np, &ver->compilation->head, entries)
662 {
663 if (!np || !np->data)
664 continue;
665 fputs(np->data, fp);
666 if (STAILQ_NEXT(np, entries))
667 fputs(" ", fp);
668 }
669 fputs("\n\n", fp);
670 }
671
672 fprintf(fp, "%s%s%s\n", col_bold, _("Compile options:"), col_end);
673 print_compile_options(ver->feature, fp, use_ansi);
674 fputs("\n", fp);
675
676 if (ver->devel)
677 {
678 fprintf(fp, "%s%s%s\n", col_bold, _("Devel options:"), col_end);
679 print_compile_options(ver->devel, fp, use_ansi);
680 fputs("\n", fp);
681 }
682
683 ARRAY_FOREACH(kv, &ver->paths)
684 {
685 fprintf(fp, "%s%s%s=\"%s\"\n", col_bold, kv->key, col_end, kv->value);
686 }
687 fputs("\n", fp);
688
689 fputs(_(ReachingUs), fp);
690
691 version_free(&ver);
692 return true;
693}
#define _(a)
Definition: message.h:28
#define STAILQ_FOREACH(var, head, field)
Definition: queue.h:390
#define STAILQ_NEXT(elm, field)
Definition: queue.h:439
A List node for strings.
Definition: list.h:37
char * data
String.
Definition: list.h:38
struct ListHead head
List containing values.
Definition: slist.h:38
void version_free(struct NeoMuttVersion **ptr)
Free a NeoMuttVersion.
Definition: version.c:506
static const char * ReachingUs
CLI Version: How to reach the NeoMutt Team.
Definition: version.c:102
static const char * Notice
CLI Version: Warranty notice.
Definition: version.c:109
struct NeoMuttVersion * version_get(void)
Get NeoMutt version info.
Definition: version.c:469
static void print_compile_options(const struct CompileOption *co, FILE *fp, bool use_ansi)
Print a list of enabled/disabled features.
Definition: version.c:539
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ print_copyright()

bool print_copyright ( void  )

Print copyright message.

Return values
trueText displayed

Print the authors' copyright messages, the GPL license and some contact information for the NeoMutt project.

Definition at line 702 of file version.c.

703{
704 puts(mutt_make_version());
705 puts(Copyright);
706 puts(_(Thanks));
707 puts(_(License));
708 puts(_(ReachingUs));
709
710 fflush(stdout);
711 return !ferror(stdout);
712}
static const char * Thanks
CLI Version: Thanks.
Definition: version.c:82
static const char * License
CLI Version: License.
Definition: version.c:86
static const char * Copyright
CLI Version: Authors' copyrights.
Definition: version.c:69
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ feature_enabled()

bool feature_enabled ( const char *  name)

Test if a compile-time feature is enabled.

Parameters
nameCompile-time symbol of the feature
Return values
trueFeature enabled
falseFeature not enabled, or not compiled in

Many of the larger features of neomutt can be disabled at compile time. They define a symbol and use ifdef's around their code. The symbols are mirrored in "CompileOption CompOpts[]" in this file.

This function checks if one of these symbols is present in the code.

These symbols are also seen in the output of "neomutt -v".

Definition at line 729 of file version.c.

730{
731 if (!name)
732 return false;
733 for (int i = 0; CompOpts[i].name; i++)
734 {
735 if (mutt_str_equal(name, CompOpts[i].name))
736 {
737 return CompOpts[i].enabled;
738 }
739 }
740 return false;
741}
bool mutt_str_equal(const char *a, const char *b)
Compare two strings.
Definition: string.c:661
int enabled
0 Disabled, 1 Enabled, 2 Devel only
Definition: version.h:46
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Variable Documentation

◆ SCREEN_WIDTH

const int SCREEN_WIDTH = 80
static

CLI: Width to wrap version info.

Definition at line 63 of file version.c.

◆ cc_cflags

unsigned char cc_cflags[]
extern

◆ configure_options

unsigned char configure_options[]
extern

◆ Copyright

const char* Copyright
static
Initial value:
=
"Copyright (C) 2015-2025 Richard Russon <rich@flatcap.org>\n"
"Copyright (C) 2016-2025 Pietro Cerutti <gahr@gahr.ch>\n"
"Copyright (C) 2017-2019 Mehdi Abaakouk <sileht@sileht.net>\n"
"Copyright (C) 2018-2020 Federico Kircheis <federico.kircheis@gmail.com>\n"
"Copyright (C) 2017-2022 Austin Ray <austin@austinray.io>\n"
"Copyright (C) 2023-2025 Dennis Schön <mail@dennis-schoen.de>\n"
"Copyright (C) 2016-2017 Damien Riegel <damien.riegel@gmail.com>\n"
"Copyright (C) 2023 Rayford Shireman\n"
"Copyright (C) 2021-2023 David Purton <dcpurton@marshwiggle.net>\n"
"Copyright (C) 2020-2023 наб <nabijaczleweli@nabijaczleweli.xyz>\n"

CLI Version: Authors' copyrights.

Definition at line 69 of file version.c.

◆ Thanks

const char* Thanks
static
Initial value:
= N_(
"Many others not mentioned here contributed code, fixes and suggestions.\n")
#define N_(a)
Definition: message.h:32

CLI Version: Thanks.

Definition at line 82 of file version.c.

◆ License

const char* License
static
Initial value:
= N_(
"This program is free software; you can redistribute it and/or modify\n"
"it under the terms of the GNU General Public License as published by\n"
"the Free Software Foundation; either version 2 of the License, or\n"
"(at your option) any later version.\n"
"\n"
"This program is distributed in the hope that it will be useful,\n"
"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
"GNU General Public License for more details.\n"
"\n"
"You should have received a copy of the GNU General Public License\n"
"along with this program; if not, write to the Free Software\n"
"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n")

CLI Version: License.

Definition at line 86 of file version.c.

◆ ReachingUs

const char* ReachingUs
static
Initial value:
= N_("To learn more about NeoMutt, visit: https://neomutt.org\n"
"If you find a bug in NeoMutt, please raise an issue at:\n"
" https://github.com/neomutt/neomutt/issues\n"
"or send an email to: <neomutt-devel@neomutt.org>\n")

CLI Version: How to reach the NeoMutt Team.

Definition at line 102 of file version.c.

◆ Notice

const char* Notice
static
Initial value:
=
N_("Copyright (C) 2015-2025 Richard Russon and friends\n"
"NeoMutt comes with ABSOLUTELY NO WARRANTY; for details type 'neomutt -vv'.\n"
"NeoMutt is free software, and you are welcome to redistribute it\n"
"under certain conditions; type 'neomutt -vv' for details.\n")

CLI Version: Warranty notice.

Definition at line 109 of file version.c.

◆ CompOpts

const struct CompileOption CompOpts[]
static

Compile options strings for neomutt -v output.

Definition at line 118 of file version.c.

◆ DevelOpts

const struct CompileOption DevelOpts[]
static

Devel options strings for neomutt -v output.

Definition at line 249 of file version.c.