NeoMutt  2025-09-05-55-g97fc89
Teaching an old dog new tricks
DOXYGEN
Loading...
Searching...
No Matches
config.c
Go to the documentation of this file.
1
23
29
30#include "config.h"
31#include <stdbool.h>
32#include <stdint.h>
33#include <string.h>
34#include "mutt/lib.h"
35#include "config/lib.h"
36
42static int maildir_field_delimiter_validator(const struct ConfigDef *cdef,
43 intptr_t value, struct Buffer *err)
44{
45 const char *delim = (const char *) value;
46
47 if (strlen(delim) != 1)
48 {
49 // L10N: maildir_field_delimiter is a config variable and shouldn't be translated
50 buf_printf(err, _("maildir_field_delimiter must be exactly one character long"));
51 return CSR_ERR_INVALID;
52 }
53
54 if (mutt_isalnum(*delim) || strchr("-.\\/", *delim))
55 {
56 // L10N: maildir_field_delimiter is a config variable and shouldn't be translated
57 buf_printf(err, _("maildir_field_delimiter cannot be alphanumeric or '-.\\/'"));
58 return CSR_ERR_INVALID;
59 }
60
61 return CSR_SUCCESS;
62}
63
67static struct ConfigDef MaildirVars[] = {
68 // clang-format off
69 { "check_new", DT_BOOL, true, 0, NULL,
70 "(maildir,mh) Check for new mail while the mailbox is open"
71 },
72 { "maildir_check_cur", DT_BOOL, false, 0, NULL,
73 "Check both 'new' and 'cur' directories for new mail"
74 },
75 { "maildir_field_delimiter", DT_STRING|D_NOT_EMPTY|D_ON_STARTUP, IP ":", 0, maildir_field_delimiter_validator,
76 "Field delimiter to be used for maildir email files (default is colon, recommended alternative is semi-colon)"
77 },
78 { "maildir_trash", DT_BOOL, false, 0, NULL,
79 "Use the maildir 'trashed' flag, rather than deleting"
80 },
81 { NULL },
82 // clang-format on
83};
84
85#if defined(USE_HCACHE)
89static struct ConfigDef MaildirVarsHcache[] = {
90 // clang-format off
91 { "maildir_header_cache_verify", DT_BOOL, true, 0, NULL,
92 "Check for maildir changes when opening mailbox"
93 },
94 { NULL },
95 // clang-format on
96};
97#endif
98
103{
104 bool rc = cs_register_variables(cs, MaildirVars);
105
106#if defined(USE_HCACHE)
108#endif
109
110 return rc;
111}
int buf_printf(struct Buffer *buf, const char *fmt,...)
Format a string overwriting a Buffer.
Definition buffer.c:161
Convenience wrapper for the config headers.
bool cs_register_variables(const struct ConfigSet *cs, struct ConfigDef vars[])
Register a set of config items.
Definition set.c:289
#define CSR_ERR_INVALID
Value hasn't been set.
Definition set.h:36
#define CSR_SUCCESS
Action completed successfully.
Definition set.h:33
#define IP
Definition set.h:52
bool mutt_isalnum(int arg)
Wrapper for isalnum(3)
Definition ctype.c:39
static int maildir_field_delimiter_validator(const struct ConfigDef *cdef, intptr_t value, struct Buffer *err)
Validate the "maildir_field_delimiter" config variable - Implements ConfigDef::validator() -.
Definition config.c:42
bool config_init_maildir(struct ConfigSet *cs)
Register maildir config variables - Implements module_init_config_t -.
Definition config.c:102
static struct ConfigDef MaildirVars[]
Config definitions for the Maildir library.
Definition config.c:67
static struct ConfigDef MaildirVarsHcache[]
Config definitions for the Maildir header cache.
Definition config.c:89
Convenience wrapper for the library headers.
#define _(a)
Definition message.h:28
String manipulation buffer.
Definition buffer.h:36
Container for lots of config items.
Definition set.h:248
@ DT_BOOL
boolean option
Definition types.h:32
@ DT_STRING
a string
Definition types.h:44
#define D_NOT_EMPTY
Empty strings are not allowed.
Definition types.h:79
#define D_ON_STARTUP
May only be set at startup.
Definition types.h:78