Coverage Report

Created: 2026-07-16 07:09

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/pigeonhole/src/lib-sieve/plugins/mime/ext-mime.c
Line
Count
Source
1
/* Copyright (c) Pigeonhole authors, see top-level COPYING file */
2
3
/* Extension mime
4
 * --------------
5
 *
6
 * Authors: Stephan Bosch
7
 * Specification: RFC 5703, Section 4
8
 * Implementation: full
9
 * Status: experimental
10
 *
11
 */
12
13
#include "sieve-common.h"
14
15
#include "sieve-code.h"
16
#include "sieve-extensions.h"
17
#include "sieve-actions.h"
18
#include "sieve-commands.h"
19
#include "sieve-validator.h"
20
#include "sieve-generator.h"
21
#include "sieve-interpreter.h"
22
#include "sieve-message.h"
23
#include "sieve-result.h"
24
25
#include "ext-mime-common.h"
26
27
/*
28
 * Extension
29
 */
30
31
static bool
32
ext_mime_validator_load(const struct sieve_extension *ext,
33
      struct sieve_validator *valdtr);
34
35
const struct sieve_extension_def mime_extension = {
36
  .name = "mime",
37
  .validator_load = ext_mime_validator_load,
38
  SIEVE_EXT_DEFINE_OPERAND(mime_operand),
39
};
40
41
/*
42
 * Extension validation
43
 */
44
45
static bool
46
ext_mime_validator_load(const struct sieve_extension *ext,
47
      struct sieve_validator *valdtr)
48
0
{
49
  /* Register :mime tag and friends with header, address and exists test
50
     commands and we don't care whether these command are registered or
51
     even whether these will be registered at all. The validator handles
52
     either situation gracefully.
53
   */
54
0
  sieve_validator_register_external_tag(
55
0
    valdtr, "header", ext, &mime_tag, SIEVE_OPT_MESSAGE_OVERRIDE);
56
0
  sieve_validator_register_external_tag(
57
0
    valdtr, "header", ext, &mime_anychild_tag, 0);
58
0
  sieve_validator_register_external_tag(
59
0
    valdtr, "header", ext, &mime_type_tag, 0);
60
0
  sieve_validator_register_external_tag(
61
0
    valdtr, "header", ext, &mime_subtype_tag, 0);
62
0
  sieve_validator_register_external_tag(
63
0
    valdtr, "header", ext, &mime_contenttype_tag, 0);
64
0
  sieve_validator_register_external_tag(
65
0
    valdtr, "header", ext, &mime_param_tag, 0);
66
67
0
  sieve_validator_register_external_tag(
68
0
    valdtr, "address", ext, &mime_tag, SIEVE_OPT_MESSAGE_OVERRIDE);
69
0
  sieve_validator_register_external_tag(
70
0
    valdtr, "address", ext, &mime_anychild_tag, 0);
71
72
0
  sieve_validator_register_external_tag(
73
0
    valdtr, "exists", ext, &mime_tag, SIEVE_OPT_MESSAGE_OVERRIDE);
74
0
  sieve_validator_register_external_tag(
75
0
    valdtr, "exists", ext, &mime_anychild_tag, 0);
76
77
0
  return TRUE;
78
0
}