]> git.cworth.org Git - notmuch/commitdiff
Merge branch 'release'
authorDavid Bremner <david@tethera.net>
Sat, 30 Oct 2021 18:01:01 +0000 (15:01 -0300)
committerDavid Bremner <david@tethera.net>
Sat, 30 Oct 2021 18:01:01 +0000 (15:01 -0300)
21 files changed:
doc/man1/notmuch-address.rst
doc/man1/notmuch-config.rst
doc/man1/notmuch-count.rst
doc/man1/notmuch-dump.rst
doc/man1/notmuch-reply.rst
doc/man1/notmuch-restore.rst
doc/man1/notmuch-search.rst
doc/man1/notmuch-show.rst
doc/man5/notmuch-hooks.rst
doc/man7/notmuch-properties.rst
doc/man7/notmuch-sexp-queries.rst
lib/database-private.h
lib/indexopts.c
lib/notmuch-private.h
lib/notmuch.h
notmuch-client.h
notmuch-insert.c
notmuch-new.c
notmuch-reindex.c
notmuch.c
util/hex-escape.h

index 7423b62955087462aeefad99efdfaafe5b5e149c..c70dde35d87f4836f7df889ef99bfd7ba211e02f 100644 (file)
@@ -42,7 +42,7 @@ Supported options for **address** include
    neither ``--output=sender`` nor ``--output=recipients`` is
    given, ``--output=sender`` is implied.
 
-   **sender**
+   sender
      Output all addresses from the *From* header.
 
      Note: Searching for **sender** should be much faster than
@@ -50,17 +50,17 @@ Supported options for **address** include
      cached directly in the database whereas other addresses need
      to be fetched from message files.
 
-   **recipients**
+   recipients
      Output all addresses from the *To*, *Cc* and *Bcc* headers.
 
-   **count**
+   count
      Print the count of how many times was the address encountered
      during search.
 
      Note: With this option, addresses are printed only after the
      whole search is finished. This may take long time.
 
-   **address**
+   address
      Output only the email addresses instead of the full mailboxes
      with names and email addresses. This option has no effect on
      the JSON or S-Expression output formats.
@@ -69,17 +69,17 @@ Supported options for **address** include
 
    Control the deduplication of results.
 
-   **no**
+   no
      Output all occurrences of addresses in the matching
      messages. This is not applicable with ``--output=count``.
 
-   **mailbox**
+   mailbox
      Deduplicate addresses based on the full, case sensitive name
      and email address, or mailbox. This is effectively the same as
      piping the ``--deduplicate=no`` output to **sort | uniq**, except
      for the order of results. This is the default.
 
-   **address**
+   address
      Deduplicate addresses based on the case insensitive address
      part of the mailbox. Of all the variants (with different name
      or case), print the one occurring most frequently among the
index 7d90175801cb014819a1468259424dd804785a6a..6f12c773aa160d6734e30697eb966965a431c40c 100644 (file)
@@ -55,14 +55,14 @@ The available configuration items are described below. Non-absolute
 paths are presumed relative to `$HOME` for items in section
 **database**.
 
-**database.path**
+database.path
     Notmuch will store its database here, (in
     sub-directory named ``.notmuch`` if **database.mail\_root**
     is unset).
 
     Default: see :ref:`database`
 
-**database.mail_root**
+database.mail_root
     The top-level directory where your mail currently exists and to
     where mail will be delivered in the future. Files should be
     individual email messages.
@@ -72,7 +72,7 @@ paths are presumed relative to `$HOME` for items in section
     Default: For compatibility with older configurations, the value of
     database.path is used if **database.mail\_root** is unset.
 
-**database.backup_dir**
+database.backup_dir
     Directory to store tag dumps when upgrading database.
 
     History: this configuration value was introduced in notmuch 0.32.
@@ -80,7 +80,7 @@ paths are presumed relative to `$HOME` for items in section
     Default: A sibling directory of the Xapian database called
     `backups`.
 
-**database.hook_dir**
+database.hook_dir
     Directory containing hooks run by notmuch commands. See
     :any:`notmuch-hooks(5)`.
 
@@ -88,7 +88,7 @@ paths are presumed relative to `$HOME` for items in section
 
     Default: See HOOKS, below.
 
-**database.autocommit**
+database.autocommit
 
     How often to commit transactions to disk. `0` means wait until
     command completes, otherwise an integer `n` specifies to commit to
@@ -96,30 +96,30 @@ paths are presumed relative to `$HOME` for items in section
 
     History: this configuration value was introduced in notmuch 0.33.
 
-**user.name**
+user.name
     Your full name.
 
     Default: ``$NAME`` variable if set, otherwise read from
     ``/etc/passwd``.
 
-**user.primary\_email**
+user.primary\_email
     Your primary email address.
 
     Default: ``$EMAIL`` variable if set, otherwise constructed from
     the username and hostname of the current machine.
 
