X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=notmuch-client.h;h=fa04fa2e48d68761fe6fab97b12856db75fe4529;hp=9c1d383df840117f46e12feb4bce5d76a6ae9129;hb=0e386504345857725893d4da45338f00cc2147fa;hpb=00b5623d1a21d886b564d031e30749e5d02e4ae6 diff --git a/notmuch-client.h b/notmuch-client.h index 9c1d383d..fa04fa2e 100644 --- a/notmuch-client.h +++ b/notmuch-client.h @@ -62,8 +62,14 @@ #define STRINGIFY(s) STRINGIFY_(s) #define STRINGIFY_(s) #s +typedef struct mime_node mime_node_t; +struct notmuch_show_params; + typedef struct notmuch_show_format { const char *message_set_start; + notmuch_status_t (*part) (const void *ctx, + struct mime_node *node, int indent, + const struct notmuch_show_params *params); const char *message_start; void (*message) (const void *ctx, notmuch_message_t *message, @@ -92,15 +98,15 @@ typedef struct notmuch_show_format { } notmuch_show_format_t; typedef struct notmuch_show_params { - int entire_thread; - int raw; + notmuch_bool_t entire_thread; + notmuch_bool_t raw; int part; #ifdef GMIME_ATLEAST_26 GMimeCryptoContext* cryptoctx; #else GMimeCipherContext* cryptoctx; #endif - int decrypt; + notmuch_bool_t decrypt; } notmuch_show_params_t; /* There's no point in continuing when we've detected that we've done @@ -185,6 +191,12 @@ show_message_body (notmuch_message_t *message, notmuch_status_t show_one_part (const char *filename, int part); +void +format_part_json (const void *ctx, mime_node_t *node, notmuch_bool_t first); + +void +format_headers_json (const void *ctx, GMimeMessage *message, notmuch_bool_t reply); + char * json_quote_chararray (const void *ctx, const char *str, const size_t len); @@ -244,6 +256,15 @@ notmuch_config_set_new_tags (notmuch_config_t *config, const char *new_tags[], size_t length); +const char ** +notmuch_config_get_new_ignore (notmuch_config_t *config, + size_t *length); + +void +notmuch_config_set_new_ignore (notmuch_config_t *config, + const char *new_ignore[], + size_t length); + notmuch_bool_t notmuch_config_get_maildir_synchronize_flags (notmuch_config_t *config); @@ -252,10 +273,10 @@ notmuch_config_set_maildir_synchronize_flags (notmuch_config_t *config, notmuch_bool_t synchronize_flags); const char ** -notmuch_config_get_auto_exclude_tags (notmuch_config_t *config, size_t *length); +notmuch_config_get_search_exclude_tags (notmuch_config_t *config, size_t *length); void -notmuch_config_set_auto_exclude_tags (notmuch_config_t *config, +notmuch_config_set_search_exclude_tags (notmuch_config_t *config, const char *list[], size_t length); @@ -273,7 +294,7 @@ debugger_is_active (void); * parts. Message-type parts have one child, multipart-type parts * have multiple children, and leaf parts have zero children. */ -typedef struct mime_node { +struct mime_node { /* The MIME object of this part. This will be a GMimeMessage, * GMimePart, GMimeMultipart, or a subclass of one of these. * @@ -297,6 +318,13 @@ typedef struct mime_node { /* The number of children of this part. */ int nchildren; + /* The parent of this node or NULL if this is the root node. */ + struct mime_node *parent; + + /* The depth-first part number of this child if the MIME tree is + * being traversed in depth-first order, or -1 otherwise. */ + int part_num; + /* True if decryption of this part was attempted. */ notmuch_bool_t decrypt_attempted; /* True if decryption of this part's child succeeded. In this @@ -324,7 +352,12 @@ typedef struct mime_node { /* Internal: For successfully decrypted multipart parts, the * decrypted part to substitute for the second child. */ GMimeObject *decrypted_child; -} mime_node_t; + + /* Internal: The next child for depth-first traversal and the part + * number to assign it (or -1 if unknown). */ + int next_child; + int next_part_num; +}; /* Construct a new MIME node pointing to the root message part of * message. If cryptoctx is non-NULL, it will be used to verify @@ -356,7 +389,7 @@ mime_node_open (const void *ctx, notmuch_message_t *message, * an error message on stderr). */ mime_node_t * -mime_node_child (const mime_node_t *parent, int child); +mime_node_child (mime_node_t *parent, int child); /* Return the nth child of node in a depth-first traversal. If n is * 0, returns node itself. Returns NULL if there is no such part. */