129 for (
const struct MxOps **ops =
MxOps; *ops; ops++)
130 if ((*ops)->type ==
type)
150 const bool is_spool = ua && ub && (ua->
scheme == ub->
scheme) &&
175 return access(
path, flags);
190 struct stat st = { 0 };
260 const bool new_account = !a;
299 const bool newly_linked_account = !m->
account;
300 if (newly_linked_account)
404 if (newly_linked_account)
492 struct stat st = { 0 };
493 struct stat stc = { 0 };
519 if (delmsgcount == 0)
531 mutt_error(ngettext(
"message not deleted",
"messages not deleted", delmsgcount));
535 if ((lstat(
mailbox_path(m), &stc) == 0) && (stc.st_ino == st.st_ino) &&
536 (stc.st_dev == st.st_dev) && (stc.st_rdev == st.st_rdev))
548 const bool old_append = m_trash->
append;
557 for (
int i = first_del; i < m->
msg_count; i++)
570 m_trash->
append = old_append;
578 m_trash->
append = old_append;
604 if (c_mail_check_recent && !m->
peekonly)
613 int i, read_msgs = 0;
617 struct Buffer *mbox = NULL;
651 if ((read_msgs != 0) && (c_move !=
MUTT_NO))
675 ngettext(
"Move %d read message to %s?",
"Move %d read messages to %s?", read_msgs),
743 struct Email **ep = NULL;
807 if (purge && (m->
msg_deleted != 0) && (m != m_trash))
923 buf_addstr(tmp,
_(
"Use 'toggle-write' to re-enable write"));
946 char buf[128] = { 0 };
948 snprintf(buf,
sizeof(buf),
949 ngettext(
"Purge %d deleted message?",
"Purge %d deleted messages?", m->
msg_deleted),
982 if (purge && (m->
msg_deleted != 0) && (m != m_trash))
1002 mutt_message(
_(
"%d kept, %d deleted"), msgcount - deleted, deleted);
1090 char buf[64] = { 0 };
1093 fprintf(msg->
fp,
"From %s %s\n",
1187 if (!m || !ptr || !*ptr)
1221 req_size =
ROUND_UP(req_size + 1, grow);
1223 const size_t s =
MAX(
sizeof(
struct Email *),
sizeof(
int));
1224 if ((req_size * s) < (m->
email_max * s))
1241 for (
int i = m->
email_max; i < req_size; i++)
1287 mutt_message(
_(
"Folder doesn't support tagging, aborting"));
1301 if (!m || !e || !tags)
1307 mutt_message(
_(
"Folder doesn't support tagging, aborting"));
1334 for (
const struct MxOps **ops =
MxOps; *ops; ops++)
1336 if ((*ops)->is_local)
1338 rc = (*ops)->path_probe(path, NULL);
1343 struct stat st = { 0 };
1344 if (stat(path, &st) != 0)
1346 mutt_debug(
LL_DEBUG1,
"unable to stat %s: %s (errno %d)\n", path, strerror(errno), errno);
1350 if (S_ISFIFO(st.st_mode))
1352 mutt_error(
_(
"Can't open %s: it is a pipe"), path);
1357 for (
const struct MxOps **ops =
MxOps; *ops; ops++)
1359 if (!(*ops)->is_local)
1361 rc = (*ops)->path_probe(path, &st);
1377 for (
size_t i = 0; i < 3; i++)
1380 if ((
buf_at(path, 0) ==
'!') && (
buf_at(path, 1) ==
'!'))
1382 if (((
buf_at(path, 2) ==
'/') || (
buf_at(path, 2) ==
'\0')))
1387 else if ((
buf_at(path, 0) ==
'+') || (
buf_at(path, 0) ==
'='))
1390 if ((folder_len > 0) && (folder[folder_len - 1] !=
'/'))
1392 path->
data[0] =
'/';
1400 else if ((
buf_at(path, 1) ==
'/') || (
buf_at(path, 1) ==
'\0'))
1402 if (
buf_at(path, 0) ==
'!')
1407 else if (
buf_at(path, 0) ==
'-')
1411 else if (
buf_at(path, 0) ==
'<')
1416 else if (
buf_at(path, 0) ==
'>')
1421 else if (
buf_at(path, 0) ==
'^')
1425 else if (
buf_at(path, 0) ==
'~')
1430 else if (
buf_at(path, 0) ==
'@')
1554 struct Url *url_p = NULL;
1555 struct Url *url_a = NULL;
1819 mutt_error(
_(
"Can't toggle write on a readonly mailbox"));
1826 mutt_message(
_(
"Changes to folder will be written on folder exit"));
void mutt_addrlist_copy(struct AddressList *dst, const struct AddressList *src, bool prune)
Copy a list of addresses into another list.
struct AddressList * alias_lookup(const char *name)
Find an Alias.
#define ARRAY_ADD(head, elem)
Add an element at the end of the array.
#define ARRAY_FOREACH(elem, head)
Iterate over all elements of the array.
#define ARRAY_FREE(head)
Release all memory.
#define ARRAY_HEAD_INITIALIZER
Static initializer for arrays.
int buf_printf(struct Buffer *buf, const char *fmt,...)
Format a string overwriting a Buffer.
bool buf_is_empty(const struct Buffer *buf)
Is the Buffer empty?
char buf_at(const struct Buffer *buf, size_t offset)
Return the character at the given offset.
void buf_free(struct Buffer **ptr)
Deallocates a buffer.
void buf_inline_replace(struct Buffer *buf, size_t pos, size_t len, const char *str)
struct Buffer * buf_new(const char *str)
Allocate a new Buffer.
size_t buf_addstr(struct Buffer *buf, const char *s)
Add a string to a Buffer.
size_t buf_strcpy(struct Buffer *buf, const char *s)
Copy a string into a Buffer.
static const char * buf_string(const struct Buffer *buf)
Convert a buffer to a const char * "string".
bool mutt_comp_can_append(struct Mailbox *m)
Can we append to this path?
Compressed mbox local mailbox type.
const char * cs_subset_string(const struct ConfigSubset *sub, const char *name)
Get a string config item by name.
enum QuadOption cs_subset_quad(const struct ConfigSubset *sub, const char *name)
Get a quad-value config item by name.
unsigned char cs_subset_enum(const struct ConfigSubset *sub, const char *name)
Get a enumeration config item by name.
short cs_subset_number(const struct ConfigSubset *sub, const char *name)
Get a number config item by name.
bool cs_subset_bool(const struct ConfigSubset *sub, const char *name)
Get a boolean config item by name.
Convenience wrapper for the config headers.
int mutt_append_message(struct Mailbox *m_dst, struct Mailbox *m_src, struct Email *e, struct Message *msg, CopyMessageFlags cmflags, CopyHeaderFlags chflags)
Append a message.
Duplicate the structure of an entire email.
#define CH_UPDATE_LEN
Update Lines: and Content-Length:
#define MUTT_CM_NO_FLAGS
No flags are set.
#define CH_NO_FLAGS
No flags are set.
bool account_mailbox_remove(struct Account *a, struct Mailbox *m)
Remove a Mailbox from an Account.
struct Account * account_new(const char *name, struct ConfigSubset *sub)
Create a new Account.
bool account_mailbox_add(struct Account *a, struct Mailbox *m)
Add a Mailbox to an Account.
void account_free(struct Account **ptr)
Free an Account.
Convenience wrapper for the core headers.
struct Mailbox * mailbox_new(void)
Create a new Mailbox.
void mailbox_free(struct Mailbox **ptr)
Free a Mailbox.
void mailbox_changed(struct Mailbox *m, enum NotifyMailbox action)
Notify observers of a change to a Mailbox.
@ NT_MAILBOX_UNTAG
Clear the 'last-tagged' pointer.
@ NT_MAILBOX_CHANGE
Mailbox has been changed.
@ NT_MAILBOX_RESORT
Email list needs resorting.
@ NT_MAILBOX_INVALID
Email list was changed.
@ NT_MAILBOX_UPDATE
Update internal tables.
static const char * mailbox_path(const struct Mailbox *m)
Get the Mailbox's path string.
MailboxType
Supported mailbox formats.
@ MUTT_MMDF
'mmdf' Mailbox type
@ MUTT_MAILBOX_ERROR
Error occurred examining Mailbox.
@ MUTT_MH
'MH' Mailbox type
@ MUTT_NNTP
'NNTP' (Usenet) Mailbox type
@ MUTT_IMAP
'IMAP' Mailbox type
@ MUTT_MBOX
'mbox' Mailbox type
@ MUTT_COMPRESSED
Compressed file Mailbox type.
@ MUTT_UNKNOWN
Mailbox wasn't recognised.
@ MUTT_MAILDIR
'Maildir' Mailbox type
struct Message * message_new(void)
Create a new Message.
void message_free(struct Message **ptr)
Free a Message.
struct Email * email_new(void)
Create a new Email.
void email_free(struct Email **ptr)
Free an Email.
Structs that make up an email.
bool OptNeedRescore
(pseudo) set when the 'score' command is used
struct Envelope * mutt_env_new(void)
Create a new Envelope.
void mutt_exit(int code)
Leave NeoMutt NOW.
Manage where the email is piped to external commands.
@ SAVE_MOVE
Move message to another mailbox, removing the original.
void mutt_file_unlink_empty(const char *path)
Delete a file if it's empty.
void mutt_set_flag(struct Mailbox *m, struct Email *e, enum MessageType flag, bool bf, bool upd_mbox)
Set a flag on an email.
char * LastFolder
Previously selected mailbox.
bool OptForceRefresh
(pseudo) refresh even during macros
char * CurrentFolder
Currently selected mailbox.
bool OptSortSubthreads
(pseudo) used when $sort_aux changes
#define mutt_message(...)
#define mutt_debug(LEVEL,...)
const struct MxOps MxNntpOps
NNTP Mailbox - Implements MxOps -.
const struct MxOps MxMboxOps
Mbox Mailbox - Implements MxOps -.
const struct MxOps MxNotmuchOps
Notmuch Mailbox - Implements MxOps -.
const struct MxOps MxMhOps
MH Mailbox - Implements MxOps -.
const struct MxOps MxPopOps
POP Mailbox - Implements MxOps -.
const struct MxOps MxImapOps
IMAP Mailbox - Implements MxOps -.
const struct MxOps MxCompOps
Compressed Mailbox - Implements MxOps -.
const struct MxOps MxMmdfOps
MMDF Mailbox - Implements MxOps -.
const struct MxOps MxMaildirOps
Maildir Mailbox - Implements MxOps -.
enum MailboxType imap_path_probe(const char *path, const struct stat *st)
Is this an IMAP Mailbox?
Convenience wrapper for the gui headers.
void mutt_hash_free(struct HashTable **ptr)
Free a hash table.
void mutt_default_save(struct Buffer *path, struct Email *e)
Find the default save path for an email.
char * mutt_find_hook(HookFlags type, const char *pat)
Find a matching hook.
Parse and execute user-defined hooks.
#define MUTT_MBOX_HOOK
mbox-hook: move messages after reading them
int imap_mxcmp(const char *mx1, const char *mx2)
Compare mailbox names, giving priority to INBOX.
int imap_copy_messages(struct Mailbox *m, struct EmailArray *ea, const char *dest, enum MessageSaveOpt save_opt)
Server COPY messages to another folder.
int imap_fast_trash(struct Mailbox *m, const char *dest)
Use server COPY command to copy deleted messages to trash.
enum MxStatus imap_sync_mailbox(struct Mailbox *m, bool expunge, bool close)
Sync all the changes to the server.
int imap_access(const char *path)
Check permissions on an IMAP mailbox with a new connection.
struct Keymap * km_find_func(enum MenuType mtype, int func)
Find a function's mapping in a Menu.
bool km_expand_key(struct Keymap *map, struct Buffer *buf)
Get the key string bound to a Keymap.
@ LL_DEBUG2
Log at debug level 2.
@ LL_DEBUG1
Log at debug level 1.
Maildir local mailbox type.
void mbox_reset_atime(struct Mailbox *m, struct stat *st)
Reset the access time on the mailbox file.
#define ROUND_UP(NUM, STEP)
#define MUTT_MEM_CALLOC(n, type)
#define MUTT_MEM_REALLOC(pptr, n, type)
#define CLAMP(val, lo, hi)
size_t mutt_date_localtime_format_locale(char *buf, size_t buflen, const char *format, time_t t, locale_t loc)
Format localtime using a given locale.
time_t mutt_date_now(void)
Return the number of seconds since the Unix epoch.
Convenience wrapper for the library headers.
bool notify_send(struct Notify *notify, enum NotifyType event_type, int event_subtype, void *event_data)
Send out a notification message.
bool mutt_path_canon(struct Buffer *path, const char *homedir, bool is_dir)
Create the canonical version of a path.
bool mutt_istr_equal(const char *a, const char *b)
Compare two strings, ignoring case.
bool mutt_str_equal(const char *a, const char *b)
Compare two strings.
size_t mutt_str_len(const char *a)
Calculate the length of a string, safely.
char * mutt_str_replace(char **p, const char *s)
Replace one string with another.
Many unsorted constants and some structs.
@ MUTT_PURGE
Messages to be purged (bypass trash)
@ MUTT_TAG
Tagged messages.
@ MUTT_DELETE
Messages to be deleted.
void mutt_clear_error(void)
Clear the message line (bottom line of screen)
void mutt_mailbox_set_notified(struct Mailbox *m)
Note when the user was last notified of new mail.
Mailbox helper functions.
void mutt_sleep(short s)
Sleep for a while.
void buf_expand_path(struct Buffer *buf)
Create the canonical path.
int mutt_save_confirm(const char *s, struct stat *st)
Ask the user to save.
Some miscellaneous functions.
void mx_alloc_memory(struct Mailbox *m, int req_size)
Create storage for the emails.
int mx_tags_edit(struct Mailbox *m, const char *tags, struct Buffer *buf)
Start the tag editor of the mailbox.
int mx_msg_close(struct Mailbox *m, struct Message **ptr)
Close a message.
int mx_ac_remove(struct Mailbox *m, bool keep_account)
Remove a Mailbox from an Account and delete Account if empty.
int mx_access(const char *path, int flags)
Wrapper for access, checks permissions on a given mailbox.
const struct EnumDef MboxTypeDef
Data for the $mbox_type enumeration.
static enum MxStatus sync_mailbox(struct Mailbox *m)
Save changes to disk.
static int trash_append(struct Mailbox *m)
Move deleted mails to the trash folder.
int mx_msg_padding_size(struct Mailbox *m)
Bytes of padding between messages - Wrapper for MxOps::msg_padding_size()
void mx_fastclose_mailbox(struct Mailbox *m, bool keep_account)
Free up memory associated with the Mailbox.
enum MxStatus mx_mbox_check_stats(struct Mailbox *m, uint8_t flags)
Check the statistics for a mailbox - Wrapper for MxOps::mbox_check_stats()
int mx_path_canon(struct Buffer *path, const char *folder, enum MailboxType *type)
Canonicalise a mailbox path - Wrapper for MxOps::path_canon()
static bool mutt_is_spool(const char *str)
Is this the spool_file?
bool mx_mbox_open(struct Mailbox *m, OpenMailboxFlags flags)
Open a mailbox and parse it.
struct Mailbox * mx_mbox_find(struct Account *a, const char *path)
Find a Mailbox on an Account.
struct Mailbox * mx_resolve(const char *path_or_name)
Get a Mailbox from either a path or name.
static struct Mailbox * mx_mbox_find_by_name(const char *name)
Find a Mailbox with given name.
bool mx_ac_add(struct Account *a, struct Mailbox *m)
Add a Mailbox to an Account - Wrapper for MxOps::ac_add()
struct Mailbox * mx_mbox_find2(const char *path)
Find a Mailbox on an Account.
struct Message * mx_msg_open(struct Mailbox *m, struct Email *e)
Return a stream pointer for a message.
const struct MxOps * mx_get_ops(enum MailboxType type)
Get mailbox operations.
bool mx_tags_is_supported(struct Mailbox *m)
Return true if mailbox support tagging.
int mx_tags_commit(struct Mailbox *m, struct Email *e, const char *tags)
Save tags to the Mailbox - Wrapper for MxOps::tags_commit()
int mx_save_hcache(struct Mailbox *m, struct Email *e)
Save message to the header cache - Wrapper for MxOps::msg_save_hcache()
static const struct Mapping MboxTypeMap[]
Lookup table of mailbox types.
bool mx_mbox_ac_link(struct Mailbox *m)
Link a Mailbox to an existing or new Account.
struct Account * mx_ac_find(struct Mailbox *m)
Find the Account owning a Mailbox.
enum MailboxType mx_type(struct Mailbox *m)
Return the type of the Mailbox.
int mx_path_is_empty(struct Buffer *path)
Is the mailbox empty.
struct Message * mx_msg_open_new(struct Mailbox *m, const struct Email *e, MsgOpenFlags flags)
Open a new message.
int mx_toggle_write(struct Mailbox *m)
Toggle the mailbox's readonly flag.
int mx_msg_commit(struct Mailbox *m, struct Message *msg)
Commit a message to a folder - Wrapper for MxOps::msg_commit()
static struct Mailbox * mx_mbox_find_by_name_ac(struct Account *a, const char *name)
Find a Mailbox with given name under an Account.
enum MailboxType mx_path_probe(const char *path)
Find a mailbox that understands a path.
struct Mailbox * mx_path_resolve(const char *path)
Get a Mailbox for a path.
int mx_path_canon2(struct Mailbox *m, const char *folder)
Canonicalise the path to realpath.
enum MxStatus mx_mbox_check(struct Mailbox *m)
Check for new mail - Wrapper for MxOps::mbox_check()
enum MxStatus mx_mbox_sync(struct Mailbox *m)
Save changes to mailbox.
static bool mx_open_mailbox_append(struct Mailbox *m, OpenMailboxFlags flags)
Open a mailbox for appending.
enum MxStatus mx_mbox_close(struct Mailbox *m)
Save changes and close mailbox.
uint8_t MsgOpenFlags
Flags for mx_msg_open_new(), e.g. MUTT_ADD_FROM.
#define MUTT_ADD_FROM
add a From_ line
#define MUTT_SET_DRAFT
set the message draft flag
#define MUTT_READONLY
Open in read-only mode.
uint8_t OpenMailboxFlags
Flags for mutt_open_mailbox(), e.g. MUTT_NOSORT.
#define MUTT_APPEND
Open mailbox for appending messages.
#define MUTT_QUIET
Do not print any messages.
MxOpenReturns
Return values for mbox_open()
@ MX_OPEN_ABORT
Open was aborted.
@ MX_OPEN_OK
Open succeeded.
#define MUTT_PEEK
Revert atime back after taking a look (if applicable)
#define MUTT_NOSORT
Do not sort the mailbox after opening it.
#define MUTT_APPENDNEW
Set in mx_open_mailbox_append if the mailbox doesn't exist.
MxStatus
Return values from mbox_check(), mbox_check_stats(), mbox_sync(), and mbox_close()
@ MX_STATUS_ERROR
An error occurred.
@ MX_STATUS_OK
No changes.
@ MX_STATUS_REOPENED
Mailbox was reopened.
@ MX_STATUS_NEW_MAIL
New mail received in Mailbox.
bool neomutt_account_add(struct NeoMutt *n, struct Account *a)
Add an Account to the global list.
bool neomutt_account_remove(struct NeoMutt *n, const struct Account *a)
Remove an Account from the global list.
Usenet network mailbox type; talk to an NNTP server.
struct NntpMboxData * mutt_newsgroup_catchup(struct Mailbox *m, struct NntpAccountData *adata, char *group)
Catchup newsgroup.
Nntp-specific Mailbox data.
@ NT_MAILBOX
Mailbox has changed, NotifyMailbox, EventMailbox.
Notmuch virtual mailbox type.
struct Buffer * buf_pool_get(void)
Get a Buffer from the pool.
void buf_pool_release(struct Buffer **ptr)
Return a Buffer to the pool.
Prototypes for many functions.
QuadOption
Possible values for a quad-option.
@ MUTT_ABORT
User aborted the question (with Ctrl-G)
@ MUTT_NO
User answered 'No', or assume 'No'.
@ MUTT_YES
User answered 'Yes', or assume 'Yes'.
enum QuadOption query_quadoption(const char *prompt, struct ConfigSubset *sub, const char *name)
Ask the user a quad-question.
#define TAILQ_FOREACH(var, head, field)
#define STAILQ_FOREACH(var, head, field)
#define TAILQ_FIRST(head)
#define STAILQ_EMPTY(head)
#define TAILQ_EMPTY(head)
A group of associated Mailboxes.
enum MailboxType type
Type of Mailboxes this Account contains.
struct MailboxList mailboxes
List of Mailboxes.
struct Buffer * mailbox
Mailbox and host address.
String manipulation buffer.
char * data
Pointer to data.
The envelope/body of an email.
bool purge
Skip trash folder when deleting.
struct Envelope * env
Envelope information.
bool old
Email is seen, but unread.
bool flagged
Marked important?
bool replied
Email has been replied to.
char * path
Path of Email (for local Mailboxes)
bool deleted
Email is deleted.
bool tagged
Email is tagged.
time_t received
Time when the message was placed in the mailbox.
struct AddressList return_path
Return path for the Email.
struct AddressList to
Email's 'To' list.
struct AddressList sender
Email's sender.
struct AddressList from
Email's 'From' list.
An Event that happened to a Mailbox.
struct Mailbox * mailbox
Mailbox in the list.
int vcount
The number of virtual messages.
bool changed
Mailbox has been modified.
bool has_new
Mailbox has new mail.
char * realpath
Used for duplicate detection, context comparison, and the sidebar.
bool append
Mailbox is opened in append mode.
int * v2r
Mapping from virtual to real msgno.
const struct MxOps * mx_ops
MXAPI callback functions.
int msg_new
Number of new messages.
time_t last_checked
Last time we checked this mailbox for new mail.
int msg_count
Total number of messages.
AclFlags rights
ACL bits, see AclFlags.
int email_max
Size of emails array.
enum MailboxType type
Mailbox type.
void * mdata
Driver specific data.
struct HashTable * subj_hash
Hash Table: "subject" -> Email.
struct Email ** emails
Array of Emails.
char * name
A short name for the Mailbox.
struct Notify * notify
Notifications: NotifyMailbox, EventMailbox.
struct HashTable * id_hash
Hash Table: "message-id" -> Email.
struct Buffer pathbuf
Path of the Mailbox.
bool peekonly
Just taking a glance, revert atime.
int msg_deleted
Number of deleted messages.
struct Account * account
Account that owns this Mailbox.
bool dontwrite
Don't write the mailbox on close.
off_t size
Size of the Mailbox.
struct HashTable * label_hash
Hash Table: "x-labels" -> Email.
bool visible
True if a result of "mailboxes".
int msg_flagged
Number of flagged messages.
int opened
Number of times mailbox is opened.
bool readonly
Don't allow changes to the mailbox.
int msg_tagged
How many messages are tagged?
bool verbose
Display status messages?
int msg_unread
Number of unread messages.
Mapping between user-readable string and a constant.
A local copy of an email.
FILE * fp
pointer to the message data
char * path
path to temp file
struct Message::@264267271004327071125374067057142037276212342100 flags
Flags for the Message.
bool draft
Message has been read.
bool replied
Message has been replied to.
time_t received
Time at which this message was received.
bool write
nonzero if message is open for writing
bool flagged
Message is flagged.
bool read
Message has been read.
int(* path_is_empty)(struct Buffer *path)
bool(* msg_open)(struct Mailbox *m, struct Message *msg, struct Email *e)
int(* tags_commit)(struct Mailbox *m, struct Email *e, const char *buf)
int(* msg_save_hcache)(struct Mailbox *m, struct Email *e)
enum MailboxType type
Mailbox type, e.g. MUTT_IMAP.
int(* msg_padding_size)(struct Mailbox *m)
bool(* ac_owns_path)(struct Account *a, const char *path)
int(* tags_edit)(struct Mailbox *m, const char *tags, struct Buffer *buf)
int(* msg_commit)(struct Mailbox *m, struct Message *msg)
enum MxStatus(* mbox_check_stats)(struct Mailbox *m, CheckStatsFlags flags)
bool(* ac_add)(struct Account *a, struct Mailbox *m)
enum MxOpenReturns(* mbox_open)(struct Mailbox *m)
int(* msg_close)(struct Mailbox *m, struct Message *msg)
bool(* msg_open_new)(struct Mailbox *m, struct Message *msg, const struct Email *e)
int(* path_canon)(struct Buffer *path)
enum MxStatus(* mbox_close)(struct Mailbox *m)
enum MxStatus(* mbox_sync)(struct Mailbox *m)
bool(* mbox_open_append)(struct Mailbox *m, OpenMailboxFlags flags)
enum MxStatus(* mbox_check)(struct Mailbox *m)
Container for Accounts, Notifications.
char * username
User's login name.
struct AccountList accounts
List of all Accounts.
char * home_dir
User's home directory.
struct ConfigSubset * sub
Inherited config items.
locale_t time_c_locale
Current locale but LC_TIME=C.
NNTP-specific Mailbox data -.
A parsed URL proto://user:password@host:port/path?a=1&b=2
enum UrlScheme scheme
Scheme, e.g. U_SMTPS.
int cs_subset_str_native_set(const struct ConfigSubset *sub, const char *name, intptr_t value, struct Buffer *err)
Natively set the value of a string config item.
@ MENU_INDEX
Index panel (list of emails)
struct Url * url_parse(const char *src)
Fill in Url.
void url_free(struct Url **ptr)
Free the contents of a URL.