-**user.other\_email**
+user.other\_email
     A list of other email addresses at which you receive email.
 
     Default: not set.
 
-**new.tags**
+new.tags
     A list of tags that will be added to all messages incorporated by
     **notmuch new**.
 
     Default: ``unread;inbox``.
 
-**new.ignore**
+new.ignore
     A list to specify files and directories that will not be searched
     for messages by :any:`notmuch-new(1)`. Each entry in the list is either:
 
@@ -137,7 +137,7 @@ paths are presumed relative to `$HOME` for items in section
 
     Default: empty list.
 
-**search.exclude\_tags**
+search.exclude\_tags
     A list of tags that will be excluded from search results by
     default. Using an excluded tag in a query will override that
     exclusion.
@@ -145,7 +145,7 @@ paths are presumed relative to `$HOME` for items in section
     Default: empty list. Note that :any:`notmuch-setup(1)` puts
     ``deleted;spam`` here when creating new configuration file.
 
-**maildir.synchronize\_flags**
+maildir.synchronize\_flags
     If true, then the following maildir flags (in message filenames)
     will be synchronized with the corresponding notmuch tags:
 
@@ -178,7 +178,7 @@ paths are presumed relative to `$HOME` for items in section
 
     Default: ``true``.
 
-**index.decrypt**
+index.decrypt
     Policy for decrypting encrypted messages during indexing.  Must be
     one of: ``false``, ``auto``, ``nostash``, or ``true``.
 
@@ -231,7 +231,7 @@ paths are presumed relative to `$HOME` for items in section
 
     Default: ``auto``.
 
-**index.header.<prefix>**
+index.header.<prefix>
     Define the query prefix <prefix>, based on a mail header. For
     example ``index.header.List=List-Id`` will add a probabilistic
     prefix ``List:`` that searches the ``List-Id`` field.  User
@@ -240,18 +240,18 @@ paths are presumed relative to `$HOME` for items in section
     supported. See :any:`notmuch-search-terms(7)` for a list of existing
     prefixes, and an explanation of probabilistic prefixes.
 
-**built_with.<name>**
+built_with.<name>
     Compile time feature <name>. Current possibilities include
     "retry_lock" (configure option, included by default).
     (since notmuch 0.30, "compact" and "field_processor" are
     always included.)
 
-**query.<name>**
+query.<name>
     Expansion for named query called <name>. See
     :any:`notmuch-search-terms(7)` for more information about named
     queries.
 
-**squery.<name>**
+squery.<name>
     Expansion for named query called <name>, using s-expression syntax. See
     :any:`notmuch-sexp-queries(7)` for more information about s-expression
     queries.
index 9a7e4bacf4591fa0b2faf8b6220271c490c1214b..4c9c9a1cb4d78ef47c1c03bff273d46481e8bf45 100644 (file)
@@ -28,13 +28,13 @@ Supported options for **count** include
 
 .. option:: --output=(messages|threads|files)
 
-   **messages**
+   messages
      Output the number of matching messages. This is the default.
 
-   **threads**
+   threads
      Output the number of matching threads.
 
