]> git.notmuchmail.org Git - notmuch/blobdiff - notmuch-client.h
Merge tag 'debian/0.12-1'
[notmuch] / notmuch-client.h
index f5414f60800e446f7e4b84ca24b7bffd6f4fb66e..fa04fa2e48d68761fe6fab97b12856db75fe4529 100644 (file)
 #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);
 
@@ -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. */