Commit graph

6 commits

Author SHA1 Message Date
David Bremner
e13e259147 tag-util: factor out rules for illegal tags, use in parse_tag_line
This will allow us to be consistent between batch tagging and command
line tagging as far as what is an illegal tag.
2013-01-06 22:57:41 -04:00
Austin Clements
425e2bc812 dump/restore: Use Xapian queries for batch-tag format
This switches the new batch-tag format away from using a home-grown
hex-encoding scheme for message IDs in the dump to simply using Xapian
queries with Xapian quoting syntax.

This has a variety of advantages beyond presenting a cleaner and more
consistent interface.  Foremost is that it will dramatically simplify
the quoting for batch tagging, which shares the same input format.
While the hex-encoding is no better or worse for the simple ID queries
used by dump/restore, it becomes onerous for general-purpose queries
used in batch tagging.  It also better handles strange cases like
"id:foo and bar", since this is no longer syntactically valid.
2013-01-06 22:40:32 -04:00
David Bremner
1325e1afb9 parse_tag_line: use enum for return value.
This is essentially cosmetic, since success=0 is promised by
the comments in tag-utils.h.
2012-12-26 09:44:31 -04:00
David Bremner
ba4e856529 tag-utils: use the tag_opt_list_t as talloc context, if possible.
The memory usage discipline of tag_op_list_t is never to free the
internal array of tag operations before freeing the whole list, so it
makes sense to take advantage of hierarchical de-allocation by talloc.

By not relying on the context passed into tag_parse_line, we can allow
tag_op_list_t structures to live longer than that context.
2012-12-22 23:13:15 -04:00
David Bremner
5c7990f251 tag-util: optimization of tag application
The idea is not to bother with restore operations if they don't change
the set of tags. This is actually a relatively common case.

In order to avoid fancy datastructures, this method is quadratic in
the number of tags; at least on my mail database this doesn't seem to
be a big problem.
2012-12-09 13:33:34 -04:00
David Bremner
fb50cc41fe tag-util.[ch]: New files for common tagging routines
These are meant to be shared between notmuch-tag and notmuch-restore.

The bulk of the routines implement a "tag operation list" abstract
data type act as a structured representation of a set of tag
operations (typically coming from a single tag command or line of
input).
2012-12-09 13:33:34 -04:00