-   **files**
+   files
      Output the number of files associated with matching
      messages. This may be bigger than the number of matching
      messages due to duplicates (i.e. multiple files having the
index 4319c5c312682e767069112b5d007dc0330e1276..a7ca39d008215aff883a1ba6d58ead49646b642f 100644 (file)
@@ -39,7 +39,7 @@ Supported options for **dump** include
    Notmuch restore supports two plain text dump formats, both with
    one message-id per line, followed by a list of tags.
 
-   **batch-tag**
+   batch-tag
      The default **batch-tag** dump format is intended to more
      robust against malformed message-ids and tags containing
      whitespace or non-\ :manpage:`ascii(7)` characters. Each line
@@ -58,7 +58,7 @@ Supported options for **dump** include
      :any:`notmuch-tag(1)`; note that the single message-id query is
      mandatory for :any:`notmuch-restore(1)`.
 
-   **sup**
+   sup
      The **sup** dump file format is specifically chosen to be
      compatible with the format of files produced by
      :manpage:`sup-dump(1)`. So if you've previously been using sup
@@ -77,18 +77,18 @@ Supported options for **dump** include
 
    Control what kind of metadata is included in the output.
 
-   **config**
+   config
      Output configuration data stored in the database. Each line
      starts with "#@ ", followed by a space separated key-value
      pair.  Both key and value are hex encoded if needed.
 
-   **properties**
+   properties
      Output per-message (key,value) metadata.  Each line starts
      with "#= ", followed by a message id, and a space separated
      list of key=value pairs.  Ids, keys and values are hex encoded
      if needed.  See :any:`notmuch-properties(7)` for more details.
 
-   **tags**
+   tags
      Output per-message boolean metadata, namely tags. See *format* above
      for description of the output.
 
index 4a78a90b2251d51d890a44026ee25dbe03babbd7..fa0371f955e81fe49c15fefc5d7ccca5acd43261 100644 (file)
@@ -40,22 +40,22 @@ Supported options for **reply** include
 
 .. option:: --format=(default|json|sexp|headers-only)
 
-   **default**
+   default
      Includes subject and quoted message body as an RFC 2822
      message.
 
-   **json**
+   json
      Produces JSON output containing headers for a reply message
      and the contents of the original message. This output can be
      used by a client to create a reply message intelligently.
 
-   **sexp**
+   sexp
      Produces S-Expression output containing headers for a reply
      message and the contents of the original message. This output
      can be used by a client to create a reply message
      intelligently.
 
-   **headers-only**
+   headers-only
      Only produces In-Reply-To, References, To, Cc, and Bcc
      headers.
 
@@ -67,10 +67,10 @@ Supported options for **reply** include
 
 .. option:: --reply-to=(all|sender)
 
-   **all** (default)
+   all (default)
      Replies to all addresses.
 
-   **sender**
+   sender
      Replies only to the sender. If replying to user's own message
      (Reply-to: or From: header is one of the user's configured
      email addresses), try To:, Cc:, and Bcc: headers in this
index bd452475768d82db28bf13bb9468ddfbe819304a..ac6b4245e94dbfa2afae92f44ef2824b779c24bc 100644 (file)
@@ -32,14 +32,14 @@ Supported options for **restore** include
    line specifying a message-id and a set of tags. For details of the
    actual formats, see :any:`notmuch-dump(1)`.
 
-   **sup**
+   sup
      The **sup** dump file format is specifically chosen to be
      compatible with the format of files produced by sup-dump. So
      if you've previously been using sup for mail, then the
      **notmuch restore** command provides you a way to import all
      of your tags (or labels as sup calls them).
 
-   **batch-tag**
+   batch-tag
      The **batch-tag** dump format is intended to more robust
      against malformed message-ids and tags containing whitespace
      or non-\ **ascii(7)** characters. See :any:`notmuch-dump(1)` for
@@ -49,7 +49,7 @@ Supported options for **restore** include
      changes if the **maildir.synchronize\_flags** configuration
      option is enabled. See :any:`notmuch-config(1)` for details.
 
-   **auto**
+   auto
      This option (the default) tries to guess the format from the
      input. For correctly formed input in either supported format,
      this heuristic, based the fact that batch-tag format contains
@@ -59,18 +59,18 @@ Supported options for **restore** include
 
    Control what kind of metadata is restored.
 
-   **config**
+   config
      Restore configuration data to the database. Each configuration
      line starts with "#@ ", followed by a space separated
      key-value pair.  Both key and value are hex encoded if needed.
 
-   **properties**
+   properties
      Restore per-message (key,value) metadata.  Each line starts
      with "#= ", followed by a message id, and a space separated
      list of key=value pairs.  Ids, keys and values are hex encoded
      if needed.  See :any:`notmuch-properties(7)` for more details.
 
-   **tags**
+   tags
      Restore per-message metadata, namely tags. See *format* above
      for more details.
 
index 2d9ca2d5abec09b22a9e47846a08e55ee2c4fd83..ad305efdb6a07a2ff2635c618da21fcce2c9ad9d 100644 (file)
@@ -43,7 +43,7 @@ Supported options for **search** include
 
 .. option:: --output=(summary|threads|messages|files|tags)
 
-   **summary**
+   summary
      Output a summary of each thread with any message matching the
      search terms. The summary includes the thread ID, date, the
      number of messages in the thread (both the number matched and
@@ -52,19 +52,19 @@ Supported options for **search** include
      for some messages, the total number of files is printed in
      parentheses (see below for an example).
 
-   **threads**
+   threads
      Output the thread IDs of all threads with any message matching
      the search terms, either one per line (``--format=text``),
      separated by null characters (``--format=text0``), as a JSON array
      (``--format=json``), or an S-Expression list (``--format=sexp``).
 
-   **messages**
+   messages
      Output the message IDs of all messages matching the search
      terms, either one per line (``--format=text``), separated by null
      characters (``--format=text0``), as a JSON array (``--format=json``),
      or as an S-Expression list (``--format=sexp``).
 
-   **files**
+   files
      Output the filenames of all messages matching the search
      terms, either one per line (``--format=text``), separated by null
      characters (``--format=text0``), as a JSON array (``--format=json``),
@@ -78,7 +78,7 @@ Supported options for **search** include
      in other directories that are included in the output, although
      these files alone would not match the search.
 
-   **tags**
+   tags
      Output all tags that appear on any message matching the search
      terms, either one per line (``--format=text``), separated by null
      characters (``--format=text0``), as a JSON array (``--format=json``),
@@ -115,20 +115,20 @@ Supported options for **search** include
    terms. This option specifies whether to omit excluded messages in
    the search process.
 
-   **true** (default)
+   true (default)
      Prevent excluded messages from matching the search terms.
 
-   **all**
+   all
      Additionally prevent excluded messages from appearing in
      displayed results, in effect behaving as though the excluded
      messages do not exist.
 
-   **false**
+   false
      Allow excluded messages to match search terms and appear in
      displayed results. Excluded messages are still marked in the
      relevant outputs.
 
-   **flag**
+   flag
      Only has an effect when ``--output=summary``. The output is
      almost identical to **false**, but the "match count" is the
      number of matching non-excluded messages in the thread, rather
index 64639174d6c2763049d2b65d3c7d58c8c1bb00c6..3d2a2c412bdbe6db470070235931cc0a3dc83814 100644 (file)
@@ -36,7 +36,7 @@ Supported options for **show** include
 
 .. option:: --format=(text|json|sexp|mbox|raw)
 
-   **text** (default for messages)
+   text (default for messages)
      The default plain-text format has all text-content MIME parts
      decoded. Various components in the output, (**message**,
      **header**, **body**, **attachment**, and MIME **part**), will
@@ -46,7 +46,7 @@ Supported options for **show** include
      '}'), to either open or close the component. For a multipart
      MIME message, these parts will be nested.
 
-   **json**
+   json
      The output is formatted with Javascript Object Notation
      (JSON). This format is more robust than the text format for
      automated processing. The nested structure of multipart MIME
@@ -58,7 +58,7 @@ Supported options for **show** include
      as UTF-8 and any message content included in the output will
      be charset-converted to UTF-8.
 
-   **sexp**
+   sexp
      The output is formatted as the Lisp s-expression (sexp)
      equivalent of the JSON format above. Objects are formatted as
      property lists whose keys are keywords (symbols preceded by a
@@ -66,7 +66,7 @@ Supported options for **show** include
      formatted as ``nil``. As for JSON, the s-expression output is
      always encoded as UTF-8.
 
-   **mbox**
+   mbox
      All matching messages are output in the traditional, Unix mbox
      format with each message being prefixed by a line beginning
      with "From " and a blank line separating each message. Lines
@@ -77,7 +77,7 @@ Supported options for **show** include
 
        http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/mail-mbox-formats.html
 
-   **raw** (default if ``--part`` is given)
+   raw (default if ``--part`` is given)
      Write the raw bytes of the given MIME part of a message to
      standard out. For this format, it is an error to specify a
      query that matches more than one message.
index 268917cdec981b78c55334a63aaf50f42acdd519..0ab5efbc9c503e64cac3659c7f6f0ccdc0947f4f 100644 (file)
@@ -19,7 +19,7 @@ must have executable permissions.
 
 The currently available hooks are described below.
 
-**pre-new**
+pre-new
     This hook is invoked by the :any:`notmuch-new(1)` command before
     scanning or importing new messages into the database. If this hook
     exits with a non-zero status, notmuch will abort further
@@ -28,7 +28,7 @@ The currently available hooks are described below.
     Typically this hook is used for fetching or delivering new mail to
     be imported into the database.
 
-**post-new**
+post-new
     This hook is invoked by the :any:`notmuch-new(1)` command after
     new messages have been imported into the database and initial tags
     have been applied. The hook will not be run if there have been any
@@ -37,7 +37,7 @@ The currently available hooks are described below.
     Typically this hook is used to perform additional query-based
     tagging on the imported messages.
 
-**post-insert**
+post-insert
     This hook is invoked by the :any:`notmuch-insert(1)` command after
     the message has been delivered, added to the database, and initial
     tags have been applied. The hook will not be run if there have
index 7f128b5c4f0f9c8a57e07b14bebee9f2f4cc261f..ff79f4c2f2c9774b885600d64682267d314ea227 100644 (file)
@@ -55,7 +55,7 @@ MESSAGE PROPERTIES
 The following properties are set by notmuch internally in the course
 of its normal activity.
 
-**index.decryption**
+index.decryption
     If a message contains encrypted content, and notmuch tries to
     decrypt that content during indexing, it will add the property
     ``index.decryption=success`` when the cleartext was successfully
@@ -75,8 +75,7 @@ of its normal activity.
     :any:`notmuch-config(1)`), then this property will not be set on that
     message.
 
-**session-key**
-
+session-key
     When :any:`notmuch-show(1)` or :any:`notmuch-reply(1)` encounters
     a message with an encrypted part, if notmuch finds a
     ``session-key`` property associated with the message, it will try
@@ -111,8 +110,7 @@ of its normal activity.
     example, an AES-128 key might be stashed in a notmuch property as:
     ``session-key=7:14B16AF65536C28AF209828DFE34C9E0``.
 
-**index.repaired**
-
+index.repaired
     Some messages arrive in forms that are confusing to view; they can
     be mangled by mail transport agents, or the sending mail user
     agent may structure them in a way that is confusing.  If notmuch
index 019d15f0b70fcfafc8cdcd2ccc7abec0a81ef7d5..d3b18593e30f31ce4f6492fc3c5a35397605917d 100644 (file)
@@ -31,10 +31,12 @@ An *s-expression* is either an atom, or list of whitespace delimited
 s-expressions inside parentheses. Atoms are either
 
 *basic value*
+
     A basic value is an unquoted string containing no whitespace, double quotes, or
     parentheses.
 
 *quoted string*
+
     Double quotes (") delimit strings possibly containing whitespace
     or parentheses. These can contain double quote characters by
     escaping with backslash. E.g. ``"this is a quote \""``.
@@ -48,9 +50,11 @@ a *field*, *logical operation*, or *modifier*, and 0 or more
 subqueries.
 
 ``*``
+
    "*" matches any non-empty string in the current field.
 
 ``()``
+
     The empty list matches all messages
 
 *term*
@@ -62,19 +66,23 @@ subqueries.
     phrase splitting see :any:`fields`.
 
 ``(`` *field* |q1| |q2| ... |qn| ``)``
+
     Restrict the queries |q1| to |qn| to *field*, and combine with *and*
     (for most fields) or *or*. See :any:`fields` for more information.
 
 ``(`` *operator* |q1| |q2| ... |qn| ``)``
+
     Combine queries |q1| to |qn|. Currently supported operators are
     ``and``, ``or``, and ``not``. ``(not`` |q1| ... |qn| ``)`` is equivalent
     to ``(and (not`` |q1| ``) ... (not`` |qn| ``))``.
 
 ``(`` *modifier* |q1| |q2| ... |qn| ``)``
+
     Combine queries |q1| to |qn|, and reinterpret the result (e.g. as a regular expression).
     See :any:`modifiers` for more information.
 
 ``(macro (`` |p1| ... |pn| ``) body)``
+
     Define saved query with parameter substitution. The syntax is
     recognized only in saved s-expression queries (see ``squery.*`` in
     :any:`notmuch-config(1)`). Parameter names in ``body`` must be
@@ -164,26 +172,31 @@ MODIFIERS
 that are neither operators nor fields.
 
 ``(infix`` *atom* ``)``
+
     Interpret *atom* as an infix notmuch query (see
     :any:`notmuch-search-terms(7)`). Not supported inside fields.
 
 ``(matching`` |q1| |q2| ... |qn| ``)`` ``(of`` |q1| |q2| ... |qn|  ``)``
+
     Match all messages have the same values of the current field as
     those matching all of |q1| ... |qn|. Supported in most term [#not-path]_ or
     phrase fields. Most commonly used in the ``thread`` field.
 
 ``(query`` *atom* ``)``
+
     Expand to the saved query named by *atom*. See
     :any:`notmuch-config(1)` for more. Note that the saved query must
     be in infix syntax (:any:`notmuch-search-terms(7)`). Not supported
     inside fields.
 
 ``(regex`` *atom* ``)`` ``(rx`` *atom* ``)``
+
     Interpret *atom* as a POSIX.2 regular expression (see
     :manpage:`regex(7)`). This applies in term fields and a subset [#not-phrase]_ of
     phrase fields (see :any:`field-table`).
 
 ``(starts-with`` *subword* ``)``
+
     Matches any term starting with *subword*.  This applies in either
     phrase or term :any:`fields <fields>`, or outside of fields [#not-body]_. Note that
     a ``starts-with`` query cannot be part of a phrase. The
@@ -193,63 +206,80 @@ EXAMPLES
 ========
 
 ``Wizard``
+
     Match all messages containing the word "wizard", ignoring case.
 
 ``added``
+
     Match all messages containing "added", but also those containing "add", "additional",
     "Additional", "adds", etc... via stemming.
 
 ``(and Bob Marley)``
+
     Match messages containing words "Bob" and "Marley", or their stems
     The words need not be adjacent.
 
 ``(not Bob Marley)``
+
     Match messages containing neither "Bob" nor "Marley", nor their stems,
 
 ``"quick fox"`` ``quick-fox`` ``quick@fox``
+
     Match the *phrase* "quick" followed by "fox" in phrase fields (or
     outside a field). Match the literal string in a term field.
 
 ``(folder (of (id 1234@invalid)))``
+
     Match any message in the same folder as the one with Message-Id "1234@invalid"
 
 ``(id 1234@invalid blah@test)``
+
     Matches Message-Id "1234@invalid" *or* Message-Id "blah@test"
 
 ``(and (infix "date:2009-11-18..2009-11-18") (tag unread))``
+
     Match messages in the given date range with tag unread.
 
 ``(starts-with prelim)``
+
     Match any words starting with "prelim".
 
 ``(subject quick "brown fox")``
+
     Match messages whose subject contains "quick" (anywhere, stemmed) and
     the phrase "brown fox".
 
 ``(subject (starts-with prelim))``
+
     Matches any word starting with "prelim", inside a message subject.
 
 ``(subject (starts-wih quick) "brown fox")``
+
     Match messages whose subject contains "quick brown fox", but also
     "brown fox quicksand".
 
 ``(thread (of (id 1234@invalid)))``
+
     Match any message in the same thread as the one with Message-Id "1234@invalid"
 
 ``(thread (matching (from bob@example.com) (to bob@example.com)))``
+
     Match any (messages in) a thread containing a message from
     "bob@example.com" and a (possibly distinct) message to "bob at
     example.com")
 
 ``(to (or bob@example.com mallory@example.org))`` ``(or (to bob@example.com) (to mallory@example.org))``
+
     Match in the "To" or "Cc" headers, "bob@example.com",
     "mallory@example.org", and also "bob@example.com.au" since it
     contains the adjacent triple "bob", "example", "com".
 
 ``(not (to *))``
+
     Match messages with an empty or invalid 'To' and 'Cc' field.
 
 ``(List *)``
+
     Match messages with a non-empty List-Id header, assuming
     configuration ``index.header.List=List-Id``
 
index 8b9d67feec7044934c6eff8d3a1b03d1bdb1fbc1..7a0450515f4466cf26d877178412f2628a4c2d14 100644 (file)
@@ -160,7 +160,7 @@ operator&= (_notmuch_features &a, _notmuch_features b)
 
 /*
  * Configuration options for xapian database fields */
-typedef enum notmuch_field_flags {
+typedef enum {
     NOTMUCH_FIELD_NO_FLAGS     = 0,
     NOTMUCH_FIELD_EXTERNAL     = 1 << 0,
     NOTMUCH_FIELD_PROBABILISTIC = 1 << 1,
index 4a8608586a356c083ed8ad35e70fe8882fa21a25..2ffd19424ea9752d2976a2438c6214c63dba5e41 100644 (file)
 
 #include "notmuch-private.h"
 
+struct _notmuch_indexopts {
+    _notmuch_crypto_t crypto;
+};
+
 notmuch_indexopts_t *
 notmuch_database_get_default_indexopts (notmuch_database_t *db)
 {
index 093c29b1bbc5384198b90c351046a6a3b19200e1..3cc79bc4c86148445aaaf7f831421abdbb45801d 100644 (file)
@@ -121,7 +121,7 @@ typedef enum {
  */
 #define NOTMUCH_MESSAGE_ID_MAX (200 - sizeof (NOTMUCH_METADATA_THREAD_ID_PREFIX))
 
-typedef enum _notmuch_private_status {
+typedef enum {
     /* First, copy all the public status values. */
     NOTMUCH_PRIVATE_STATUS_SUCCESS                     = NOTMUCH_STATUS_SUCCESS,
     NOTMUCH_PRIVATE_STATUS_OUT_OF_MEMORY               = NOTMUCH_STATUS_OUT_OF_MEMORY,
@@ -173,7 +173,7 @@ typedef enum _notmuch_private_status {
      (notmuch_status_t) private_status)
 
 /* Flags shared by various lookup functions. */
-typedef enum _notmuch_find_flags {
+typedef enum {
     /* Lookup without creating any documents.  This is the default
      * behavior. */
     NOTMUCH_FIND_LOOKUP = 0,
@@ -711,9 +711,7 @@ _notmuch_thread_create (void *ctx,
 
 /* indexopts.c */
 
-struct _notmuch_indexopts {
-    _notmuch_crypto_t crypto;
-};
+struct _notmuch_indexopts;
 
 #define CONFIG_HEADER_PREFIX "index.header."
 
index 5c5a024e41defb04968357f1a0a999c6ae7faf45..1b2bdf3fa37fda35799cba194e375fd37a44e771 100644 (file)
@@ -112,7 +112,7 @@ typedef int notmuch_bool_t;
  * A zero value (NOTMUCH_STATUS_SUCCESS) indicates that the function
  * completed without error. Any other value indicates an error.
  */
-typedef enum _notmuch_status {
+typedef enum {
     /**
      * No error occurred.
      */
@@ -323,7 +323,7 @@ typedef enum {
  * config_path="" and error_message=NULL
  * @deprecated Deprecated as of libnotmuch 5.4 (notmuch 0.32)
  */
-/* NOTMUCH_DEPRECATED(5, 4) */
+NOTMUCH_DEPRECATED(5, 4)
 notmuch_status_t
 notmuch_database_open (const char *path,
                       notmuch_database_mode_t mode,
@@ -335,7 +335,7 @@ notmuch_database_open (const char *path,
  * @deprecated Deprecated as of libnotmuch 5.4 (notmuch 0.32)
  *
  */
-/* NOTMUCH_DEPRECATED(5, 4) */
+NOTMUCH_DEPRECATED(5, 4)
 notmuch_status_t
 notmuch_database_open_verbose (const char *path,
                               notmuch_database_mode_t mode,
@@ -1686,7 +1686,7 @@ notmuch_message_reindex (notmuch_message_t *message,
 /**
  * Message flags.
  */
-typedef enum _notmuch_message_flag {
+typedef enum {
     NOTMUCH_MESSAGE_FLAG_MATCH,
     NOTMUCH_MESSAGE_FLAG_EXCLUDED,
 
@@ -2532,7 +2532,7 @@ notmuch_config_list_destroy (notmuch_config_list_t *config_list);
 /**
  * Configuration keys known to libnotmuch
  */
-typedef enum _notmuch_config_key {
+typedef enum {
     NOTMUCH_CONFIG_FIRST,
     NOTMUCH_CONFIG_DATABASE_PATH = NOTMUCH_CONFIG_FIRST,
     NOTMUCH_CONFIG_MAIL_ROOT,
index 96d81166d2f52342b721f7be293eb2641ea4e868..de318e1f2e1937abce22bd62a990e1a5523404f3 100644 (file)
@@ -426,13 +426,13 @@ mime_node_seek_dfs (mime_node_t *node, int n);
 const _notmuch_message_crypto_t *
 mime_node_get_message_crypto_status (mime_node_t *node);
 
-typedef enum dump_formats {
+typedef enum {
     DUMP_FORMAT_AUTO,
     DUMP_FORMAT_BATCH_TAG,
     DUMP_FORMAT_SUP
 } dump_format_t;
 
-typedef enum dump_includes {
+typedef enum {
     DUMP_INCLUDE_TAGS          = 1,
     DUMP_INCLUDE_CONFIG                = 2,
     DUMP_INCLUDE_PROPERTIES    = 4
@@ -499,11 +499,10 @@ int notmuch_minimal_options (const char *subcommand_name,
 struct _notmuch_client_indexing_cli_choices {
     int decrypt_policy;
     bool decrypt_policy_set;
-    notmuch_indexopts_t *opts;
 };
 extern struct _notmuch_client_indexing_cli_choices indexing_cli_choices;
 extern const notmuch_opt_desc_t notmuch_shared_indexing_options [];
 notmuch_status_t
-notmuch_process_shared_indexing_options (notmuch_database_t *notmuch);
+notmuch_process_shared_indexing_options (notmuch_indexopts_t *opts);
 
 #endif
index 72e2e35fc4a828d209186b70f5aaf4d51d912f54..214d4d03a0810d6845d845288455eb971441574f 100644 (file)
@@ -461,6 +461,8 @@ notmuch_insert_command (notmuch_database_t *notmuch, int argc, char *argv[])
     char *maildir;
     char *newpath;
     int opt_index;
+    notmuch_indexopts_t *indexopts = notmuch_database_get_default_indexopts (notmuch);
+
     void *local = talloc_new (NULL);
 
     notmuch_opt_desc_t options[] = {
@@ -550,7 +552,7 @@ notmuch_insert_command (notmuch_database_t *notmuch, int argc, char *argv[])
        return EXIT_FAILURE;
     }
 
-    status = notmuch_process_shared_indexing_options (notmuch);
+    status = notmuch_process_shared_indexing_options (indexopts);
     if (status != NOTMUCH_STATUS_SUCCESS) {
        fprintf (stderr, "Error: Failed to process index options. (%s)\n",
                 notmuch_status_to_string (status));
@@ -558,7 +560,7 @@ notmuch_insert_command (notmuch_database_t *notmuch, int argc, char *argv[])
     }
 
     /* Index the message. */
-    status = add_file (notmuch, newpath, tag_ops, synchronize_flags, keep, indexing_cli_choices.opts);
+    status = add_file (notmuch, newpath, tag_ops, synchronize_flags, keep, indexopts);
 
     /* Commit changes. */
     close_status = notmuch_database_close (notmuch);
index b7a5f2eabcfc5cc736ee4601807060c73d3db088..5b8fa340f598e6af5ed19942dd3034fed3f28671 100644 (file)
@@ -45,6 +45,7 @@ typedef struct {
     const char *db_path;
     const char *mail_root;
 
+    notmuch_indexopts_t *indexopts;
     int output_is_a_tty;
     enum verbosity verbosity;
     bool debug;
@@ -376,7 +377,7 @@ add_file (notmuch_database_t *notmuch, const char *filename,
     if (status)
        goto DONE;
 
-    status = notmuch_database_index_file (notmuch, filename, indexing_cli_choices.opts, &message);
+    status = notmuch_database_index_file (notmuch, filename, state->indexopts, &message);
     switch (status) {
     /* Success. */
     case NOTMUCH_STATUS_SUCCESS:
@@ -1150,6 +1151,8 @@ notmuch_new_command (notmuch_database_t *notmuch, int argc, char *argv[])
     else if (verbose)
        add_files_state.verbosity = VERBOSITY_VERBOSE;
 
+    add_files_state.indexopts = notmuch_database_get_default_indexopts (notmuch);
+
     add_files_state.new_tags = notmuch_config_get_values (notmuch, NOTMUCH_CONFIG_NEW_TAGS);
 
     if (print_status_database (
@@ -1217,7 +1220,7 @@ notmuch_new_command (notmuch_database_t *notmuch, int argc, char *argv[])
     if (notmuch == NULL)
        return EXIT_FAILURE;
 
-    status = notmuch_process_shared_indexing_options (notmuch);
+    status = notmuch_process_shared_indexing_options (add_files_state.indexopts);
     if (status != NOTMUCH_STATUS_SUCCESS) {
        fprintf (stderr, "Error: Failed to process index options. (%s)\n",
                 notmuch_status_to_string (status));
index 49eacd47d64196e525d2a7c208c14ee9a6c855de..e9a6545688034993b822c22c27e13f3cb9063515 100644 (file)
@@ -90,6 +90,7 @@ notmuch_reindex_command (notmuch_database_t *notmuch, int argc, char *argv[])
     int opt_index;
     int ret;
     notmuch_status_t status;
+    notmuch_indexopts_t *indexopts = notmuch_database_get_default_indexopts (notmuch);
 
     /* Set up our handler for SIGINT */
     memset (&action, 0, sizeof (struct sigaction));
@@ -110,7 +111,7 @@ notmuch_reindex_command (notmuch_database_t *notmuch, int argc, char *argv[])
 
     notmuch_process_shared_options (notmuch, argv[0]);
 
-    status = notmuch_process_shared_indexing_options (notmuch);
+    status = notmuch_process_shared_indexing_options (indexopts);
     if (status != NOTMUCH_STATUS_SUCCESS) {
        fprintf (stderr, "Error: Failed to process index options. (%s)\n",
                 notmuch_status_to_string (status));
@@ -128,7 +129,7 @@ notmuch_reindex_command (notmuch_database_t *notmuch, int argc, char *argv[])
        return EXIT_FAILURE;
     }
 
-    ret = reindex_query (notmuch, query_string, indexing_cli_choices.opts);
+    ret = reindex_query (notmuch, query_string, indexopts);
 
     notmuch_database_destroy (notmuch);
 
index 3fb58bf2e822f606ca9a38e8cbc6aa22422bfd10..ac25ae189b78d049d65b70afc09e3dee031f4312 100644 (file)
--- a/notmuch.c
+++ b/notmuch.c
@@ -141,21 +141,18 @@ const notmuch_opt_desc_t notmuch_shared_indexing_options [] = {
 
 
 notmuch_status_t
-notmuch_process_shared_indexing_options (notmuch_database_t *notmuch)
+notmuch_process_shared_indexing_options (notmuch_indexopts_t *opts)
 {
-    if (indexing_cli_choices.opts == NULL)
-       indexing_cli_choices.opts = notmuch_database_get_default_indexopts (notmuch);
+    if (opts == NULL)
+       return NOTMUCH_STATUS_NULL_POINTER;
+
     if (indexing_cli_choices.decrypt_policy_set) {
        notmuch_status_t status;
-       if (indexing_cli_choices.opts == NULL)
-           return NOTMUCH_STATUS_OUT_OF_MEMORY;
-       status = notmuch_indexopts_set_decrypt_policy (indexing_cli_choices.opts,
+       status = notmuch_indexopts_set_decrypt_policy (opts,
                                                       indexing_cli_choices.decrypt_policy);
        if (status != NOTMUCH_STATUS_SUCCESS) {
            fprintf (stderr, "Error: Failed to set index decryption policy to %d. (%s)\n",
                     indexing_cli_choices.decrypt_policy, notmuch_status_to_string (status));
-           notmuch_indexopts_destroy (indexing_cli_choices.opts);
-           indexing_cli_choices.opts = NULL;
            return status;
        }
     }
index 8703334cda8d4836660bed1f8cf41c65e2fec023..83a4c6f146fe15387b0ef8c151ae6e5b4dcbc766 100644 (file)
@@ -5,7 +5,7 @@
 extern "C" {
 #endif
 
-typedef enum hex_status {
+typedef enum {
     HEX_SUCCESS = 0,
     HEX_SYNTAX_ERROR,
     HEX_OUT_OF_MEMORY