X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=lib%2Findexopts.c;h=82a0026f0d46b47d46e94407d2271df978bd90db;hp=2f9b841b3c90d210a9e8f35c5da2a26e395dc916;hb=HEAD;hpb=43668950626f347f05aad7d49cd9ea4383030443 diff --git a/lib/indexopts.c b/lib/indexopts.c index 2f9b841b..2ffd1942 100644 --- a/lib/indexopts.c +++ b/lib/indexopts.c @@ -20,10 +20,58 @@ #include "notmuch-private.h" +struct _notmuch_indexopts { + _notmuch_crypto_t crypto; +}; + notmuch_indexopts_t * -notmuch_database_get_default_indexopts (notmuch_database_t unused (*db)) +notmuch_database_get_default_indexopts (notmuch_database_t *db) +{ + notmuch_indexopts_t *ret = talloc_zero (db, notmuch_indexopts_t); + + if (! ret) + return ret; + ret->crypto.decrypt = NOTMUCH_DECRYPT_AUTO; + + char *decrypt_policy; + notmuch_status_t err = notmuch_database_get_config (db, "index.decrypt", &decrypt_policy); + + if (err) + return NULL; + + if (decrypt_policy) { + if ((! (strcasecmp (decrypt_policy, "true"))) || + (! (strcasecmp (decrypt_policy, "yes"))) || + (! (strcasecmp (decrypt_policy, "1")))) + notmuch_indexopts_set_decrypt_policy (ret, NOTMUCH_DECRYPT_TRUE); + else if ((! (strcasecmp (decrypt_policy, "false"))) || + (! (strcasecmp (decrypt_policy, "no"))) || + (! (strcasecmp (decrypt_policy, "0")))) + notmuch_indexopts_set_decrypt_policy (ret, NOTMUCH_DECRYPT_FALSE); + else if (! strcasecmp (decrypt_policy, "nostash")) + notmuch_indexopts_set_decrypt_policy (ret, NOTMUCH_DECRYPT_NOSTASH); + } + + free (decrypt_policy); + return ret; +} + +notmuch_status_t +notmuch_indexopts_set_decrypt_policy (notmuch_indexopts_t *indexopts, + notmuch_decryption_policy_t decrypt_policy) +{ + if (! indexopts) + return NOTMUCH_STATUS_NULL_POINTER; + indexopts->crypto.decrypt = decrypt_policy; + return NOTMUCH_STATUS_SUCCESS; +} + +notmuch_decryption_policy_t +notmuch_indexopts_get_decrypt_policy (const notmuch_indexopts_t *indexopts) { - return NULL; + if (! indexopts) + return false; + return indexopts->crypto.decrypt; } void