NeoMutt  2021-10-29-43-g6b8931
Teaching an old dog new tricks
DOXYGEN
mdata.h File Reference

Notmuch-specific Mailbox data. More...

#include "query.h"
+ Include dependency graph for mdata.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  NmMboxData
 Notmuch-specific Mailbox data -. More...
 

Functions

void nm_mdata_free (void **ptr)
 Free the private Mailbox data - Implements Mailbox::mdata_free() More...
 
struct NmMboxDatanm_mdata_get (struct Mailbox *m)
 Get the Notmuch Mailbox data. More...
 
struct NmMboxDatanm_mdata_new (const char *url)
 Create a new NmMboxData object from a query. More...
 

Detailed Description

Notmuch-specific Mailbox data.

Authors
  • Richard Russon

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

Definition in file mdata.h.

Function Documentation

◆ nm_mdata_free()

void nm_mdata_free ( void **  ptr)

Free the private Mailbox data - Implements Mailbox::mdata_free()

The NmMboxData struct stores global Notmuch data, such as the connection to the database. This function will close the database, free the resources and the struct itself.

Definition at line 46 of file mdata.c.

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 }
#define mutt_debug(LEVEL,...)
Definition: logging.h:84
@ LL_DEBUG1
Log at debug level 1.
Definition: logging.h:40
#define FREE(x)
Definition: memory.h:40
void progress_free(struct Progress **ptr)
Free a Progress Bar.
Definition: progress.c:232
void * mdata
Driver specific data.
Definition: mailbox.h:136
Notmuch-specific Mailbox data -.
Definition: mdata.h:34
void url_free(struct Url **ptr)
Free the contents of a URL.
Definition: url.c:123
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ nm_mdata_get()

struct NmMboxData* nm_mdata_get ( struct Mailbox m)

Get the Notmuch Mailbox data.

Parameters
mMailbox
Return values
ptrSuccess
NULLFailure, not a Notmuch mailbox

Definition at line 98 of file mdata.c.

99 {
100  if (!m || (m->type != MUTT_NOTMUCH))
101  return NULL;
102 
103  return m->mdata;
104 }
@ MUTT_NOTMUCH
'Notmuch' (virtual) Mailbox type
Definition: mailbox.h:54
enum MailboxType type
Mailbox type.
Definition: mailbox.h:105
+ Here is the caller graph for this function:

◆ nm_mdata_new()

struct NmMboxData* nm_mdata_new ( const char *  url)

Create a new NmMboxData object from a query.

Parameters
urlNotmuch query string
Return values
ptrNew NmMboxData struct

A new NmMboxData struct is created, then the query is parsed and saved within it. This should be freed using nm_mdata_free().

Definition at line 69 of file mdata.c.

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 =
79  cs_subset_string(NeoMutt->sub, "nm_query_type");
80  mdata->db_limit = c_nm_db_limit;
81  mdata->query_type = nm_string_to_query_type(c_nm_query_type);
82  mdata->db_url = url_parse(url);
83  if (!mdata->db_url)
84  {
85  mutt_error(_("failed to parse notmuch url: %s"), url);
86  FREE(&mdata);
87  return NULL;
88  }
89  return mdata;
90 }
#define mutt_error(...)
Definition: logging.h:87
short cs_subset_number(const struct ConfigSubset *sub, const char *name)
Get a number config item by name.
Definition: helpers.c:169
const char * cs_subset_string(const struct ConfigSubset *sub, const char *name)
Get a string config item by name.
Definition: helpers.c:317
void * mutt_mem_calloc(size_t nmemb, size_t size)
Allocate zeroed memory on the heap.
Definition: memory.c:50
#define _(a)
Definition: message.h:28
enum NmQueryType nm_string_to_query_type(const char *str)
Lookup a query type.
Definition: query.c:109
Container for Accounts, Notifications.
Definition: neomutt.h:37
struct ConfigSubset * sub
Inherited config items.
Definition: neomutt.h:39
struct Url * url_parse(const char *src)
Fill in Url.
Definition: url.c:234
+ Here is the call graph for this function:
+ Here is the caller graph for this function: