NeoMutt  2023-05-17-33-gce4425
Teaching an old dog new tricks
DOXYGEN
mdata.c
Go to the documentation of this file.
1
29#include "config.h"
30#include <stddef.h>
31#include "mutt/lib.h"
32#include "config/lib.h"
33#include "email/lib.h"
34#include "core/lib.h"
35#include "mdata.h"
36#include "progress/lib.h"
37#include "query.h"
38
46void nm_mdata_free(void **ptr)
47{
48 if (!ptr || !*ptr)
49 return;
50
51 struct NmMboxData *mdata = *ptr;
52
53 mutt_debug(LL_DEBUG1, "nm: freeing context data %p\n", mdata);
54
55 url_free(&mdata->db_url);
56 FREE(&mdata->db_query);
57 progress_free(&mdata->progress);
58 FREE(ptr);
59}
60
69struct NmMboxData *nm_mdata_new(const char *url)
70{
71 if (!url)
72 return NULL;
73
74 struct NmMboxData *mdata = mutt_mem_calloc(1, sizeof(struct NmMboxData));
75 mutt_debug(LL_DEBUG1, "nm: initialize mailbox mdata %p\n", (void *) mdata);
76
77 const short c_nm_db_limit = cs_subset_number(NeoMutt->sub, "nm_db_limit");
78 const char *const c_nm_query_type = cs_subset_string(NeoMutt->sub, "nm_query_type");
79 mdata->db_limit = c_nm_db_limit;
80 mdata->query_type = nm_string_to_query_type(c_nm_query_type);
81 mdata->db_url = url_parse(url);
82 if (!mdata->db_url)
83 {
84 mutt_error(_("failed to parse notmuch url: %s"), url);
85 FREE(&mdata);
86 return NULL;
87 }
88 return mdata;
89}
90
98{
99 if (!m || (m->type != MUTT_NOTMUCH))
100 return NULL;
101
102 return m->mdata;
103}
const char * cs_subset_string(const struct ConfigSubset *sub, const char *name)
Get a string config item by name.
Definition: helpers.c:317
short cs_subset_number(const struct ConfigSubset *sub, const char *name)
Get a number config item by name.
Definition: helpers.c:169
Convenience wrapper for the config headers.
Convenience wrapper for the core headers.
Structs that make up an email.
#define mutt_error(...)
Definition: logging2.h:87
#define mutt_debug(LEVEL,...)
Definition: logging2.h:84
@ LL_DEBUG1
Log at debug level 1.
Definition: logging2.h:40
@ MUTT_NOTMUCH
'Notmuch' (virtual) Mailbox type
Definition: mailbox.h:51
void * mutt_mem_calloc(size_t nmemb, size_t size)
Allocate zeroed memory on the heap.
Definition: memory.c:50
#define FREE(x)
Definition: memory.h:43
Convenience wrapper for the library headers.
#define _(a)
Definition: message.h:28
struct NmMboxData * nm_mdata_new(const char *url)
Create a new NmMboxData object from a query.
Definition: mdata.c:69
void nm_mdata_free(void **ptr)
Free the private Mailbox data - Implements Mailbox::mdata_free()
Definition: mdata.c:46
struct NmMboxData * nm_mdata_get(struct Mailbox *m)
Get the Notmuch Mailbox data.
Definition: mdata.c:97
Notmuch-specific Mailbox data.
Progress bar.
void progress_free(struct Progress **ptr)
Free a Progress Bar.
Definition: progress.c:89
enum NmQueryType nm_string_to_query_type(const char *str)
Lookup a query type.
Definition: query.c:109
Notmuch query functions.
A mailbox.
Definition: mailbox.h:79
enum MailboxType type
Mailbox type.
Definition: mailbox.h:102
void * mdata
Driver specific data.
Definition: mailbox.h:132
Container for Accounts, Notifications.
Definition: neomutt.h:37
struct ConfigSubset * sub
Inherited config items.
Definition: neomutt.h:39
Notmuch-specific Mailbox data -.
Definition: mdata.h:34
struct Url * url_parse(const char *src)
Fill in Url.
Definition: url.c:238
void url_free(struct Url **ptr)
Free the contents of a URL.
Definition: url.c:123