unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
blob 508806fceb6e03f563ce5cda30b85150d92dee3e 2725 bytes (raw)
name: tag-util.h 	 # note: path name is non-authoritative(*)

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
 
#ifndef _TAG_UTIL_H
#define _TAG_UTIL_H

#include "notmuch-client.h"

typedef struct _tag_operation_t tag_operation_t;
typedef struct _tag_op_list_t tag_op_list_t;

#define TAG_OP_LIST_INITIAL_SIZE 10

/* Use powers of 2 */
typedef enum  { TAG_FLAG_NONE = 0,
		/* Operations are synced to maildir, if possible */

		TAG_FLAG_MAILDIR_SYNC = 1,

		/* Remove all tags from message before applying
		 * list */

		TAG_FLAG_REMOVE_ALL = 2,

		/* Don't try to avoid database operations.  Useful
		 * when we know that message passed needs these
		 *  operations. */

		TAG_FLAG_PRE_OPTIMIZED = 4,

		/* Accept strange tags that might be user error;
		   intended for use by notmuch-restore.
		*/

		TAG_FLAG_BE_GENEROUS = 8} tag_op_flag_t;

/* Parse a string of the following format:
 *
 * +<tag>|-<tag> [...] [--] <search-terms>
 *
 * Each line is interpreted similarly to "notmuch tag" command line
 * arguments. The delimiter is one or more spaces ' '. Any characters
 * in <tag> and <search-terms> MAY be hex encoded with %NN where NN is
 * the hexadecimal value of the character. Any ' ' and '%' characters
 * in <tag> and <search-terms> MUST be hex encoded (using %20 and %25,
 * respectively). Any characters that are not part of <tag> or
 * <search-terms> MUST NOT be hex encoded.
 *
 * Leading and trailing space ' ' is ignored. Empty lines and lines
 * beginning with '#' are ignored.
 *
 * Returns: 0 for OK, 1 for skipped line, -1 for fatal(ish) error.
 *
 * Output Parameters:
 *	ops	contains a list of tag operations
 *	query_str the search terms.
 */
int
parse_tag_line (void *ctx, char *line,
		tag_op_flag_t flags,
		char **query_str, tag_op_list_t *ops);

/*
 * Create an empty list of tag operations
 *
 * ctx is passed to talloc
 */

tag_op_list_t
*tag_op_list_create (void *ctx);

/*
 * Add a tag operation (delete iff remote == TRUE) to a list.
 * The list is expanded as necessary.
 */

int
tag_op_list_append (void *ctx,
		    tag_op_list_t *list,
		    const char *tag,
		    notmuch_bool_t remove);

/*
 * Apply a list of tag operations, in order to a message.
 *
 * Flags can be bitwise ORed; see enum above for possibilies.
 */

notmuch_status_t
tag_op_list_apply (notmuch_message_t *message,
		   tag_op_list_t *tag_ops,
		   tag_op_flag_t flags);

/*
 * Return the number of operations in a list
 */

size_t
tag_op_list_size (const tag_op_list_t *list);

/*
 * Reset a list to contain no operations
 */

void
tag_op_list_reset (tag_op_list_t *list);


 /*
  *   return the i'th tag in the list
  */

const char *
tag_op_list_tag (const tag_op_list_t *list, size_t i);

/*
 *   Is the i'th tag operation a remove?
 */

notmuch_bool_t
tag_op_list_isremove (const tag_op_list_t *list, size_t i);

#endif

debug log:

solving 508806f ...
found 508806f in https://yhetil.org/notmuch/1353792017-31459-10-git-send-email-david@tethera.net/

applying [1/1] https://yhetil.org/notmuch/1353792017-31459-10-git-send-email-david@tethera.net/
diff --git a/tag-util.h b/tag-util.h
new file mode 100644
index 0000000..508806f

Checking patch tag-util.h...
Applied patch tag-util.h cleanly.

index at:
100644 508806fceb6e03f563ce5cda30b85150d92dee3e	tag-util.h

(*) Git path names are given by the tree(s) the blob belongs to.
    Blobs themselves have no identifier aside from the hash of its contents.^

Code repositories for project(s) associated with this public inbox

	https://yhetil.org/notmuch.git/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).