NeoMutt
2025-12-11-1039-g550ac6
Teaching an old dog new tricks
DOXYGEN
Toggle main menu visibility
Loading...
Searching...
No Matches
config.c
Go to the documentation of this file.
1
24
30
31
#include "config.h"
32
#include <stdbool.h>
33
#include <stddef.h>
34
#include <stdint.h>
35
#include "
private.h
"
36
#include "
mutt/lib.h
"
37
#include "
config/lib.h
"
38
#ifdef USE_SASL_CYRUS
39
#include "
conn/lib.h
"
40
#endif
41
45
static
int
pop_auth_validator
(
const
struct
ConfigDef
*cdef, intptr_t value,
struct
Buffer
*err)
46
{
47
const
struct
Slist
*pop_auth_methods = (
const
struct
Slist
*) value;
48
if
(!pop_auth_methods || (pop_auth_methods->
count
== 0))
49
return
CSR_SUCCESS
;
50
51
struct
ListNode
*np = NULL;
52
STAILQ_FOREACH
(np, &pop_auth_methods->
head
, entries)
53
{
54
if
(
pop_auth_is_valid
(np->
data
))
55
continue
;
56
#ifdef USE_SASL_CYRUS
57
if
(
sasl_auth_validator
(np->
data
))
58
continue
;
59
#endif
60
buf_printf
(err,
_
(
"Option %s: %s is not a valid authenticator"
), cdef->
name
, np->
data
);
61
return
CSR_ERR_INVALID
;
62
}
63
64
return
CSR_SUCCESS
;
65
}
66
70
struct
ConfigDef
PopVars
[] = {
71
// clang-format off
72
{
"pop_auth_try_all"
,
DT_BOOL
,
true
, 0, NULL,
73
"(pop) Try all available authentication methods"
74
},
75
{
"pop_authenticators"
,
DT_SLIST
|
D_SLIST_SEP_COLON
, 0, 0,
pop_auth_validator
,
76
"(pop) List of allowed authentication methods (colon-separated)"
77
},
78
{
"pop_check_interval"
,
DT_NUMBER
|
D_INTEGER_NOT_NEGATIVE
, 60, 0, NULL,
79
"(pop) Interval between checks for new mail"
80
},
81
{
"pop_delete"
,
DT_QUAD
,
MUTT_ASKNO
, 0, NULL,
82
"(pop) After downloading POP messages, delete them on the server"
83
},
84
{
"pop_host"
,
DT_STRING
, 0, 0, NULL,
85
"(pop) Url of the POP server"
86
},
87
{
"pop_last"
,
DT_BOOL
,
false
, 0, NULL,
88
"(pop) Use the 'LAST' command to fetch new mail"
89
},
90
{
"pop_oauth_refresh_command"
,
DT_STRING
|
D_STRING_COMMAND
|
D_SENSITIVE
, 0, 0, NULL,
91
"(pop) External command to generate OAUTH refresh token"
92
},
93
{
"pop_pass"
,
DT_STRING
|
D_SENSITIVE
, 0, 0, NULL,
94
"(pop) Password of the POP server"
95
},
96
{
"pop_reconnect"
,
DT_QUAD
,
MUTT_ASKYES
, 0, NULL,
97
"(pop) Reconnect to the server is the connection is lost"
98
},
99
{
"pop_user"
,
DT_STRING
|
D_SENSITIVE
, 0, 0, NULL,
100
"(pop) Username of the POP server"
101
},
102
103
{
"pop_checkinterval"
,
DT_SYNONYM
,
IP
"pop_check_interval"
,
IP
"2021-02-11"
},
104
{ NULL },
105
// clang-format on
106
};
buf_printf
int buf_printf(struct Buffer *buf, const char *fmt,...)
Format a string overwriting a Buffer.
Definition
buffer.c:168
lib.h
Convenience wrapper for the config headers.
CSR_ERR_INVALID
#define CSR_ERR_INVALID
Value hasn't been set.
Definition
set.h:36
CSR_SUCCESS
#define CSR_SUCCESS
Action completed successfully.
Definition
set.h:33
IP
#define IP
Definition
set.h:55
lib.h
Connection Library.
pop_auth_validator
static int pop_auth_validator(const struct ConfigDef *cdef, intptr_t value, struct Buffer *err)
Validate the "pop_authenticators" config variable - Implements ConfigDef::validator() -.
Definition
config.c:45
lib.h
Convenience wrapper for the library headers.
_
#define _(a)
Definition
message.h:28
pop_auth_is_valid
bool pop_auth_is_valid(const char *authenticator)
Check if string is a valid pop authentication method.
Definition
auth.c:534
PopVars
struct ConfigDef PopVars[]
Config definitions for the POP library.
Definition
config.c:70
private.h
POP network mailbox.
MUTT_ASKNO
@ MUTT_ASKNO
Ask the user, defaulting to 'No'.
Definition
quad.h:40
MUTT_ASKYES
@ MUTT_ASKYES
Ask the user, defaulting to 'Yes'.
Definition
quad.h:41
STAILQ_FOREACH
#define STAILQ_FOREACH(var, head, field)
Definition
queue.h:390
sasl_auth_validator
bool sasl_auth_validator(const char *authenticator)
SASL callback functions, e.g. mutt_sasl_cb_authname(), mutt_sasl_cb_pass().
Definition
sasl.c:133
Buffer
String manipulation buffer.
Definition
buffer.h:36
ConfigDef
Definition
set.h:65
ConfigDef::name
const char * name
User-visible name.
Definition
set.h:66
ListNode
A List node for strings.
Definition
list.h:37
ListNode::data
char * data
String.
Definition
list.h:38
Slist
String list.
Definition
slist.h:37
Slist::head
struct ListHead head
List containing values.
Definition
slist.h:38
Slist::count
size_t count
Number of values in list.
Definition
slist.h:39
D_SLIST_SEP_COLON
#define D_SLIST_SEP_COLON
Slist items are colon-separated.
Definition
types.h:112
D_STRING_COMMAND
#define D_STRING_COMMAND
A command.
Definition
types.h:99
DT_NUMBER
@ DT_NUMBER
a number
Definition
types.h:38
DT_SLIST
@ DT_SLIST
a list of strings
Definition
types.h:42
DT_BOOL
@ DT_BOOL
boolean option
Definition
types.h:32
DT_QUAD
@ DT_QUAD
quad-option (no/yes/ask-no/ask-yes)
Definition
types.h:40
DT_SYNONYM
@ DT_SYNONYM
synonym for another variable
Definition
types.h:45
DT_STRING
@ DT_STRING
a string
Definition
types.h:44
D_SENSITIVE
#define D_SENSITIVE
Contains sensitive value, e.g. password.
Definition
types.h:81
D_INTEGER_NOT_NEGATIVE
#define D_INTEGER_NOT_NEGATIVE
Negative numbers are not allowed.
Definition
types.h:101