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