NeoMutt  2025-09-05-2-g4bf191
Teaching an old dog new tricks
DOXYGEN
Loading...
Searching...
No Matches
config.c
Go to the documentation of this file.
1
30#include "config.h"
31#include <stdbool.h>
32#include <stddef.h>
33#include <stdint.h>
34#include <string.h>
35#include "mutt/lib.h"
36#include "config/lib.h"
37
43static int maildir_field_delimiter_validator(const struct ConfigDef *cdef,
44 intptr_t value, struct Buffer *err)
45{
46 const char *delim = (const char *) value;
47
48 if (strlen(delim) != 1)
49 {
50 // L10N: maildir_field_delimiter is a config variable and shouldn't be translated
51 buf_printf(err, _("maildir_field_delimiter must be exactly one character long"));
52 return CSR_ERR_INVALID;
53 }
54
55 if (mutt_isalnum(*delim) || strchr("-.\\/", *delim))
56 {
57 // L10N: maildir_field_delimiter is a config variable and shouldn't be translated
58 buf_printf(err, _("maildir_field_delimiter cannot be alphanumeric or '-.\\/'"));
59 return CSR_ERR_INVALID;
60 }
61
62 return CSR_SUCCESS;
63}
64
68static struct ConfigDef MaildirVars[] = {
69 // clang-format off
70 { "check_new", DT_BOOL, true, 0, NULL,
71 "(maildir,mh) Check for new mail while the mailbox is open"
72 },
73 { "maildir_check_cur", DT_BOOL, false, 0, NULL,
74 "Check both 'new' and 'cur' directories for new mail"
75 },
76 { "maildir_field_delimiter", DT_STRING|D_NOT_EMPTY|D_ON_STARTUP, IP ":", 0, maildir_field_delimiter_validator,
77 "Field delimiter to be used for maildir email files (default is colon, recommended alternative is semi-colon)"
78 },
79 { "maildir_trash", DT_BOOL, false, 0, NULL,
80 "Use the maildir 'trashed' flag, rather than deleting"
81 },
82 { NULL },
83 // clang-format on
84};
85
86#if defined(USE_HCACHE)
90static struct ConfigDef MaildirVarsHcache[] = {
91 // clang-format off
92 { "maildir_header_cache_verify", DT_BOOL, true, 0, NULL,
93 "Check for maildir changes when opening mailbox"
94 },
95 { NULL },
96 // clang-format on
97};
98#endif
99
104{
105 bool rc = cs_register_variables(cs, MaildirVars);
106
107#if defined(USE_HCACHE)
109#endif
110
111 return rc;
112}
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:43
bool config_init_maildir(struct ConfigSet *cs)
Register maildir config variables - Implements module_init_config_t -.
Definition: config.c:103
static struct ConfigDef MaildirVars[]
Config definitions for the Maildir library.
Definition: config.c:68
static struct ConfigDef MaildirVarsHcache[]
Config definitions for the Maildir header cache.
Definition: config.c:90
Convenience wrapper for the library headers.
#define _(a)
Definition: message.h:28
String manipulation buffer.
Definition: buffer.h:36
Definition: set.h:62
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